From 4ebde139333659b6de4516830a2785b8a89c08a4 Mon Sep 17 00:00:00 2001 From: Nicholas Piggin Date: Thu, 5 Jan 2017 19:35:47 +1000 Subject: Initial support for the ELFv2 ABI Provide an experimental option to compile using ELFv2 ABI even on big endian builds. ELFv2 + BE is not officially supported by the toolchain, but it works quite well. It may be useful as a small step toward a little-endian build. This saves about 200kB of text/data. Signed-off-by: Nicholas Piggin Signed-off-by: Stewart Smith --- Makefile.main | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'Makefile.main') diff --git a/Makefile.main b/Makefile.main index d71635b..5656cb7 100644 --- a/Makefile.main +++ b/Makefile.main @@ -71,8 +71,12 @@ endif CFLAGS := -fno-strict-aliasing -pie -mbig-endian -m64 CFLAGS += -Wl,--oformat,elf64-powerpc CFLAGS += -ffixed-r13 -CFLAGS += $(call try-cflag,$(CC),-mabi=elfv1) CFLAGS += $(call try-cflag,$(CC),-std=gnu11) +ifeq ($(ELF_ABI_v2),1) +CFLAGS += $(call try-cflag,$(CC),-mabi=elfv2) +else +CFLAGS += $(call try-cflag,$(CC),-mabi=elfv1) +endif ifeq ($(SKIBOOT_GCOV),1) CFLAGS += -fprofile-arcs -ftest-coverage -DSKIBOOT_GCOV=1 @@ -109,6 +113,11 @@ LDRFLAGS=-melf64ppc #LDFLAGS += -Wl,-v -Wl,-Map,foomap AFLAGS := -D__ASSEMBLY__ -mbig-endian -m64 +ifeq ($(ELF_ABI_v2),1) +AFLAGS += $(call try-cflag,$(CC),-mabi=elfv2) +else +AFLAGS += $(call try-cflag,$(CC),-mabi=elfv1) +endif # Special tool flags: # Do not use the floating point unit -- cgit v1.1