On Sat, Jan 27, 2018 at 05:50:16PM +1300, Michael Cree wrote: > [snip useful details] > > Four of those bytes difference are due to the field b_ino in the > struct (of type ino_t). And indeed examining the build log [1] > one sees option.c is compiled with -DFILE_OFFSET_BITS=64 but > misc1.c is NOT compiled with that option, hence the difference > in offsets to fields in the buf_T struct.
It looks like you came to the same conclusion as we did in #827319. Vim uses autoconf's AC_SYS_LARGEFILE to determine whether _FILE_OFFSET_BITS needs to be set (and decides it doesn't), however the Perl bindings always force _FILE_OFFSET_BITS=64[0]. This discrepancy seems to be at least part of the problem. > I am not sure why only some modules are compiled with > -DFILE_OFFSET_BITS=64. Whatever the reason, it leads to a broken > vim on Alpha. When Vim gained support to dynamically link against Perl on Linux, it changed the build to only use $(PERL_CFLAGS) for files which use directly use Perl's APIs. Since $(PERL_CFLAGS) is what's exporting _FILE_OFFSET_BITS=64, only those files are compiled with that set. So, we come back to the same question as before, I think. Why doesn't autoconf think _FILE_OFFSET_BITS=64 is needed (presumably this is because it determines the relevant structures are _already_ 64-bit)? Cheers, -- James GPG Key: 4096R/91BF BF4D 6956 BD5D F7B7 2D23 DFE6 91AE 331B A3DB