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]>; [email protected];
> [email protected]; [email protected]; Gao, Liming <[email protected]>;
> Shi, Steven <[email protected]>; Zhu, Yonghong
> <[email protected]>; Kinney, Michael D
> <[email protected]>; Gao, Liming <[email protected]>; Bjorge,
> Erik C <[email protected]>
> Cc: [email protected]; [email protected]; Ard Biesheuvel
> <[email protected]>; Ye, Ting <[email protected]>; Long, Qin
> <[email protected]>
> 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 <[email protected]>
> 
> 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]
> > https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to