Index: syslinux-4.04/com32/MCONFIG =================================================================== --- syslinux-4.04.orig/com32/MCONFIG +++ syslinux-4.04/com32/MCONFIG @@ -18,6 +18,7 @@ include $(topdir)/MCONFIG GCCOPT := $(call gcc_ok,-std=gnu99,) +GCCOPT += $(call gcc_ok,-fcommon,) GCCOPT += $(call gcc_ok,-m32,) GCCOPT += $(call gcc_ok,-fno-stack-protector,) GCCOPT += $(call gcc_ok,-fwrapv,) Index: syslinux-4.04/com32/lib/MCONFIG =================================================================== --- syslinux-4.04.orig/com32/lib/MCONFIG +++ syslinux-4.04/com32/lib/MCONFIG @@ -3,6 +3,7 @@ include $(topdir)/MCONFIG GCCOPT := $(call gcc_ok,-std=gnu99,) +GCCOPT += $(call gcc_ok,-fcommon,) GCCOPT += $(call gcc_ok,-m32,) GCCOPT += $(call gcc_ok,-fno-stack-protector,) GCCOPT += $(call gcc_ok,-fwrapv,) Index: syslinux-4.04/dos/errno.h =================================================================== --- syslinux-4.04.orig/dos/errno.h +++ syslinux-4.04/dos/errno.h @@ -36,7 +36,7 @@ #define EDOM 33 /* Math argument out of domain of func */ #define ERANGE 34 /* Math result not representable */ -int errno; +int errno __attribute__ ((common)); void perror(const char *); #endif /* ERRNO_H */ Index: syslinux-4.04/gpxe/src/core/exec.c =================================================================== --- syslinux-4.04.orig/gpxe/src/core/exec.c +++ syslinux-4.04/gpxe/src/core/exec.c @@ -38,8 +38,8 @@ FILE_LICENCE ( GPL2_OR_LATER ); */ /* Avoid dragging in getopt.o unless a command really uses it */ -int optind; -int nextchar; +extern int optind; +extern int nextchar; /** * Execute command Index: syslinux-4.04/gpxe/src/include/compiler.h =================================================================== --- syslinux-4.04.orig/gpxe/src/include/compiler.h +++ syslinux-4.04/gpxe/src/include/compiler.h @@ -64,7 +64,7 @@ .comm _sym, 0 #else /* ASSEMBLY */ #define PROVIDE_SYMBOL( _sym ) \ - char _sym[0] + char _sym[0] __attribute__ ((common)) #endif /* ASSEMBLY */ /** Require a symbol within this object file Index: syslinux-4.04/dos/string.h =================================================================== --- syslinux-4.04.orig/dos/string.h +++ syslinux-4.04/dos/string.h @@ -5,12 +5,13 @@ #ifndef _STRING_H #define _STRING_H +#include + /* Standard routines */ #define memcpy(a,b,c) __builtin_memcpy(a,b,c) #define memmove(a,b,c) __builtin_memmove(a,b,c) #define memset(a,b,c) __builtin_memset(a,b,c) #define strcpy(a,b) __builtin_strcpy(a,b) -#define strlen(a) __builtin_strlen(a) /* This only returns true or false */ static inline int memcmp(const void *__m1, const void *__m2, unsigned int __n) @@ -21,6 +22,15 @@ static inline int memcmp(const void *__m return rv; } +static inline size_t strlen(const char *s) +{ + size_t len = 0; + + while(*s++) len++; + + return len; +} + extern char *strchr(const char *s, int c); #endif /* _STRING_H */