[syslinux] SYSLINUX 3.72 released

Dag Wieers dag at wieers.com
Fri Sep 26 14:45:50 PDT 2008


On Fri, 26 Sep 2008, H. Peter Anvin wrote:

> Dag Wieers wrote:
>> On Thu, 25 Sep 2008, H. Peter Anvin wrote:
>>
>>> Well, it has to happen at some point, so I have officially pushed out
>>> SYSLINUX 3.72.  The big news in this release is of course the ISOLINUX
>>> hybrid mode support (a single image which can be booted either from a
>>> CD-ROM or from a hard disk/USB stick), but there are plenty of more
>>> goodies in here, including the label listing (not technically
>>> completion) on the Tab key.
>>
>> Features look very promising, however when compiling on RHEL4 and older, I
>> get:
>>
>> gcc -Wp,-MT,setjmp.o,-MD,./.setjmp.o.d -Os -march=i386 -falign-functions=0 -falign-jumps=0 -falign-labels=0 -ffast-math -fomit-frame-pointer -std=gnu99 -m32   -g -mregparm=3 -DREGPARM=3 -D__COM32__ -nostdinc -iwithprefix include -I. -I./sys -I../include -W -Wall -Wpointer-arith -Wwrite-strings -Wstrict-prototypes -Winline -DDYNAMIC_CRC_TABLE -DPNG_NO_CONSOLE_IO -DPNG_NO_WRITE_SUPPORTED -DPNG_NO_MNG_FEATURES -DPNG_NO_READ_tIME -DPNG_NO_WRITE_tIME -D__ASSEMBLY__ -c -o setjmp.o setjmp.S
>> setjmp.S:2:3: invalid preprocessing directive #arch
>> setjmp.S:4:3: invalid preprocessing directive #setjmp
>> setjmp.S:8:3: invalid preprocessing directive #The
>> setjmp.S:9:3: invalid preprocessing directive #%
>> setjmp.S:10:3: invalid preprocessing directive #%
>> setjmp.S:11:3: invalid preprocessing directive #%
>> setjmp.S:12:3: invalid preprocessing directive #%
>> setjmp.S:13:3: invalid preprocessing directive #%
>> setjmp.S:14:3: invalid preprocessing directive #<
>> make[2]: *** [setjmp.o] Error 1
>> make[2]: Leaving directory `/dar/build/syslinux-3.72/com32/lib'
>> make[1]: *** [install] Error 2
>> make[1]: Leaving directory `/dar/build/syslinux-3.72/com32'
>> make: *** [install] Error 2
>>
>> Easy to fix ?
>
> Yes, this is apparently due to cpp mistaking the comments at the top of
> the file for preprocessor directives.  Note that this code hasn't
> changed since 2006, so I'm a bit confused why it pops up now; it might
> be the Makefile changes (I have had a hard time to not get the specfile
> to recompile too much.)
>
> The biggest problem is that the code is quite frankly littered with
> these, and changing them all would be a pain.  I'm wondering if it is
> the -std=gnu99 which is causing the trouble; if so there might be a sane
> way to deal with it.

Ok, when removing the --std=gnu99, I get the following problem when 
building:

gcc -Wp,-MT,pci/scan.o,-MD,pci/.scan.o.d -Os -march=i386 -falign-functions=0 -falign-jumps=0 -falign-labels=0 -ffast-math -fomit-frame-pointer  -m32   -g -mregparm=3 -DREGPARM=3 -D__COM32__ -nostdinc -iwithprefix include -I. -I./sys -I../include -W -Wall -Wpointer-arith -Wwrite-strings -Wstrict-prototypes -Winline -DDYNAMIC_CRC_TABLE -DPNG_NO_CONSOLE_IO -DPNG_NO_WRITE_SUPPORTED -DPNG_NO_MNG_FEATURES -DPNG_NO_READ_tIME -DPNG_NO_WRITE_tIME -c -o pci/scan.o pci/scan.c
pci/scan.c: In function `get_module_name_from_pci_ids':
pci/scan.c:90: error: 'for' loop initial declaration used outside C99 mode
pci/scan.c:90: error: 'for' loop initial declaration used outside C99 mode
pci/scan.c:90: error: 'for' loop initial declaration used outside C99 mode
pci/scan.c:139: error: 'for' loop initial declaration used outside C99 mode
pci/scan.c:139: error: 'for' loop initial declaration used outside C99 mode
pci/scan.c:139: error: 'for' loop initial declaration used outside C99 mode
pci/scan.c: In function `get_name_from_pci_ids':
pci/scan.c:169: error: 'for' loop initial declaration used outside C99 mode
pci/scan.c:169: error: 'for' loop initial declaration used outside C99 mode
pci/scan.c:169: error: 'for' loop initial declaration used outside C99 mode
pci/scan.c:215: error: 'for' loop initial declaration used outside C99 mode
pci/scan.c:215: error: 'for' loop initial declaration used outside C99 mode
pci/scan.c:215: error: 'for' loop initial declaration used outside C99 mode
pci/scan.c:235: error: 'for' loop initial declaration used outside C99 mode
pci/scan.c:235: error: 'for' loop initial declaration used outside C99 mode
pci/scan.c:235: error: 'for' loop initial declaration used outside C99 mode
pci/scan.c:258: error: 'for' loop initial declaration used outside C99 mode
pci/scan.c:258: error: 'for' loop initial declaration used outside C99 mode
pci/scan.c:258: error: 'for' loop initial declaration used outside C99 mode
pci/scan.c: In function `find_pci_device':
pci/scan.c:282: error: 'for' loop initial declaration used outside C99 mode
pci/scan.c:282: error: 'for' loop initial declaration used outside C99 mode
pci/scan.c:282: error: 'for' loop initial declaration used outside C99 mode
make[2]: *** [pci/scan.o] Error 1
make[2]: Leaving directory `/dar/build/syslinux-3.72/com32/lib'
make[1]: *** [install] Error 2
make[1]: Leaving directory `/dar/build/syslinux-3.72/com32'
make: *** [install] Error 2

Are we better off now ? :-)

Looking at the code I have no clue how to make the for_each_pci_func() 
block into something acceptable. My C knowledge cannot even parse that 
construct :) I didn't know that C could do something like this.

-- 
--   dag wieers,  dag at wieers.com,  http://dag.wieers.com/   --
[Any errors in spelling, tact or fact are transmission errors]




More information about the Syslinux mailing list