On 23 November 2017 at 10:16, Gao, Liming <liming....@intel.com> wrote: > Ard: > Have you own GCC linker script? Is it not in BaseTools? >
No it is just GccBase.lds like we use for PE/COFF binaries, but this patch uses it for .aslc files as well. >>-----Original Message----- >>From: Ard Biesheuvel [mailto:ard.biesheu...@linaro.org] >>Sent: Wednesday, November 22, 2017 12:11 AM >>To: edk2-devel@lists.01.org; leif.lindh...@linaro.org >>Cc: m...@semihalf.com; Zhu, Yonghong <yonghong....@intel.com>; Gao, >>Liming <liming....@intel.com>; daniel.thomp...@linaro.org; Ard Biesheuvel >><ard.biesheu...@linaro.org> >>Subject: [PATCH] BaseTools/tools_def AARCH64 ARM: suppres PIE sections >>via linker script >> >>Recent distro builds of GCC 6 enable PIE linking by default, and allow >>the previous behavior to be restored by passing the -no-pie command line >>argument. This was implemented by commits 1894a7c64c0a and 3380a591232d >>but unfortunately, it turns out that GCC 5 does not support this command >>line argument, and exits with an error. >> >>To avoid the need for yet another toolchain tag, to distinguish between >>GCC 5 and GCC 6, let's use our GCC linker scripts when building objects >>from .aslc files. This will ensure that the extra sections that are added >>by the PIE linker are discarded from the ELF binary, and so they will not >>corrupt the resulting .acpi file. >> >>This reverts >> >>1894a7c64c0a BaseTools/tools_def AARCH64 ARM: disable PIE linking >>3380a591232d BaseTools/tools_def AARCH64 ARM: disable PIE linking for .aslc >>sources >> >>Contributed-under: TianoCore Contribution Agreement 1.1 >>Signed-off-by: Ard Biesheuvel <ard.biesheu...@linaro.org> >>--- >> BaseTools/Conf/tools_def.template | 13 +++++++------ >> 1 file changed, 7 insertions(+), 6 deletions(-) >> >>diff --git a/BaseTools/Conf/tools_def.template >>b/BaseTools/Conf/tools_def.template >>index aebd7d558633..4d2a3b7dbe56 100755 >>--- a/BaseTools/Conf/tools_def.template >>+++ b/BaseTools/Conf/tools_def.template >>@@ -4356,9 +4356,10 @@ DEFINE GCC_IA32_X64_DLINK_COMMON = >>DEF(GCC_DLINK_FLAGS_COMMON) --gc-sections >> DEFINE GCC_ARM_AARCH64_DLINK_COMMON= -Wl,--emit-relocs -nostdlib - >>Wl,--gc-sections -u $(IMAGE_ENTRY_POINT) -Wl,- >>e,$(IMAGE_ENTRY_POINT),-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map >> DEFINE GCC_ARM_DLINK_FLAGS = >>DEF(GCC_ARM_AARCH64_DLINK_COMMON) -z common-page-size=0x20 >> DEFINE GCC_AARCH64_DLINK_FLAGS = >>DEF(GCC_ARM_AARCH64_DLINK_COMMON) -z common-page-size=0x20 >>+DEFINE GCC_ARM_AARCH64_ASLDLINK_FLAGS = -Wl,-- >>defsym=PECOFF_HEADER_SIZE=0 DEF(GCC_DLINK2_FLAGS_COMMON) -z >>common-page-size=0x20 >> DEFINE GCC_IA32_X64_ASLDLINK_FLAGS = >>DEF(GCC_IA32_X64_DLINK_COMMON) --entry _ReferenceAcpiTable -u >>$(IMAGE_ENTRY_POINT) >>-DEFINE GCC_ARM_ASLDLINK_FLAGS = DEF(GCC_ARM_DLINK_FLAGS) - >>Wl,--entry,ReferenceAcpiTable -u $(IMAGE_ENTRY_POINT) >>-DEFINE GCC_AARCH64_ASLDLINK_FLAGS = >>DEF(GCC_AARCH64_DLINK_FLAGS) -Wl,--entry,ReferenceAcpiTable -u >>$(IMAGE_ENTRY_POINT) >>+DEFINE GCC_ARM_ASLDLINK_FLAGS = DEF(GCC_ARM_DLINK_FLAGS) - >>Wl,--entry,ReferenceAcpiTable -u $(IMAGE_ENTRY_POINT) >>DEF(GCC_ARM_AARCH64_ASLDLINK_FLAGS) >>+DEFINE GCC_AARCH64_ASLDLINK_FLAGS = >>DEF(GCC_AARCH64_DLINK_FLAGS) -Wl,--entry,ReferenceAcpiTable -u >>$(IMAGE_ENTRY_POINT) DEF(GCC_ARM_AARCH64_ASLDLINK_FLAGS) >> DEFINE GCC_IA32_X64_DLINK_FLAGS = >>DEF(GCC_IA32_X64_DLINK_COMMON) --entry _$(IMAGE_ENTRY_POINT) -- >>file-alignment 0x20 --section-alignment 0x20 -Map >>$(DEST_DIR_DEBUG)/$(BASE_NAME).map >> DEFINE GCC_IPF_DLINK_FLAGS = -nostdlib -O2 --gc-sections --dll >> -static -- >>entry $(IMAGE_ENTRY_POINT) --undefined $(IMAGE_ENTRY_POINT) -Map >>$(DEST_DIR_DEBUG)/$(BASE_NAME).map >> DEFINE GCC_IPF_OBJCOPY_FLAGS = -I elf64-ia64-little -O efi-bsdrv-ia64 >>@@ -4494,12 +4495,12 @@ DEFINE GCC5_ARM_CC_FLAGS = >>DEF(GCC49_ARM_CC_FLAGS) >> DEFINE GCC5_ARM_CC_XIPFLAGS = DEF(GCC49_ARM_CC_XIPFLAGS) >> DEFINE GCC5_AARCH64_CC_FLAGS = DEF(GCC49_AARCH64_CC_FLAGS) >> DEFINE GCC5_AARCH64_CC_XIPFLAGS = >>DEF(GCC49_AARCH64_CC_XIPFLAGS) >>-DEFINE GCC5_ARM_DLINK_FLAGS = DEF(GCC49_ARM_DLINK_FLAGS) - >>no-pie >>+DEFINE GCC5_ARM_DLINK_FLAGS = DEF(GCC49_ARM_DLINK_FLAGS) >> DEFINE GCC5_ARM_DLINK2_FLAGS = DEF(GCC49_ARM_DLINK2_FLAGS) - >>Wno-error >>-DEFINE GCC5_AARCH64_DLINK_FLAGS = >>DEF(GCC49_AARCH64_DLINK_FLAGS) -no-pie >>+DEFINE GCC5_AARCH64_DLINK_FLAGS = >>DEF(GCC49_AARCH64_DLINK_FLAGS) >> DEFINE GCC5_AARCH64_DLINK2_FLAGS = >>DEF(GCC49_AARCH64_DLINK2_FLAGS) -Wno-error >>-DEFINE GCC5_ARM_ASLDLINK_FLAGS = >>DEF(GCC49_ARM_ASLDLINK_FLAGS) -no-pie >>-DEFINE GCC5_AARCH64_ASLDLINK_FLAGS = >>DEF(GCC49_AARCH64_ASLDLINK_FLAGS) -no-pie >>+DEFINE GCC5_ARM_ASLDLINK_FLAGS = >>DEF(GCC49_ARM_ASLDLINK_FLAGS) >>+DEFINE GCC5_AARCH64_ASLDLINK_FLAGS = >>DEF(GCC49_AARCH64_ASLDLINK_FLAGS) >> >> >>########################################################### >>######################### >> # >>-- >>2.11.0 > _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel