Allow building EFI binaries on x86_64
cover Allow building EFI binaries on x86_64
With the patch series EFI binaries needed for the EFI selftests can be built on x86_64.
But we still lack setjmp support so we cannot activate the StartImage selftest.
We should handle this series via Alex's efi-next tree.
Heinrich Schuchardt (2):
efi_selftest: allow building relocation code on x86_64
efi_loader: build CRT0 and RELOC on x86_64
arch/x86/config.mk | 20 ++++++++++++++++---- arch/x86/lib/Makefile | 12 +++++++++++- 2 files changed, 27 insertions(+), 5 deletions(-)
Signature · 1 line
2.17.0
PATCH 1/2 efi_selftest: allow building relocation code on x86_64
Variables EFI_RELOC and EFI_CRT0 have to be defined to build the EFI unit tests. This patch ensures this for the x86 architecure.
If we compile with EFI_STUB, the bitness depends on CONFIG_EFI_STUB_64BIT. Otherwise the bitness depends on CONFIG_X86_64.
--- arch/x86/config.mk | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-)
arch/x86/config.mk +16 -4
@@ -86,9 +86,9 @@ else PLATFORM_CPPFLAGS += -D__I386__ endif -ifneq ($(CONFIG_EFI_STUB)$(CONFIG_CMD_BOOTEFI_HELLO_COMPILE),) +ifdef CONFIG_EFI_STUB -ifneq ($(CONFIG_EFI_STUB_64BIT),) +ifdef CONFIG_EFI_STUB_64BIT EFI_LDS := elf_x86_64_efi.lds EFI_CRT0 := crt0_x86_64_efi.o EFI_RELOC := reloc_x86_64_efi.o
@@ -98,10 +98,22 @@ EFI_CRT0 := crt0_ia32_efi.o EFI_RELOC := reloc_ia32_efi.o endif +else + ifdef CONFIG_X86_64 -EFI_TARGET := --target=efi-app-x86_64 +EFI_LDS := elf_x86_64_efi.lds +EFI_CRT0 := crt0_x86_64_efi.o +EFI_RELOC := reloc_x86_64_efi.o else -EFI_TARGET := --target=efi-app-ia32 +EFI_LDS := elf_ia32_efi.lds +EFI_CRT0 := crt0_ia32_efi.o +EFI_RELOC := reloc_ia32_efi.o +endif + endif +ifdef CONFIG_X86_64 +EFI_TARGET := --target=efi-app-x86_64 +else +EFI_TARGET := --target=efi-app-ia32 endif
Signature · 1 line
2.17.0
PATCH 1/2 efi_selftest: allow building relocation code on x86_64
Quoted 10 lines · Heinrich Schuchardt
Variables
EFI_RELOCandEFI_CRT0have to be defined to build the EFI unit tests. This patch ensures this for the x86 architecure.If we compile with
EFI_STUB, the bitness depends onCONFIG_EFI_STUB_64BIT. Otherwise the bitness depends onCONFIG_X86_64.Signed-off-by Heinrich Schuchardt <[email protected]>--- arch/x86/config.mk | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-)
PATCH 2/2 efi_loader: build CRT0 and RELOC on x86_64
In reply to Heinrich SchuchardtThe efi selftest and the hello application require CRT0 and RELOC to be built.
--- arch/x86/lib/Makefile | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-)
arch/x86/lib/Makefile +11 -1
@@ -68,8 +68,18 @@ extra-$(CONFIG_EFI_STUB_64BIT) += crt0_x86_64_efi.o reloc_x86_64_efi.o endif -ifneq ($(CONFIG_EFI_STUB)$(CONFIG_CMD_BOOTEFI_HELLO_COMPILE),) +ifdef CONFIG_EFI_STUB + ifeq ($(CONFIG_$(SPL_)X86_64),) extra-y += $(EFI_CRT0) $(EFI_RELOC) endif + +else + +ifndef CONFIG_SPL_BUILD +ifneq ($(CONFIG_CMD_BOOTEFI_SELFTEST)$(CONFIG_CMD_BOOTEFI_HELLO_COMPILE),) +extra-y += $(EFI_CRT0) $(EFI_RELOC) +endif +endif + endif
Signature · 1 line
2.17.0
PATCH 2/2 efi_loader: build CRT0 and RELOC on x86_64
Quoted 8 lines · Heinrich Schuchardt
The efi selftest and the hello application require CRT0 and RELOC to be built.
Signed-off-by Heinrich Schuchardt <[email protected]>--- arch/x86/lib/Makefile | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-)
PATCH 2/2 efi_loader: build CRT0 and RELOC on x86_64
In reply to Heinrich SchuchardtHi,
Quoted 5 lines · On Fri, 18 May 2018 19:12:20 +0200 Heinrich Schuchardt <[email protected]>…
The efi selftest and the hello application require CRT0 and RELOC to be built.
Signed-off-by Heinrich Schuchardt <[email protected]>---
While we're on the topic of EFI_CRT0 and EFI_RELOC, does anybody happen to have an idea on how to fix parallel build failures due to helloworld.efi getting built before EFI_{CRT0,RELOC}? I've reported it previously at:
https://lists.denx.de/pipermail/u-boot/2018-March/323624.html
Pretty please? :)
Thanks,
Tuomas