After fix one platform issue, this patches can work in our X64 real hardware platform. So, I add Tested-By: Liming Gao <[email protected]<mailto:[email protected]>>
For the patch 6, I have given my comments. Other patches are good to me. Reviewed-by: Liming Gao<[email protected]> Thanks Liming From: edk2-devel [mailto:[email protected]] On Behalf Of Gao, Liming Sent: Monday, July 18, 2016 9:27 AM To: Justen, Jordan L <[email protected]>; Ard Biesheuvel <[email protected]>; [email protected]; [email protected]; [email protected]; Shi, Steven <[email protected]>; Zhu, Yonghong <[email protected]>; Kinney, Michael D <[email protected]>; Bjorge, Erik C <[email protected]> Cc: [email protected]; [email protected]; Long, Qin <[email protected]>; Ye, Ting <[email protected]>; Ard Biesheuvel <[email protected]> Subject: Re: [edk2] [PATCH v3 0/9] MdePkg BaseTools: GCC optimization for X64 Jordan: Thanks for your reminder. Yes. I will verify this patch on another real hardware platform. Thanks Liming > -----Original Message----- > From: Justen, Jordan L > Sent: Monday, July 18, 2016 6:45 AM > To: Ard Biesheuvel ; [email protected]<mailto:[email protected]>; > [email protected]<mailto:[email protected]>; > [email protected]<mailto:[email protected]>; Gao, Liming ; > Shi, Steven ; Zhu, Yonghong > ; Kinney, Michael D > ; Gao, Liming ; Bjorge, > Erik C > Cc: [email protected]<mailto:[email protected]>; > [email protected]<mailto:[email protected]>; Ard Biesheuvel > ; Ye, Ting ; Long, Qin > > Subject: Re: [edk2] [PATCH v3 0/9] MdePkg BaseTools: GCC optimization for > X64 > > I tested a bit with OVMF on GCC44 and GCC49. For the series: > Reviewed-by: Jordan Justen > > I wonder if Liming or Erik might want to test GCC49 on another > (non-OVMF) platform. Possibly with some windows boot testing. > > On 2016-07-17 03:34:37, Ard Biesheuvel wrote: > > This is v3 of the series to enable compiler optimization under GCC for > > builds > > targetting X64. It includes a patch from Steven Shi, taken from his series > > to > > introduce support for GCC 5.x and Clang 3.8/X64 to EDK2. > > > > The first patch fixes the issue that __builtin_unreachable() is not > > implemented by GCC 4.4 or earlier. > > > > Patch #2 sets a new define for OpensslLib that we will test in patches #3 > > and #4 to inhibit the use of the MS varargs ABI when building OpenSSL, > which > > lacks the ms_abi attributes on its variadic functions. > > > > Patch #3 is Steven's patch to switch to the flavor of VA_LIST that is > > explicitly modeled after the MS implementation. This by itself is an > > improvement, since the open coded implementation that performs > arithmetic > > on the address of explicit arguments to obtain the variadic arguments is > > fragile and difficult to maintain, and should be best avoided. > > > > Patch #4 ports patch #3 to EdkCompatibilityPkg > > > > Patch #5 enables -Os optimization for X64/RELEASE and X86/DEBUG all the > way > > back to GCC44. This aligns X64 with IA32, which is already built using -Os > > for both DEBUG and RELEASE. > > > > Note that the reported breakage regarding the use of -Os [0] is likely > caused > > by the poor man's __builtin_ms_va_list (NO_BUILTIN_VA_FUNCS) that we > used for > > GCC/X64 before Steven's patch above switches us to a properly defined > builtin > > type. (The poor man's implementation uses pointer arithmetic involving > the > > address of the last named argument to calculate pointers to the variadic > > arguments and dereferences them to obtain the argument values. I'm > quite > > surprised it works as well as it does at -O0, to be honest) > > > > I tested this change with both Ovmf and EmulatorPkg built in various ways > > and with various versions, with the caveat that I did not always use a > matching > > binutils (i.e., of the same era). Since the issues this series deal with are > > all code generation issues, I think this is reasonable, but more testing > > would > > be appreciated. (v2: this still applies, I have tested DEBUG and RELEASE > builds > > using GCC44, GCC46, GCC47 and GCC48, but all on the same Ubuntu 14.04 > system, > > which means they all use the same ld version 2.24.90) > > > > [0] http://thread.gmane.org/gmane.comp.bios.tianocore.devel/10963 > > > > Patch #6 explicitly forbids the poor man's MS ABI varargs implementation > when > > using GCC with optimization enabled. > > > > Patch #7 drops checks for the NO_BUILTIN_VA_FUNCS macro, which is > never defined > > anymore. > > > > Patch #8 applies the visibility 'protected' GCC pragma globally. Please > > refer > to > > the commit log for the motivation. > > > > Patch #9 switches GCC/X64 to the PIE small code model, which results in > smaller > > code. > > > > Changes in v3: > > - Ensure OpensslLib does not switch to the MS varargs ABI inadvertently > > - Switch to -fpie code generation rather than -fpic, which is more suitable > for > > executables. Note that this is *not* the -pie linker switch which generates > > a RELA section and a _DYNAMIC entrypoint. > > - Use 'protected' rather than 'hidden' visibility, which is equally > > suitable for > > our purposes (inhibiting generation of GOT entries) but interoperates > better > > with LTO, which we intend to enable for GCC 5 and up > > - dropped Laszlo's 'tested-by' from all patches, which was given based on > v1 > > > > Branch can be found here > > https://git.linaro.org/people/ard.biesheuvel/uefi- > next.git/shortlog/refs/heads/gcc-x64-opt-v3 > > > > Changes in v2: > > - Switch to -Os optimization, both for DEBUG and RELEASE builds. This turns > out > > to work fine (as far as I could establish) and gives the best results in > > terms > > of code size. > > > > Ard Biesheuvel (8): > > MdePkg: avoid __builtin_unreachable() on GCC v4.4 > > CryptoPkg: set new define to avoid MS ABI VA_LIST on GCC/X64 > > EdkCompatibilityPkg: Enable new MS VA intrinsics for GNUC x86 64bits > > build > > BaseTools/tools_def: enable Os optimization for GCC X64 builds > > MdePkg: disallow open coded varargs implementation on optimizing GCC > > MdePkg CryptoPkg EdkCompatibilityPkg: retire NO_BUILTIN_VA_FUNCS > > define > > MdePkg X64: force 'protected' visibility when building with -fpic > > BaseTools/tools_def: switch GCC/X64 to the PIE small model > > > > Shi, Steven (1): > > MdePkg: Enable new MS VA intrinsics for GNUC x86 64bits build > > > > BaseTools/Conf/tools_def.template | 2 +- > > CryptoPkg/Library/OpensslLib/OpensslLib.inf | 2 +- > > EdkCompatibilityPkg/Foundation/Include/EfiStdArg.h | 28 > ++++++++++++++- > > MdePkg/Include/Base.h | 36 ++++++++++++++++++-- > > MdePkg/Include/X64/ProcessorBind.h | 9 +++++ > > 5 files changed, 72 insertions(+), 5 deletions(-) > > > > -- > > 1.9.1 > > > > _______________________________________________ > > edk2-devel mailing list > > [email protected]<mailto:[email protected]> > > https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list [email protected]<mailto:[email protected]> https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

