[U-Boot] [PATCH 0/2] 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(-)

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.
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de --- arch/x86/config.mk | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-)
diff --git a/arch/x86/config.mk b/arch/x86/config.mk index 97db03deeed..5f77f98e60a 100644 --- a/arch/x86/config.mk +++ b/arch/x86/config.mk @@ -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

On 18 May 2018 at 11:12, Heinrich Schuchardt xypron.glpk@gmx.de wrote:
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.
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de
arch/x86/config.mk | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-)
Reviewed-by: Simon Glass sjg@chromium.org

The efi selftest and the hello application require CRT0 and RELOC to be built.
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de --- arch/x86/lib/Makefile | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/arch/x86/lib/Makefile b/arch/x86/lib/Makefile index 51d451f9522..5a64f6eddc7 100644 --- a/arch/x86/lib/Makefile +++ b/arch/x86/lib/Makefile @@ -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

On 18 May 2018 at 11:12, Heinrich Schuchardt xypron.glpk@gmx.de wrote:
The efi selftest and the hello application require CRT0 and RELOC to be built.
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de
arch/x86/lib/Makefile | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-)
Reviewed-by: Simon Glass sjg@chromium.org

Hi,
On Fri, 18 May 2018 19:12:20 +0200 Heinrich Schuchardt xypron.glpk@gmx.de wrote:
The efi selftest and the hello application require CRT0 and RELOC to be built.
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de
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
participants (3)
-
Heinrich Schuchardt
-
Simon Glass
-
Tuomas Tynkkynen