This got a bit out of hand after I noticed the ELFGCC and UNIXGCC toolchains that needed some tlc as well.
Anyway, this series aims to refactor the toolchains definitions for UNIXGCC, GCC44, GCC45, GCC46, GCC47, GCC48, GCC49, CLANG35, ELFGCC, CYGGCC and CYGGCCxASL so that they share as much of the settings as possible. Currently, there is very little coordination between these, which means for instance that the 4 KB alignment feature is only supported on GCC4x at the moment. The primary difference between these toolchains is that GCC4x and ELFGCC are entirely ELF based, whereas the other are PE/COFF based (but only when building for IA32 or X64) Note that this series does not remove any toolchains, nor should it result in major changes in the command lines that are passed to the various tools. However, things may be reordered, and (in case of ELFGCC), missing functionality such as increased section alignment has been added so there are some changes there. Patch #1 is a patch from Scott that I am reposting, but updated to cover AARCH64 as well. Patch #2 fixes a problem in the GenFv tool where it may access unallocated memory while rebasing the FFS when using large section and file alignment. Patch #3 removes an unused DEFINE from tools_def Patch #4 moved some warning flags that were applied to GCC4x 4.6 and up to all GCC versions. Patch #5 is the first big refactor patch that introduces PE and ELF variants for some CC flags. Patch #6 unifies the IA32 and X64 CC flags for all toolchains listed above. Patch #7 fixes the issue mentioned by Bill where the underscore decoration is erroneously applied on X64 as well. Patch #8 is the second refactor the introduces PE and ELF variants for the various DLINK flags. Patch #9 changes the way the start of the .data section is set in GccBase.lds. This is needed since the linker will reorganize the internal layout of the .data section rather than update its start address to ensure all objects that it contains meet their respective alignments, even if the start address is not aligned to the max value of all inputs. Patch #10 removes the explicit 64 byte alignment applied to GCC 4.9. The latest GenFw and linker script propagate the alignment automatically, i.e., if objects with such alignment requirement are present, GCC will set the ELF header accordingly, and this value will be used for the PE/COFF section alignment as well. Patch #11 unifies the IA32 and X64 linker flags for all toolchains listed above. Patch #12 unifies the ARM and AARCH64 CC flags, i.e., it removes all the redundant definitions. Patch #13 as #11 but for the linker. Patch #14 unifies the ASM flags for all archs. Patch #15 brings the remaining configuration options of ELFGCC in line with the GCC4x series. Patch #16 is a PoC that allows Ovmf/X64 to be built with 4 KB section alignment for DXE_RUNTIME modules using UNIXGCC and ELFGCC, as is required to support the properties table memprotection feature. Changes since v1: - added patch #9 to address the IA32 and X86 failures on 4.9 reported by Scott - don't pass -mno-unaligned-access to ARM 4.6 compiler (Scott) - improved wording of commit messages of various patches - rebased onto latest upstream, which includes a fix related to the ARM 4.6 issue mentioned above Branch can be found here https://git.linaro.org/people/ard.biesheuvel/uefi-next.git/shortlog/refs/heads/unify-gcc-v2 Ard Biesheuvel (15): BaseTools/GenFv: use PE/COFF virtual section size if raw size is larger BaseTools GCC: remove unused definition of GCC_WINDRES_FLAGS BaseTools GCC: merge warning flags for all GCC versions BaseTools GCC: refactor tools_def internal GCC defines for CC flags BaseTools GCC: unify all IA32 and X64 CC flags for ELF based GCC BaseTools GCC: use leading underscore for symbol names where appropriate BaseTools GCC: refactor tools_def internal GCC defines for [AS]DLINK BaseTools GCC: don't set .data address explicitly BaseTools GCC: remove GCC 4.9 specific linker alignment override BaseTools GCC: unify all IA32 and X64 [AS]DLINK[2] flags for ELF based GCC BaseTools GCC: unify ARM and AARCH64 GCC compiler flags BaseTools GCC: unify ARM and AARCH64 DLINK flags for all GCC versions BaseTools GCC: unify ASM flags for all GCC versions BaseTools GCC: align ELFGCC with GCC4x toolchains OvmfPkg/X64: enable 4 KB alignment for DXE_RUNTIME modules Scott Duplichan (1): BaseTools GCC: Fix GCC49 build failure BaseTools/Conf/tools_def.template | 412 ++++++++------------ BaseTools/Scripts/GccBase.lds | 3 +- BaseTools/Source/C/GenFv/GenFvInternalLib.c | 2 +- OvmfPkg/OvmfPkgX64.dsc | 7 + 4 files changed, 183 insertions(+), 241 deletions(-) -- 1.9.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel