
Hi Simon,
On Fri, Jul 31, 2015 at 11:31 PM, Simon Glass sjg@chromium.org wrote:
From: Ben Stoltz stoltz@google.com
Adjust the toolchain flags to build U-Boot as a relocatable shared library, as required by EFI.
Signed-off-by: Ben Stoltz stoltz@google.com Signed-off-by: Simon Glass sjg@chromium.org
Changes in v2:
- Add a comment as to where LDFLAGS_EFI is used
- Drop duplicate OBJCOPYFLAGS_EFI
- Drop no-red-zone as it is not needed for i386
- Rename CONFIG_ARCH_EFI to CONFIG_EFI_APP
- Use toolchain instead of tool chain
arch/x86/config.mk | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-)
diff --git a/arch/x86/config.mk b/arch/x86/config.mk index 999143e..a1c0eb2 100644 --- a/arch/x86/config.mk +++ b/arch/x86/config.mk @@ -8,19 +8,48 @@ CONFIG_STANDALONE_LOAD_ADDR ?= 0x40000
PLATFORM_CPPFLAGS += -fno-strict-aliasing -PLATFORM_CPPFLAGS += -mregparm=3 PLATFORM_CPPFLAGS += -fomit-frame-pointer PF_CPPFLAGS_X86 := $(call cc-option, -fno-toplevel-reorder, \ $(call cc-option, -fno-unit-at-a-time)) \ $(call cc-option, -mpreferred-stack-boundary=2)
PLATFORM_CPPFLAGS += $(PF_CPPFLAGS_X86) PLATFORM_CPPFLAGS += -fno-dwarf2-cfi-asm PLATFORM_CPPFLAGS += -march=i386 -m32
PLATFORM_RELFLAGS += -ffunction-sections -fvisibility=hidden
-PLATFORM_LDFLAGS += --emit-relocs -Bsymbolic -Bsymbolic-functions -m elf_i386 +PLATFORM_LDFLAGS += -Bsymbolic -Bsymbolic-functions
-LDFLAGS_FINAL += --gc-sections -pie LDFLAGS_FINAL += --wrap=__divdi3 --wrap=__udivdi3 LDFLAGS_FINAL += --wrap=__moddi3 --wrap=__umoddi3
+# This is used in the top-level Makefile which does not include +# PLATFORM_LDFLAGS
I see this is only used by building EFI payload. Can we remove this from this patch and move it into the EFI payload patch? And rename the variable to something like: LDFLAGS_EFIPAYLOAD to reflect this is only used for payload?
+LDFLAGS_EFI := -Bsymbolic -Bsymbolic-functions -shared --no-undefined
+OBJCOPYFLAGS_EFI := -j .text -j .sdata -j .data -j .dynamic -j .dynsym \
-j .rel -j .rela -j .reloc
+CFLAGS_NON_EFI := -mregparm=3 +CFLAGS_EFI := -fpic -fshort-wchar
+EFIARCH=ia32
Nits: please add space around =
+LDSCRIPT_EFI := $(srctree)/$(CPUDIR)/efi/elf_$(EFIARCH)_efi.lds +OBJCOPYFLAGS_EFI += --target=efi-app-$(EFIARCH)
+ifeq ($(CONFIG_EFI_APP),y)
+PLATFORM_CPPFLAGS += $(CFLAGS_EFI) +PLATFORM_LDFLAGS += -m elf_i386
Nits: '-m elf_i386' is always on for both cases, so we can remove '-m elf_i386' here and just leave it in the original place above
+LDFLAGS_FINAL += -znocombreloc -shared +LDSCRIPT := $(LDSCRIPT_EFI)
+else
+PLATFORM_CPPFLAGS += $(CFLAGS_NON_EFI) +PLATFORM_LDFLAGS += --emit-relocs -m elf_i386 +LDFLAGS_FINAL += --gc-sections -pie
+endif
Regards, Bin