mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2025-12-21 21:17:37 -08:00
There is a lot of overlap in building firmware for other platforms from source, so it makes sense to have one source package. Signed-off-by: James Le Cuirot <chewi@gentoo.org>
44 lines
2.5 KiB
Diff
44 lines
2.5 KiB
Diff
https://bugs.gentoo.org/913110
|
|
https://github.com/tianocore/edk2/commit/a257988f590ba90dd8394dd6bc7014ae9d814a08
|
|
|
|
From a257988f590ba90dd8394dd6bc7014ae9d814a08 Mon Sep 17 00:00:00 2001
|
|
From: Ard Biesheuvel <ardb@kernel.org>
|
|
Date: Mon, 3 Apr 2023 22:29:15 +0800
|
|
Subject: [PATCH] BaseTools/tools_def CLANGDWARF: Permit text relocations
|
|
|
|
We rely on PIE executables to get the codegen that is suitable for
|
|
PE/COFF conversion where the resulting executables can be loaded
|
|
anywhere in the address space.
|
|
|
|
However, ELF linkers may default to disallowing text relocations in PIE
|
|
executables, as this would require text segments to be updated at
|
|
runtime, which is bad for security and increases the copy-on-write
|
|
footprint of ELF executables and shared libraries.
|
|
|
|
However, none of those concerns apply to PE/COFF executables in the
|
|
context of EFI, which are copied into memory rather than mmap()'ed, and
|
|
fixed up by the loader before launch.
|
|
|
|
So pass -z notext to the LLD linker to permit runtime relocations in
|
|
read-only sections.
|
|
|
|
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
|
|
Reviewed-by: Rebecca Cran <rebecca@bsdio.com>
|
|
---
|
|
BaseTools/Conf/tools_def.template | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template
|
|
index 39c49b8001f4..9a5c11f6a385 100755
|
|
--- a/BaseTools/Conf/tools_def.template
|
|
+++ b/BaseTools/Conf/tools_def.template
|
|
@@ -2870,7 +2870,7 @@ DEFINE CLANGDWARF_X64_PREFIX = ENV(CLANG_BIN)
|
|
DEFINE CLANGDWARF_IA32_X64_DLINK_COMMON = -nostdlib -Wl,-q,--gc-sections -z max-page-size=0x40
|
|
DEFINE CLANGDWARF_DLINK2_FLAGS_COMMON = -Wl,--script=$(EDK_TOOLS_PATH)/Scripts/ClangBase.lds
|
|
DEFINE CLANGDWARF_IA32_X64_ASLDLINK_FLAGS = DEF(CLANGDWARF_IA32_X64_DLINK_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0 DEF(CLANGDWARF_DLINK2_FLAGS_COMMON) -Wl,--entry,ReferenceAcpiTable -u ReferenceAcpiTable
|
|
-DEFINE CLANGDWARF_IA32_X64_DLINK_FLAGS = DEF(CLANGDWARF_IA32_X64_DLINK_COMMON) -Wl,--entry,$(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Wl,-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map,--whole-archive
|
|
+DEFINE CLANGDWARF_IA32_X64_DLINK_FLAGS = DEF(CLANGDWARF_IA32_X64_DLINK_COMMON) -Wl,--entry,$(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Wl,-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map,--whole-archive -Wl,-z,notext
|
|
DEFINE CLANGDWARF_IA32_DLINK2_FLAGS = -Wl,--defsym=PECOFF_HEADER_SIZE=0x220 DEF(CLANGDWARF_DLINK2_FLAGS_COMMON)
|
|
DEFINE CLANGDWARF_X64_DLINK2_FLAGS = -Wl,--defsym=PECOFF_HEADER_SIZE=0x228 DEF(CLANGDWARF_DLINK2_FLAGS_COMMON)
|
|
|