mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
x86/EFI: restrict use of --dynamicbase
At least GNU ld 2.35 takes this option to (also) mean what newer
versions have controllable by --enable-reloc-section. From there being
no relocations in check.efi (as we don't pass the option there) we infer
that we need to involve mkreloc, we'd end up with two sets of
relocations, which clearly isn't going to work. Furthermore the
relocations ld emits in this case also aren't usable: For bsp_idt[] we
end up with PE_BASE_RELOC_LOW ones, which efi_arch_relocate_image()
(deliberately) doesn't know how to deal with. (Related to that is also
why we check the number of relocations produced: The linker simply
didn't get this right there, yet.)
We also can't add the option to what we use when linking check.efi: That
ld version then would produce relocations, but 4 of them (instead of the
expected two). That would make us pass --disable-reloc-section, which
however only ld 2.36 and newer understand.
For such older binutils versions we therefore need to accept the slight
inconsistency in DLL characteristics that the earlier commit meant to
eliminate.
Fixes: f2148773b8 ("x86/EFI: sanitize DLL characteristics in binary")
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
This commit is contained in:
1 parent
86da14178d
commit
6960bf546e
1 file changed
+1
-3
@@ -106,7 +106,7 @@ efi-nr-fixups := $(shell LC_ALL=C $(OBJDUMP) -p $(efi-check).efi | grep '^[[:bla
|
|||||||
|
|
||||||
ifeq ($(efi-nr-fixups),2)
|
ifeq ($(efi-nr-fixups),2)
|
||||||
MKRELOC := :
|
MKRELOC := :
|
||||||
EFI_LDFLAGS += --disable-high-entropy-va
|
EFI_LDFLAGS += --disable-high-entropy-va --dynamicbase
|
||||||
else
|
else
|
||||||
MKRELOC := arch/x86/efi/mkreloc
|
MKRELOC := arch/x86/efi/mkreloc
|
||||||
# If the linker produced fixups but not precisely two of them, we need to
|
# If the linker produced fixups but not precisely two of them, we need to
|
||||||
@@ -117,8 +117,6 @@ EFI_LDFLAGS += --disable-reloc-section
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
EFI_LDFLAGS += --dynamicbase
|
|
||||||
|
|
||||||
endif # $(XEN_BUILD_PE)
|
endif # $(XEN_BUILD_PE)
|
||||||
|
|
||||||
export XEN_BUILD_EFI XEN_BUILD_PE
|
export XEN_BUILD_EFI XEN_BUILD_PE
|
||||||
|
|||||||