From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by ml01.01.org (Postfix) with ESMTP id 542441A1E20 for ; Fri, 29 Jul 2016 13:33:04 -0700 (PDT) Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga103.jf.intel.com with ESMTP; 29 Jul 2016 13:33:04 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.28,441,1464678000"; d="scan'208";a="741640771" Received: from mskhizri-mobl1.amr.corp.intel.com (HELO localhost) ([10.252.131.141]) by FMSMGA003.fm.intel.com with ESMTP; 29 Jul 2016 13:33:03 -0700 MIME-Version: 1.0 To: Ard Biesheuvel , "Gao, Liming" Message-ID: <146982438340.10571.937271449740290618@jljusten-ivb> From: Jordan Justen In-Reply-To: Cc: "edk2-devel@lists.01.org" , "leif.lindholm@linaro.org" , "lersek@redhat.com" References: <1469618017-6534-1-git-send-email-ard.biesheuvel@linaro.org> <4A89E2EF3DFEDB4C8BFDE51014F606A1155E24F5@shsmsx102.ccr.corp.intel.com> User-Agent: alot/0.3.7 Date: Fri, 29 Jul 2016 13:33:03 -0700 Subject: Re: [PATCH v4 0/7] BaseTools: add support for GCC5 in LTO mode X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 Jul 2016 20:33:04 -0000 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable On 2016-07-28 23:09:15, Ard Biesheuvel wrote: > On 29 July 2016 at 06:47, Gao, Liming wrote: > > Ard: > > Thanks for your update. I have some comments for them. > > 1) It uses GCC as Link for GCC44-GCC49. Have you done verification on t= hem? I verify GCC49 in OVMFIa32X64 platform. It works. > = > Yes, I tested all of them. > = I tested GCC44 (X64) on an old live-cd where GCC 4.4 was the supported version. OVMF built and booted UEFI Linux. Therefore, I don't think we are likely to have a major issue with GCC44-GCC49. I also tested GCC49 and GCC5 with X64 on a system with GCC 5.4. It built and booted UEFI Linux. Can you add something like 'added GCC5 toolchain' into the subject for patch 7? I really think that a patch that adds a new toolchain should make it immediately obvious in the subject line. 3, 4 & 7 Reviewed-by: Jordan Justen The others, Acked-by: Jordan Justen > > 2) After this change, how to append new link option in platform DSC? Us= e style -Wl, ? > = > It depends. Some options (like -z) don't need it, but others do. > = > > 3) I see GCC5 uses gcc-ar as its SLINK, and GCC49 uses ar as its SLINK.= Is gcc-ar required only by LTO? > = > Yes > = > > 4) Before GCC49 optimization, GCC49 means GCC49 or later, GCC5 can work= with GCC49 tool chain configuration. But now, I configure gcc to point to = GCC5, and build OVMF with GCC49 tool chain, it reports GenFw failure. I exp= ect GCC5 work with GCC49 and GCC5 tool chain both. GCC49 for no lto, GCC5 f= or lto. I know Steven has provided the patch to fix this GenFw issue. > > > > GenFw: ERROR 3000: Invalid > > /home/hwu/work/lgao4/AllPkg/Build/Ovmf3264/DEBUG_GCC49/X64/MdeModuleP= kg/Core/Dxe/DxeMain/DEBUG/DxeCore.dll unsupported ELF EM_X86_64 relocation = 0x9. > > GenFw: ERROR 3000: Invalid > > /home/hwu/work/lgao4/AllPkg/Build/Ovmf3264/DEBUG_GCC49/X64/MdeModuleP= kg/Core/Dxe/DxeMain/DEBUG/DxeCore.dll unsupported ELF EM_X86_64 relocation = 0x9. > > GenFw: ERROR 3000: Invalid > > > = > Which GCC version are you using? > = > = > >> -----Original Message----- > >> From: Ard Biesheuvel [mailto:ard.biesheuvel@linaro.org] > >> Sent: Wednesday, July 27, 2016 7:14 PM > >> To: edk2-devel@lists.01.org; lersek@redhat.com; Gao, Liming > >> ; Shi, Steven ; Zhu, > >> Yonghong ; Justen, Jordan L > >> > >> Cc: leif.lindholm@linaro.org; Ard Biesheuvel > >> Subject: [PATCH v4 0/7] BaseTools: add support for GCC5 in LTO mode > >> > >> This v4 to introduce GCC5 is now a 7 piece series, including some > >> preparatory cleanup patches that allow all GCC4x and CLANG35 toolchains > >> to switch to using 'gcc' as the linker. This allows us to get rid of > >> the wrapper script to marshall ld arguments in order to make them > >> understandable by gcc, which is fragile and likely to cause problems in > >> the future. > >> > >> Since there appears to be a natural split between the 'legacy' GCC > >> toolchains UNIXGCC, ELFGCC, and CYGGCC[xASL], both in term of supported > >> architectures [IA32, X64, IPF] vs [IA32, X64, ARM, AARCH64], and in > >> terms of maintenance, these toolchains are not moved to using 'gcc' as > >> the linker, and instead, a new BUILDRULEFAMILY is introduced called GC= CLD > >> that will retain the old behavior. > >> > >> The result is that GCC5 can align much more closely with its predecess= ors, > >> making the expected maintenance burden of supporting GCC back to v4.4 > >> much lower. > >> > >> Changes since v3: > >> - like Steven does in his GCC5LTO patch, add -fno-builtin to IA32 and = X64 > >> CC_FLAGS; this addresses a build issue reported by Liming > >> - add -Os the the linker flags as well, for AARCH64 this does not seem= to > >> make > >> a difference, but it is arguably correct since the LTO processing at= link > >> time involves code generation as well > >> - add Laszlo's ack to #2 > >> - new patch #6 to omit the autogenerated build-id from the PE/COFF bin= ary > >> > >> Changes since v2: > >> - add license headers to LTO glue files for ARM and AARCH64 (#5) > >> - get rid of lto-ld-wrapper script > >> > >> Ard Biesheuvel (7): > >> BaseTools CLANG35: drop problematic use-movt and save-temps options > >> ArmVirtPkg/ArmVirtPrePiUniCoreRelocatable: ignore .hash and .note > >> sections > >> BaseTools UNIXGCC ELFGCC CYGGCC: clone GCC build rule family into > >> GCCLD > >> BaseTools GCC: use 'gcc' as the linker command for GCC44 and later > >> ArmPkg: add prebuilt glue binaries for GCC5 LTO support > >> BaseTools GCC: drop GNU notes section from EFI image > >> BaseTools GCC: add support for GCC v5.x in LTO mode > >> > >> ArmPkg/GccLto/liblto-aarch64.a | Bin 0 -> 1016 b= ytes > >> ArmPkg/GccLto/liblto-aarch64.s | 27 ++ > >> ArmPkg/GccLto/liblto-arm.a | Bin 0 -> 2096 b= ytes > >> ArmPkg/GccLto/liblto-arm.s | 61 ++++ > >> ArmVirtPkg/PrePi/ArmVirtPrePiUniCoreRelocatable.inf | 2 +- > >> ArmVirtPkg/PrePi/Scripts/PrePi-PIE.lds | 3 + > >> BaseTools/Conf/build_rule.template | 31 +- > >> BaseTools/Conf/tools_def.template | 344 +++++++++++= +++------ > >> BaseTools/Scripts/GccBase.lds | 6 + > >> EmulatorPkg/Unix/Host/Host.inf | 6 +- > >> 10 files changed, 372 insertions(+), 108 deletions(-) > >> create mode 100644 ArmPkg/GccLto/liblto-aarch64.a > >> create mode 100644 ArmPkg/GccLto/liblto-aarch64.s > >> create mode 100644 ArmPkg/GccLto/liblto-arm.a > >> create mode 100644 ArmPkg/GccLto/liblto-arm.s > >> > >> -- > >> 2.7.4 > > > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel