Ard Biesheuvel [mailto:[email protected]] wrote:

]Sent: Friday, August 14, 2015 02:15 PM
]To: [email protected]; [email protected]
]Cc: [email protected]; [email protected]; Ard Biesheuvel 
<[email protected]>; [email protected]; ][email protected]; 
[email protected]
]Subject: [edk2] [PATCH 00/15] unify GCC command line options
]
]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 #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 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 #10 unifies the IA32 and X64 linker flags for all toolchains listed 
above.
]
]Patch #11 unifies the ARM and AARCH64 CC flags, i.e., it removes all the
]redundant definitions.
]
]Patch #12 and #10 but for the linker.
]
]Patch #13 unifies the ASM flags for all archs.
]
]Patch #14 brings the remaining configuration options of ELFGCC in line with
]the GCC4x series.
]
]Patch #15 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.
]
]Branch can be found here
]https://git.linaro.org/people/ard.biesheuvel/uefi-next.git/shortlog/refs/heads/unify-gcc
]
]
]Ard Biesheuvel (14):
]  BaseTools/GenFv: use PE/COFF virtual section size if raw size is
]    larger
]  BaseTools: remove unused definition of GCC_WINDRES_FLAGS
]  BaseTools: merge warning flags for all GCC versions
]  BaseTools GCC: refactor tools_def internal GCC defines for CC flags
]  BaseTools: unify all IA32 and X64 CC flags for ELF based GCC
]  BaseTools: use leading underscore for symbol names where appropriate
]  BaseTools GCC: refactor tools_def internal GCC defines for [AS]DLINK
]  BaseTools: remove GCC 4.9 specific linker alignment override
]  BaseTools: unify all IA32 and X64 [AS]DLINK[2] flags for ELF based GCC
]  BaseTools: unify ARM and AARCH64 GCC compiler flags
]  BaseTools: unify ARM and AARCH64 DLINK flags for all GCC versions
]  BaseTools: unify ASM flags for all GCC versions
]  BaseTools: align ELFGCC with GCC4x toolchains
]  OvmfPkg/X64: enable 4 KB alignment for DXE_RUNTIME modules
]
]Scott Duplichan (1):
]  BaseTools: Fix GCC49 build failure
]
] BaseTools/Conf/tools_def.template           | 412 ++++++++------------
] BaseTools/Source/C/GenFv/GenFvInternalLib.c |   2 +-
] OvmfPkg/OvmfPkgX64.dsc                      |   7 +
] 3 files changed, 181 insertions(+), 240 deletions(-)
]
]-- 
]1.9.1

Thanks for this much needed tool chain definition consolidation. I ran
a build test with and without the patch. The build test uses GCC44-49
and Microsoft tool chains. Log files are here: http://notabs.org/uefi/tmp/.

Here is what is see in the log files with respect to the patch:
1) GCC49 X64 and IA32
   GenFw: ERROR 3000: Invalid Unsupported section alignment.
2) GCC46 ARM
   unrecognized command line option '-mno-unaligned-access'

Thanks,
Scott

_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to