From 5603e89ed85314362b667b1a4ba89461dee3455a Mon Sep 17 00:00:00 2001 From: Alexey Gladkov Date: Tue, 15 Dec 2020 20:49:33 +0300 Subject: [PATCH] GCC-10 compatibility Signed-off-by: Alexey Gladkov --- dos/string.h | 11 ++++++++++- mk/efi.mk | 1 + mk/elf.mk | 1 + mk/embedded.mk | 1 + mk/lib.mk | 1 + 5 files changed, 14 insertions(+), 1 deletion(-) diff --git a/dos/string.h b/dos/string.h index f648de2d..b46cc61d 100644 --- a/dos/string.h +++ b/dos/string.h @@ -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) diff --git a/mk/efi.mk b/mk/efi.mk index f097ad22..2dce19a4 100644 --- a/mk/efi.mk +++ b/mk/efi.mk @@ -8,6 +8,7 @@ core = $(topdir)/core # 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 --git a/mk/elf.mk b/mk/elf.mk index b46dbd06..a7951ea1 100644 --- a/mk/elf.mk +++ b/mk/elf.mk @@ -31,6 +31,7 @@ ifeq ($(ARCH),x86_64) endif GCCOPT += -Os -fomit-frame-pointer GCCOPT += $(call gcc_ok,-fno-stack-protector,) +GCCOPT += $(call gcc_ok,-fcommon,) GCCOPT += $(call gcc_ok,-fwrapv,) GCCOPT += $(call gcc_ok,-freg-struct-return,) GCCOPT += $(call gcc_ok,-fno-exceptions,) diff --git a/mk/embedded.mk b/mk/embedded.mk index 488dc0fc..4c18d716 100644 --- a/mk/embedded.mk +++ b/mk/embedded.mk @@ -36,6 +36,7 @@ ifeq ($(ARCH),x86_64) endif GCCOPT += $(call gcc_ok,-ffreestanding,) GCCOPT += $(call gcc_ok,-fno-stack-protector,) +GCCOPT += $(call gcc_ok,-fcommon,) GCCOPT += $(call gcc_ok,-fwrapv,) GCCOPT += $(call gcc_ok,-freg-struct-return,) ifeq ($(FWCLASS),EFI) diff --git a/mk/lib.mk b/mk/lib.mk index f8591e56..5dd2330f 100644 --- a/mk/lib.mk +++ b/mk/lib.mk @@ -16,6 +16,7 @@ ifeq ($(ARCH),x86_64) MARCH = x86-64 endif GCCOPT += $(call gcc_ok,-fno-stack-protector,) +GCCOPT += $(call gcc_ok,-fcommon,) GCCOPT += $(call gcc_ok,-fwrapv,) GCCOPT += $(call gcc_ok,-freg-struct-return,) # Note -fPIE does not work with ld on x86_64, try -fPIC instead -- 2.25.4