From 93249f7fc17c1f3a2aa8bf9ea055aa326e93a4ae Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roger=20Pau=20Monn=C3=A9?= Date: Tue, 31 Jul 2018 10:25:06 +0200 Subject: [PATCH] x86/efi: split compiler vs linker support MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit So that an ELF binary with support for EFI services will be built when the compiler supports the MS ABI, regardless of the linker support for PE. Signed-off-by: Roger Pau Monné Reviewed-by: Jan Beulich Reviewed-by: Daniel Kiper Tested-by: Daniel Kiper --- xen/arch/x86/Makefile | 9 +++++---- xen/arch/x86/efi/Makefile | 6 +++--- xen/arch/x86/xen.lds.S | 2 +- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/xen/arch/x86/Makefile b/xen/arch/x86/Makefile index 172685fb41..17e7d3fa34 100644 --- a/xen/arch/x86/Makefile +++ b/xen/arch/x86/Makefile @@ -163,10 +163,11 @@ EFI_LDFLAGS += --minor-image-version=$(XEN_SUBVERSION) EFI_LDFLAGS += --major-os-version=2 --minor-os-version=0 EFI_LDFLAGS += --major-subsystem-version=2 --minor-subsystem-version=0 -# Check if the build system supports PE. -XEN_BUILD_PE := $(shell $(CC) $(filter-out $(CFLAGS-y) .%.d,$(CFLAGS)) -c efi/check.c -o efi/check.o 2>/dev/null && echo y) -export XEN_BUILD_PE := $(if $(XEN_BUILD_PE),$(shell $(LD) -mi386pep --subsystem=10 -o efi/check.efi efi/check.o 2>/dev/null && echo y)) -CFLAGS-$(XEN_BUILD_PE) += -DXEN_BUILD_PE +# Check if the compiler supports the MS ABI. +export XEN_BUILD_EFI := $(shell $(CC) $(filter-out $(CFLAGS-y) .%.d,$(CFLAGS)) -c efi/check.c -o efi/check.o 2>/dev/null && echo y) +# Check if the linker supports PE. +XEN_BUILD_PE := $(if $(XEN_BUILD_EFI),$(shell $(LD) -mi386pep --subsystem=10 -o efi/check.efi efi/check.o 2>/dev/null && echo y)) +CFLAGS-$(XEN_BUILD_EFI) += -DXEN_BUILD_EFI $(TARGET).efi: VIRT_BASE = 0x$(shell $(NM) efi/relocs-dummy.o | sed -n 's, A VIRT_START$$,,p') $(TARGET).efi: ALT_BASE = 0x$(shell $(NM) efi/relocs-dummy.o | sed -n 's, A ALT_START$$,,p') diff --git a/xen/arch/x86/efi/Makefile b/xen/arch/x86/efi/Makefile index 918383b325..3816de2738 100644 --- a/xen/arch/x86/efi/Makefile +++ b/xen/arch/x86/efi/Makefile @@ -6,6 +6,6 @@ CFLAGS += -fshort-wchar boot.init.o: buildid.o obj-y := stub.o -obj-$(XEN_BUILD_PE) := boot.init.o compat.o relocs-dummy.o runtime.o -extra-$(XEN_BUILD_PE) += buildid.o -nocov-$(XEN_BUILD_PE) += stub.o +obj-$(XEN_BUILD_EFI) := boot.init.o compat.o relocs-dummy.o runtime.o +extra-$(XEN_BUILD_EFI) += buildid.o +nocov-$(XEN_BUILD_EFI) += stub.o diff --git a/xen/arch/x86/xen.lds.S b/xen/arch/x86/xen.lds.S index 4a59467986..6e9bda5109 100644 --- a/xen/arch/x86/xen.lds.S +++ b/xen/arch/x86/xen.lds.S @@ -304,7 +304,7 @@ SECTIONS } :text #endif -#ifndef XEN_BUILD_PE +#ifndef XEN_BUILD_EFI efi = .; #endif -- 2.39.5