Package: syslinux Version: 2.11-0.1 Severity: important Tags: patch Please fix 'syslinux' to support the amd64 architecture.
When trying to build 'syslinux' on amd64, I get the following error: gcc -m32 -W -Wall -march=i386 -Os -fomit-frame-pointer -I../com32/include -c -o chain.o chain.c chain.c:45: warning: conflicting types for built-in function 'isspace' ld -m elf_i386 -Ttext 0x101000 -e _start -o chain.elf c32entry.o chain.o libcom32.a chain.o(.text+0x471): In function `__start': : undefined reference to `memcpy' make[2]: *** [chain.elf] Error 1 make[2]: Leaving directory `/syslinux-2.11/sample' With the attached patch 'syslinux' can be compiled on amd64. The patch also includes a fix for the following error, which occurs when compiling syslinux with gcc-4.0: gcc -m32 -I../com32/include -g -W -Wall -Os -fomit-frame-pointer -march=i386 -falign-functions=0 -falign-jumps=0 -falign-loops=0 -DVERSION='"2.11"' -DDATE='"(Debian, 2005-04-24)"' -S -o unzip.s unzip.c In file included from unzip.c:103: inflate.c: In function 'huft_build': inflate.c:392: warning: signed and unsigned type in conditional expression inflate.c: At top level: inflate.c:1001: error: static declaration of 'crc_32_tab' follows non-static declaration unzip.c:73: error: previous declaration of 'crc_32_tab' was here Regards Andreas Jochens diff -urN ../tmp-orig/syslinux-2.11/debian/control ./debian/control --- ../tmp-orig/syslinux-2.11/debian/control 2005-04-24 11:57:20.436176886 +0000 +++ ./debian/control 2005-04-24 11:57:00.794967785 +0000 @@ -6,7 +6,7 @@ Build-Depends: nasm (>= 0.98.32), mtools, netpbm, docbook-to-man, mingw32 Package: syslinux -Architecture: i386 +Architecture: amd64 i386 Depends: ${shlibs:Depends} Recommends: mtools Description: Bootloader for Linux/i386 using MS-DOS floppies diff -urN ../tmp-orig/syslinux-2.11/memdisk/Makefile ./memdisk/Makefile --- ../tmp-orig/syslinux-2.11/memdisk/Makefile 2004-01-24 21:37:22.000000000 +0000 +++ ./memdisk/Makefile 2005-04-24 11:55:47.371139174 +0000 @@ -39,7 +39,7 @@ SSRC = init.S16 NASMSRC = memdisk.asm init32.asm -all: memdisk e820test +all: memdisk # tidy, clean removes everything except the final binary tidy: diff -urN ../tmp-orig/syslinux-2.11/memdisk/setup.c ./memdisk/setup.c --- ../tmp-orig/syslinux-2.11/memdisk/setup.c 2004-04-27 06:48:59.000000000 +0000 +++ ./memdisk/setup.c 2005-04-24 11:56:30.851747059 +0000 @@ -400,7 +400,8 @@ /* Do we have a DOSEMU header? */ memcpy(&dosemu, (char *)where+hd_geometry.offset, sizeof dosemu); - if ( !__builtin_memcmp("DOSEMU", dosemu.magic, 7) ) { + const char *d = dosemu.magic; + if ( *d++=='D' && *d++=='O' && *d++=='S' && *d++=='E' && *d++=='M' && *d++=='U' && !*d ) { /* Always a hard disk unless overruled by command-line options */ hd_geometry.driveno = 0x80; hd_geometry.type = 0; diff -urN ../tmp-orig/syslinux-2.11/sample/chain.c ./sample/chain.c --- ../tmp-orig/syslinux-2.11/sample/chain.c 2004-05-29 22:14:17.000000000 +0000 +++ ./sample/chain.c 2005-04-24 11:56:30.851747059 +0000 @@ -347,7 +347,8 @@ /* 0x7BE is the canonical place for the first partition entry. */ inreg.esi.w[0] = 0x7be; - memcpy((char *)0x7be, partinfo, sizeof(*partinfo)); + char *d = (char*)0x7be, *s = (char*)partinfo; + int n = sizeof(*partinfo); for (; n; n--) *d++ = *s++; } inreg.eax.w[0] = 0x000d; /* Clean up and chain boot */ inreg.edx.w[0] = 0; /* Should be 3 for "keeppxe" */ diff -urN ../tmp-orig/syslinux-2.11/memdisk/inflate.c ./memdisk/inflate.c --- ../tmp-orig/syslinux-2.11/memdisk/inflate.c 2004-04-27 06:48:59.000000000 +0000 +++ ./memdisk/inflate.c 2005-04-24 11:56:30.850747252 +0000 @@ -998,7 +998,7 @@ * **********************************************************************/ -static ulg crc_32_tab[256]; +ulg crc_32_tab[256]; static ulg crc; /* initialized in makecrc() so it'll reside in bss */ #define CRC_VALUE (crc ^ 0xffffffffL) -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]