x86: efi: Set the correct link flags for the 64-bit EFI app

At present some 32-bit settings are used with the 64-bit app. Fix this by
separating out the two cases.

Be careful not to break the 64-bit payload, which needs to build a 64-bit
EFI stub with a 32-bit U-Boot.

Signed-off-by: Christian Melki <christian.melki@t2data.com>
Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass 2022-01-04 03:51:16 -07:00 committed by Heinrich Schuchardt
parent 59e8f36dd9
commit 081dfcf783

View File

@ -20,6 +20,11 @@ IS_32BIT := y
endif
endif
EFI_IS_32BIT := $(IS_32BIT)
ifdef CONFIG_EFI_STUB_64BIT
EFI_IS_32BIT :=
endif
ifeq ($(IS_32BIT),y)
PLATFORM_CPPFLAGS += -march=i386 -m32
else
@ -44,8 +49,14 @@ CFLAGS_EFI := -fpic -fshort-wchar
# Compiler flags to be removed when building UEFI applications
CFLAGS_NON_EFI := -mregparm=3 -fstack-protector-strong
ifeq ($(CONFIG_EFI_STUB_64BIT),)
ifeq ($(IS_32BIT),y)
EFIPAYLOAD_BFDARCH = i386
else
CFLAGS_EFI += $(call cc-option, -mno-red-zone)
EFIPAYLOAD_BFDARCH = x86_64
endif
ifeq ($(EFI_IS_32BIT),y)
EFIARCH = ia32
EFIPAYLOAD_BFDTARGET = elf32-i386
else
@ -53,8 +64,6 @@ EFIARCH = x86_64
EFIPAYLOAD_BFDTARGET = elf64-x86-64
endif
EFIPAYLOAD_BFDARCH = i386
LDSCRIPT_EFI := $(srctree)/arch/x86/lib/elf_$(EFIARCH)_efi.lds
EFISTUB := crt0_$(EFIARCH)_efi.o reloc_$(EFIARCH)_efi.o
OBJCOPYFLAGS_EFI += --target=efi-app-$(EFIARCH)