Third attempt at unifying the various GCC linker scripts for different architectures, GCC versions and minimum alignments.
Changes since v2: - for easier bisection, factor out the differences between the original and the unified linker scripts for X86 before making the switch (patches #1 - #4 and #6) - add Intel copyright notice to unified version (patch #5) - avoid defining *_*_*_DLINK2_FLAGS so that we don't pollute the variable definition space of non-GCC toolchains (patches #8 and #12) - added Laszlo's ack to patch #10 ---------------------------- v2 blurb --------------------------------- This time, I have added only a single unified GCC linker script that can be parametrised by ld command line options: - --defsym=PECOFF_HEADER_SIZE sets the size of the PE/COFF header - -z common-page-size sets the minimum alignment This use of common-page-size is entirely legal: it sets an internal LD constant which can be referred to as CONSTANT(COMMONPAGESIZE) in linker scripts, and is otherwise unused internally by the linker. Tested with ArmVirtQemu/AARCH64 and Ovmf/X64 Branch is here https://git.linaro.org/people/ard.biesheuvel/uefi-next.git/shortlog/refs/heads/unify-gcc-ld-scripts-v3 Ard Biesheuvel (12): BaseTools/GCC: remove NOP padding from X86/IA32 GCC linker scripts BaseTools/GCC: move .rodata to PE/COFF .text section BaseTools/GCC: drop redundant alignment from linker script BaseTools/GCC: move .got contents to the PE/COFF .text section BaseTools/GCC: add unified GCC linker script for all archs and versions BaseTools/GCC: align start of .data to .text alignment BaseTools/GCC: move AutoGen.obj contents to .text section BaseTools/AARCH64: move to unified GCC linker script ArmPlatformPkg/ArmVExpressPkg: move to unified GCC linker script ArmVirtPkg: move to unified GCC linker script BaseTools/AARCH64: remove incremental linker script for 64K alignment BaseTools/X86|IA32: move to unified GCC linker script ArmPlatformPkg/ArmVExpressPkg/ArmVExpress.dsc.inc | 2 +- ArmVirtPkg/ArmVirt.dsc.inc | 2 +- BaseTools/Conf/tools_def.template | 37 ++++++++++- BaseTools/Scripts/GccBase.lds | 70 ++++++++++++++++++++ BaseTools/Scripts/gcc-4K-align-ld-script | 44 ------------ BaseTools/Scripts/gcc-aarch64-64K-align-ld-script | 4 -- BaseTools/Scripts/gcc-aarch64-ld-script | 39 ----------- BaseTools/Scripts/gcc4.4-ld-script | 44 ------------ BaseTools/Scripts/gcc4.9-ld-script | 44 ------------ 9 files changed, 106 insertions(+), 180 deletions(-) create mode 100644 BaseTools/Scripts/GccBase.lds delete mode 100644 BaseTools/Scripts/gcc-4K-align-ld-script delete mode 100644 BaseTools/Scripts/gcc-aarch64-64K-align-ld-script delete mode 100644 BaseTools/Scripts/gcc-aarch64-ld-script delete mode 100644 BaseTools/Scripts/gcc4.4-ld-script delete mode 100644 BaseTools/Scripts/gcc4.9-ld-script -- 1.9.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel