From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by ml01.01.org (Postfix) with ESMTP id 8FE8D1A1E2C for ; Thu, 28 Jul 2016 21:47:27 -0700 (PDT) Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga101.fm.intel.com with ESMTP; 28 Jul 2016 21:47:27 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.28,437,1464678000"; d="scan'208";a="1004671496" Received: from fmsmsx106.amr.corp.intel.com ([10.18.124.204]) by orsmga001.jf.intel.com with ESMTP; 28 Jul 2016 21:47:28 -0700 Received: from fmsmsx112.amr.corp.intel.com (10.18.116.6) by FMSMSX106.amr.corp.intel.com (10.18.124.204) with Microsoft SMTP Server (TLS) id 14.3.248.2; Thu, 28 Jul 2016 21:47:26 -0700 Received: from shsmsx101.ccr.corp.intel.com (10.239.4.153) by FMSMSX112.amr.corp.intel.com (10.18.116.6) with Microsoft SMTP Server (TLS) id 14.3.248.2; Thu, 28 Jul 2016 21:47:25 -0700 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.147]) by SHSMSX101.ccr.corp.intel.com ([169.254.1.8]) with mapi id 14.03.0248.002; Fri, 29 Jul 2016 12:47:24 +0800 From: "Gao, Liming" To: Ard Biesheuvel , "edk2-devel@lists.01.org" , "lersek@redhat.com" , "Shi, Steven" , "Zhu, Yonghong" , "Justen, Jordan L" CC: "leif.lindholm@linaro.org" Thread-Topic: [PATCH v4 0/7] BaseTools: add support for GCC5 in LTO mode Thread-Index: AQHR5/f8Pe/V7RZFt06qotJQNxbPU6Au0YZw Date: Fri, 29 Jul 2016 04:47:23 +0000 Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A1155E24F5@shsmsx102.ccr.corp.intel.com> References: <1469618017-6534-1-git-send-email-ard.biesheuvel@linaro.org> In-Reply-To: <1469618017-6534-1-git-send-email-ard.biesheuvel@linaro.org> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 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 04:47:27 -0000 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Ard: Thanks for your update. I have some comments for them.=20 1) It uses GCC as Link for GCC44-GCC49. Have you done verification on them?= I verify GCC49 in OVMFIa32X64 platform. It works.=20 2) After this change, how to append new link option in platform DSC? Use st= yle -Wl, ? 3) I see GCC5 uses gcc-ar as its SLINK, and GCC49 uses ar as its SLINK. Is = gcc-ar required only by LTO? 4) Before GCC49 optimization, GCC49 means GCC49 or later, GCC5 can work wit= h 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 expect = GCC5 work with GCC49 and GCC5 tool chain both. GCC49 for no lto, GCC5 for l= to. I know Steven has provided the patch to fix this GenFw issue.=20 GenFw: ERROR 3000: Invalid /home/hwu/work/lgao4/AllPkg/Build/Ovmf3264/DEBUG_GCC49/X64/MdeModulePkg/C= ore/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/MdeModulePkg/C= ore/Dxe/DxeMain/DEBUG/DxeCore.dll unsupported ELF EM_X86_64 relocation 0x9. GenFw: ERROR 3000: Invalid Thanks Liming > -----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 >=20 > 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. >=20 > 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 GCCLD > that will retain the old behavior. >=20 > The result is that GCC5 can align much more closely with its predecessors= , > making the expected maintenance burden of supporting GCC back to v4.4 > much lower. >=20 > 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 li= nk > 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 binary >=20 > Changes since v2: > - add license headers to LTO glue files for ARM and AARCH64 (#5) > - get rid of lto-ld-wrapper script >=20 > 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 >=20 > ArmPkg/GccLto/liblto-aarch64.a | Bin 0 -> 1016 byte= s > ArmPkg/GccLto/liblto-aarch64.s | 27 ++ > ArmPkg/GccLto/liblto-arm.a | Bin 0 -> 2096 byte= s > 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 >=20 > -- > 2.7.4