Hi!

James McCoy wrote:
> That pattern continued and Vim patch 7.4.1065[0] appears to be what
> broke Vim for kFreeBSD.

Thanks for narrowing it down to that patch.  Most of it only relates
to --enable-perlinterp=dynamic and not to --enable-perlinterp[=yes] so
the changes are mostly no-ops...

What actually seems to make a difference is:

src/Makefile:
-       $(CCC) -o $@ option.c
+       $(CCC) $(LUA_CFLAGS) $(PERL_CFLAGS) $(PYTHON_CFLAGS) $(PYTHON3_CFLAGS) 
$(RUBY_CFLAGS) -o $@ option.c

where

S["PERL_CFLAGS"]=" -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv 
-I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 
-I/usr/lib/i386-kfreebsd-gnu/perl/5.24/CORE "

and -fwrapv significantly changes the code generated in
objects/option.o.  If I override that flag with -fno-wrapv:

+       $(CCC) $(LUA_CFLAGS) $(PERL_CFLAGS) -fno-wrapv $(PYTHON_CFLAGS) 
$(PYTHON3_CFLAGS) $(RUBY_CFLAGS) $(TCL_CFLAGS) -o $@ option.c

then it no longer segfaults, and all vim-gtk tests pass :)

So maybe there is a signed integer overflow in option.c (not
necessarily in code related to Perl at all).

But the linux-i386 build compiles option.c with -fwrapv, and yet it does
not segfault;  I'm not sure why.

Regards,
-- 
Steven Chamberlain
ste...@pyro.eu.org

Attachment: signature.asc
Description: Digital signature

Reply via email to