projects/guix·blob java-team · refs

87 lines · 2.9 KiB

1Taken from Gentoo and adapted to fix the build using GCC 10. See:
2https://bugs.gentoo.org/705730.
3
4--- a/mk/com32.mk
5+++ b/mk/com32.mk
6@@ -47,6 +47,7 @@ GCCOPT += $(call gcc_ok,-falign-functions=0,-malign-functions=0)
7 GCCOPT += $(call gcc_ok,-falign-jumps=0,-malign-jumps=0)
8 GCCOPT += $(call gcc_ok,-falign-labels=0,-malign-labels=0)
9 GCCOPT += $(call gcc_ok,-falign-loops=0,-malign-loops=0)
10+GCCOPT += $(call gcc_ok,-fcommon)
11
12 ifeq ($(FWCLASS),EFI)
13 GCCOPT += -mno-red-zone
14--- a/mk/elf.mk
15+++ b/mk/elf.mk
16@@ -42,6 +42,7 @@ GCCOPT += $(call gcc_ok,-falign-functions=0,-malign-functions=0)
17 GCCOPT += $(call gcc_ok,-falign-jumps=0,-malign-jumps=0)
18 GCCOPT += $(call gcc_ok,-falign-labels=0,-malign-labels=0)
19 GCCOPT += $(call gcc_ok,-falign-loops=0,-malign-loops=0)
20+GCCOPT += $(call gcc_ok,-fcommon)
21
22 com32 = $(topdir)/com32
23 core = $(topdir)/core
24--- a/mk/embedded.mk
25+++ b/mk/embedded.mk
26@@ -51,6 +51,7 @@ GCCOPT += $(call gcc_ok,-falign-jumps=0,-malign-jumps=0)
27 GCCOPT += $(call gcc_ok,-falign-labels=0,-malign-labels=0)
28 GCCOPT += $(call gcc_ok,-falign-loops=0,-malign-loops=0)
29 GCCOPT += $(call gcc_ok,-fvisibility=hidden)
30+GCCOPT += $(call gcc_ok,-fcommon)
31
32 LIBGCC := $(shell $(CC) $(GCCOPT) --print-libgcc)
33
34--- a/mk/lib.mk
35+++ b/mk/lib.mk
36@@ -28,6 +28,7 @@ GCCOPT += $(call gcc_ok,-falign-functions=0,-malign-functions=0)
37 GCCOPT += $(call gcc_ok,-falign-jumps=0,-malign-jumps=0)
38 GCCOPT += $(call gcc_ok,-falign-labels=0,-malign-labels=0)
39 GCCOPT += $(call gcc_ok,-falign-loops=0,-malign-loops=0)
40+GCCOPT += $(call gcc_ok,-fcommon)
41
42 INCLUDE = -I$(SRC)
43 STRIP = strip --strip-all -R .comment -R .note
44--- a/mk/efi.mk
45+++ b/mk/efi.mk
46@@ -7,7 +7,7 @@ core = $(topdir)/core
47 # Set up architecture specifics; for cross compilation, set ARCH as apt
48 # gnuefi sets up architecture specifics in ia32 or x86_64 sub directories
49 # set up the LIBDIR and EFIINC for building for the appropriate architecture
50-GCCOPT := $(call gcc_ok,-fno-stack-protector,)
51+GCCOPT := $(call gcc_ok,-fno-stack-protector,) $(call gcc_ok,-fcommon)
52 EFIINC = $(objdir)/include/efi
53 LIBDIR = $(objdir)/lib
54
55diff --git a/dos/string.h b/dos/string.h
56index f648de2..a502132 100644
57--- a/dos/string.h
58+++ b/dos/string.h
59@@ -5,12 +5,13 @@
60 #ifndef _STRING_H
61 #define _STRING_H
62
63+#include <stddef.h>
64+
65 /* Standard routines */
66 #define memcpy(a,b,c) __builtin_memcpy(a,b,c)
67 #define memmove(a,b,c) __builtin_memmove(a,b,c)
68 #define memset(a,b,c) __builtin_memset(a,b,c)
69 #define strcpy(a,b) __builtin_strcpy(a,b)
70-#define strlen(a) __builtin_strlen(a)
71
72 /* This only returns true or false */
73 static inline int memcmp(const void *__m1, const void *__m2, unsigned int __n)
74@@ -21,6 +22,13 @@ static inline int memcmp(const void *__m1, const void *__m2, unsigned int __n)
75 return rv;
76 }
77
78+static inline size_t strlen(const char *s)
79+{
80+ size_t len = 0;
81+ while (*s++) len++;
82+ return len;
83+}
84+
85 extern char *strchr(const char *s, int c);
86
87 #endif /* _STRING_H */