summaryrefslogtreecommitdiff
blob: 2fb4b87f6b2c1453f10293e9c1bf1ddc8d2e771a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
This patch fixes multiple definitions of 'extern inline' functions.

c99 and gnu90 have slightly different semantics
WRT symbol definition: http://www.greenend.org.uk/rjk/tech/inline.html

gcc-4 defaults to gnu90 and works, gcc-6 defaults to gnu-99
and fails to link aboot as:
  alpha-unknown-linux-gnu-ld: Disabling relaxation: it will not work with multiple definitions
  lib/libaboot.a(isolib.o): In function `prefetchw':
  (.text+0x60): multiple definition of `prefetchw'
  fs/ext2.o:(.text+0xe68): first defined here

The change is to force gnu90 explicitly.
diff --git a/Makefile b/Makefile
index b4245af..634ac87 100644
--- a/Makefile
+++ b/Makefile
@@ -40,6 +40,6 @@ ifeq ($(TESTING),)
 CPPFLAGS       = $(CFGDEFS) -I$(TOP)/include -I$(KSRC)/include
-CFLAGS         = $(CPPFLAGS) -D__KERNEL__ -Os -Wall -fno-builtin -mno-fp-regs
+CFLAGS         = $(CPPFLAGS) -std=gnu90 -D__KERNEL__ -Os -Wall -fno-builtin -mno-fp-regs
 else
 CPPFLAGS       = -DTESTING $(CFGDEFS) -I$(TOP)/include -I$(KSRC)/include
-CFLAGS		= $(CPPFLAGS) -O -g3 -Wall -D__KERNEL__ -ffixed-8
+CFLAGS		= $(CPPFLAGS) -std=gnu90 -O -g3 -Wall -D__KERNEL__ -ffixed-8
 endif