Mailing List Archive

Re: [syslinux] SYSLINUX 3.61 released
Dag Wieers wrote:
> On Sun, 3 Feb 2008, H. Peter Anvin wrote:
>> Changes in 3.61:
>> * EXTLINUX: fix crash when accessing an empty file.
>> * elf.c32: If a PHDR segment is present, load it.
>> * Fix SHA-1 and MD5 passwords.
>> * ISOLINUX: fix booting when mastered without
>> mkisofs -boot-info-table (broken since 3.50, sigh...)
>> * Handle BIOSes which emit multiple contiguous valid
>> memory regions in the e820 map.
> Since this release, I am unable to build extlinux on RHEL3 and RH9 because
> of the following compile error:
> gcc -Wp,-MT,extlinux.o,-MMD,.extlinux.o.d -W -Wall -Wno-sign-compare -D_FILE_OFFSET_BITS=64 -g -Os -I. -I.. -I../libinstaller -c -o extlinux.o extlinux.c
> In file included from /usr/include/linux/vfs.h:4,
> from /usr/include/linux/fs.h:14,
> from extlinux.c:43:
> /usr/include/asm/statfs.h:12: redefinition of `struct statfs'
> make[1]: *** [extlinux.o] Error 1
> make[1]: Leaving directory `/dar/build/syslinux-3.61/extlinux'
> make: *** [installer] Error 2
> The following patch seems to fix the problem:
> --- extlinux/extlinux.c.orig 2008-02-04 05:58:50.000000000 +0100
> +++ extlinux/extlinux.c 2008-01-11 07:42:10.000000000 +0100
> @@ -36,7 +36,6 @@
> #include <sys/stat.h>
> #include <sys/types.h>
> #include <sys/mount.h>
> -#include <sys/vfs.h>
> #include <linux/fd.h> /* Floppy geometry */
> #include <linux/hdreg.h> /* Hard disk geometry */

That would be a bug in those distros... <sys/vfs.h> *is* the correct
header for statfs().

I don't have any system that old readily on hand to I can figure out a
workaround that doesn't bugger up other systems, I'm afraid.

However, the workaround you have used should work on those distros at least.


SYSLINUX-announce mailing list
Re: [syslinux] SYSLINUX 3.61 released [ In reply to ]
Jeffrey Hutzelman wrote:
>> That would be a bug in those distros... <sys/vfs.h> *is* the correct
>> header for statfs().
> I don't think it's fair to call it a bug in the distro. The problem is
> that in 2.4, <linux/fs.h> pulls in quite a large number of other headers,
> including ultimately <asm/statfs.h> where the kernel's struct statfs is
> defined. I can't see a clean way to fix this, though perhaps it would work
> to redefine 'statfs' to something else just long enough to pull in
> <linux/fs.h>, and then put it back. Something like...

Well, it is, because in 2.4 you were not supposed to have Linux kernel
headers under /usr/include/linux and /usr/include/asm. This of course
was an unrealistic policy, but it was.

> +#define statfs stupid_kernel_statfs
> #include <linux/fs.h>
> +#undef statfs

This probably is a better workaround. I'm not sure I want to put it in
the mainstream sources, but for wrapping up ancient-distro packages,
it's a good patch.


SYSLINUX-announce mailing list