diff -Naur syslinux/mk/efi.mk syslinux.new/mk/efi.mk --- syslinux/mk/efi.mk 2022-02-08 08:32:30.683508231 +0100 +++ syslinux.new/mk/efi.mk 2022-02-08 08:35:06.695618667 +0100 @@ -8,6 +8,7 @@ # gnuefi sets up architecture specifics in ia32 or x86_64 sub directories # set up the LIBDIR and EFIINC for building for the appropriate architecture GCCOPT := $(call gcc_ok,-fno-stack-protector,) +GCCOPT += $(call gcc_ok,-fcommon) EFIINC = $(objdir)/include/efi LIBDIR = $(objdir)/lib diff -Naur syslinux/mk/elf.mk syslinux.new/mk/elf.mk --- syslinux/mk/elf.mk 2022-02-08 08:32:30.683508231 +0100 +++ syslinux.new/mk/elf.mk 2022-02-08 08:35:23.571738788 +0100 @@ -42,6 +42,7 @@ GCCOPT += $(call gcc_ok,-falign-jumps=0,-malign-jumps=0) GCCOPT += $(call gcc_ok,-falign-labels=0,-malign-labels=0) GCCOPT += $(call gcc_ok,-falign-loops=0,-malign-loops=0) +GCCOPT += $(call gcc_ok,-fcommon) com32 = $(topdir)/com32 core = $(topdir)/core diff -Naur syslinux/mk/embedded.mk syslinux.new/mk/embedded.mk --- syslinux/mk/embedded.mk 2022-02-08 08:32:30.683508231 +0100 +++ syslinux.new/mk/embedded.mk 2022-02-08 08:36:10.282071294 +0100 @@ -51,6 +51,7 @@ GCCOPT += $(call gcc_ok,-falign-labels=0,-malign-labels=0) GCCOPT += $(call gcc_ok,-falign-loops=0,-malign-loops=0) GCCOPT += $(call gcc_ok,-fvisibility=hidden) +GCCOPT += $(call gcc_ok,-fcommon) LIBGCC := $(shell $(CC) $(GCCOPT) --print-libgcc) diff -Naur syslinux/mk/lib.mk syslinux.new/mk/lib.mk --- syslinux/mk/lib.mk 2022-02-08 08:32:30.683508231 +0100 +++ syslinux.new/mk/lib.mk 2022-02-08 08:36:21.394150396 +0100 @@ -28,6 +28,7 @@ GCCOPT += $(call gcc_ok,-falign-jumps=0,-malign-jumps=0) GCCOPT += $(call gcc_ok,-falign-labels=0,-malign-labels=0) GCCOPT += $(call gcc_ok,-falign-loops=0,-malign-loops=0) +GCCOPT += $(call gcc_ok,-fcommon) INCLUDE = -I$(SRC) STRIP = strip --strip-all -R .comment -R .note --- syslinux/dos/string.h 2022-02-08 14:42:52.654027015 +0100 +++ syslinux.new/dos/string.h 2022-02-08 14:44:36.932776621 +0100 @@ -5,12 +5,21 @@ #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) + +static inline size_t strlen(const char *s) +{ + const char *ss = s; + while (*ss) + ss++; + return ss - s; +} /* This only returns true or false */ static inline int memcmp(const void *__m1, const void *__m2, unsigned int __n)