On 2015-08-17 07:24:57, Ard Biesheuvel wrote: > 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
UNIXGCC and CYGGCC are GCC 4.3 & mingw based. Did this get tested? I think ELFGCC is unused at this point. (And has been since UnixPkg was deprecated.) I think we should deprecate all three of these toolchains. I would like to see us move them to BaseTools/Conf/tools_def.deprecated. I'll add Larry to this email, because I think he disagrees with deprecating toolchains... If you make these changes and it breaks those toolchains, I don't think we would be able to notice, because I don't think we test them in our build pool anymore. To me this is all the more reason to move them out of tools_def.template. -Jordan > 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