From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 85B6620945C0D for ; Fri, 8 Sep 2017 02:28:28 -0700 (PDT) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 08 Sep 2017 02:31:20 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.42,360,1500966000"; d="scan'208";a="133146284" Received: from fmsmsx107.amr.corp.intel.com ([10.18.124.205]) by orsmga002.jf.intel.com with ESMTP; 08 Sep 2017 02:31:20 -0700 Received: from shsmsx104.ccr.corp.intel.com (10.239.4.70) by fmsmsx107.amr.corp.intel.com (10.18.124.205) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 8 Sep 2017 02:31:19 -0700 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.39]) by SHSMSX104.ccr.corp.intel.com ([169.254.5.117]) with mapi id 14.03.0319.002; Fri, 8 Sep 2017 17:31:17 +0800 From: "Gao, Liming" To: Thomas Lamprecht , "edk2-devel@lists.01.org" CC: Laszlo Ersek , Ard Biesheuvel Thread-Topic: [edk2] [PATCH v2] BaseTools/GCC: set -Wno-unused-const-variables on RELEASE builds Thread-Index: AQHTKHB6zG+ydzUW9kGfbYjOnyxD/6KquY3A Date: Fri, 8 Sep 2017 09:31:17 +0000 Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A14D78BE15@shsmsx102.ccr.corp.intel.com> References: <20170908070131.25158-1-t.lamprecht@proxmox.com> In-Reply-To: <20170908070131.25158-1-t.lamprecht@proxmox.com> 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 v2] BaseTools/GCC: set -Wno-unused-const-variables on RELEASE builds X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 08 Sep 2017 09:28:28 -0000 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Reviewed-by: Liming Gao >-----Original Message----- >From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of >Thomas Lamprecht >Sent: Friday, September 08, 2017 3:02 PM >To: edk2-devel@lists.01.org >Cc: Laszlo Ersek ; Gao, Liming ; >Ard Biesheuvel >Subject: [edk2] [PATCH v2] BaseTools/GCC: set -Wno-unused-const-variables >on RELEASE builds > >TianoCore BZ#700 [1] > >Set the '-Wno-unused-const-variables' in RELEASE builds with the >GGC49 and GCC5 toolchain. > >This fixes the RELEASE build of OVMF with GCC in version 6 or newer. >GCC 6 added the '-Wunused-const-variable' warning, which gets >activated by '-Wunused-variable' and has the following behavior: >"Warn whenever a constant static variable is unused aside from its >declaration" [2] > >Commit 2ad6ba80a1bd58382bde6b994070f7c01d2fb48d introduced a case >where exactly this happens on a RELEASE build. All uses of the static >const variable are located in debug code only, which gets thrown out >by the compiler on RELEASE builds and thus triggers the >unused-const-variable warning. > >There is currently no GCC 6 toolchain target defined and doing so >would add a lot of boilerplate code. Instead, use the fact that GCC >ignores unknown '-Wno-*' options: > >"[...] if the -Wno- form is used [...] no diagnostic is produced for >-Wno-unknown-warning unless other diagnostics are being produced" > >This behavior is available in GCC 4.9 [3] (and also earlier, for that >matter), so add the flag to the GCC49 and GCC5 toolchain, even if >both GCC versions do not supports it. >GCC49 doesn't enables LTO whereas GCC5 does. As GCC 6.0 through 6.2 >had bugs relating to LTO there can be desire to use the GCC49 target >even if compiling with GCC 6, see 432f1d83f77a. > >Orient the changes on 20d00edf21d2 which moved the >'-Wno-unused-but-set-variable' flag to RELEASE builds only, as there >it ensure that it does not gets raised if the only usage of a >variable is in (then collapsed) debug code. > >[1] https://bugzilla.tianocore.org/show_bug.cgi?id=3D700 >[2] https://gcc.gnu.org/onlinedocs/gcc-6.4.0/gcc/Warning- >Options.html#index-Wunused-const-variable >[3] https://gcc.gnu.org/onlinedocs/gcc-4.9.0/gcc/Warning-Options.html > >Cc: Yonghong Zhu >Cc: Liming Gao >Cc: Laszlo Ersek >Cc: Ard Biesheuvel >Contributed-under: TianoCore Contribution Agreement 1.1 >Signed-off-by: Thomas Lamprecht >--- > >changes v1 -> v2: > * add the flag also to the GCC49 toolchain to allow using GCC 6 with > LTO disabled builds, thanks for the hints Laszlo and Liming! > * adapt commit message slightly, especially to the fact that GCC49 > gets the flag now too. > * CC Ard > > BaseTools/Conf/tools_def.template | 16 ++++++++-------- > 1 file changed, 8 insertions(+), 8 deletions(-) > >diff --git a/BaseTools/Conf/tools_def.template >b/BaseTools/Conf/tools_def.template >index ba1d1a16de..cbb5024c1b 100755 >--- a/BaseTools/Conf/tools_def.template >+++ b/BaseTools/Conf/tools_def.template >@@ -5179,7 +5179,7 @@ RELEASE_GCC48_AARCH64_CC_FLAGS =3D >DEF(GCC48_AARCH64_CC_FLAGS) -Wno-unused-but-s > *_GCC49_IA32_NASM_FLAGS =3D -f elf32 > > DEBUG_GCC49_IA32_CC_FLAGS =3D DEF(GCC49_IA32_CC_FLAGS) -Os >-RELEASE_GCC49_IA32_CC_FLAGS =3D DEF(GCC49_IA32_CC_FLAGS) -Os - >Wno-unused-but-set-variable >+RELEASE_GCC49_IA32_CC_FLAGS =3D DEF(GCC49_IA32_CC_FLAGS) -Os - >Wno-unused-but-set-variable -Wno-unused-const-variable > NOOPT_GCC49_IA32_CC_FLAGS =3D DEF(GCC49_IA32_CC_FLAGS) -O0 > > ################## >@@ -5207,7 +5207,7 @@ RELEASE_GCC49_IA32_CC_FLAGS =3D >DEF(GCC49_IA32_CC_FLAGS) -Os -Wno-unused-but > *_GCC49_X64_NASM_FLAGS =3D -f elf64 > > DEBUG_GCC49_X64_CC_FLAGS =3D DEF(GCC49_X64_CC_FLAGS) -Os >-RELEASE_GCC49_X64_CC_FLAGS =3D DEF(GCC49_X64_CC_FLAGS) -Os - >Wno-unused-but-set-variable >+RELEASE_GCC49_X64_CC_FLAGS =3D DEF(GCC49_X64_CC_FLAGS) -Os - >Wno-unused-but-set-variable -Wno-unused-const-variable > NOOPT_GCC49_X64_CC_FLAGS =3D DEF(GCC49_X64_CC_FLAGS) -O0 > > ################## >@@ -5240,7 +5240,7 @@ RELEASE_GCC49_X64_CC_FLAGS =3D >DEF(GCC49_X64_CC_FLAGS) -Os -Wno-unused-but-s > *_GCC49_ARM_CC_XIPFLAGS =3D DEF(GCC49_ARM_CC_XIPFLAGS) > > DEBUG_GCC49_ARM_CC_FLAGS =3D DEF(GCC49_ARM_CC_FLAGS) -O0 >-RELEASE_GCC49_ARM_CC_FLAGS =3D DEF(GCC49_ARM_CC_FLAGS) -Wno- >unused-but-set-variable >+RELEASE_GCC49_ARM_CC_FLAGS =3D DEF(GCC49_ARM_CC_FLAGS) -Wno- >unused-but-set-variable -Wno-unused-const-variable > NOOPT_GCC49_ARM_CC_FLAGS =3D DEF(GCC49_ARM_CC_FLAGS) -O0 > > ################## >@@ -5272,7 +5272,7 @@ RELEASE_GCC49_ARM_CC_FLAGS =3D >DEF(GCC49_ARM_CC_FLAGS) -Wno-unused-but-set-v > DEBUG_GCC49_AARCH64_DLINK_FLAGS =3D >DEF(GCC49_AARCH64_DLINK_FLAGS) -z common-page-size=3D0x1000 > DEBUG_GCC49_AARCH64_DLINK_XIPFLAGS =3D -z common-page-size=3D0x20 > >-RELEASE_GCC49_AARCH64_CC_FLAGS =3D DEF(GCC49_AARCH64_CC_FLAGS) >-Wno-unused-but-set-variable -mcmodel=3Dtiny -fomit-frame-pointer >+RELEASE_GCC49_AARCH64_CC_FLAGS =3D DEF(GCC49_AARCH64_CC_FLAGS) >-Wno-unused-but-set-variable -Wno-unused-const-variable -mcmodel=3Dtiny - >fomit-frame-pointer > RELEASE_GCC49_AARCH64_DLINK_FLAGS =3D >DEF(GCC49_AARCH64_DLINK_FLAGS) > > NOOPT_GCC49_AARCH64_CC_FLAGS =3D DEF(GCC49_AARCH64_CC_FLAGS) >-O0 -mcmodel=3Dsmall >@@ -5326,7 +5326,7 @@ RELEASE_GCC49_AARCH64_DLINK_FLAGS =3D >DEF(GCC49_AARCH64_DLINK_FLAGS) > DEBUG_GCC5_IA32_CC_FLAGS =3D DEF(GCC5_IA32_CC_FLAGS) -flto -Os > DEBUG_GCC5_IA32_DLINK_FLAGS =3D DEF(GCC5_IA32_X64_DLINK_FLAGS) - >flto -Os -Wl,-m,elf_i386,--oformat=3Delf32-i386 > >-RELEASE_GCC5_IA32_CC_FLAGS =3D DEF(GCC5_IA32_CC_FLAGS) -flto -Os - >Wno-unused-but-set-variable >+RELEASE_GCC5_IA32_CC_FLAGS =3D DEF(GCC5_IA32_CC_FLAGS) -flto -Os - >Wno-unused-but-set-variable -Wno-unused-const-variable > RELEASE_GCC5_IA32_DLINK_FLAGS =3D DEF(GCC5_IA32_X64_DLINK_FLAGS) - >flto -Os -Wl,-m,elf_i386,--oformat=3Delf32-i386 > > NOOPT_GCC5_IA32_CC_FLAGS =3D DEF(GCC5_IA32_CC_FLAGS) -O0 >@@ -5358,7 +5358,7 @@ RELEASE_GCC5_IA32_DLINK_FLAGS =3D >DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Os -Wl, > DEBUG_GCC5_X64_CC_FLAGS =3D DEF(GCC5_X64_CC_FLAGS) -flto - >DUSING_LTO -Os > DEBUG_GCC5_X64_DLINK_FLAGS =3D DEF(GCC5_X64_DLINK_FLAGS) -flto - >Os > >-RELEASE_GCC5_X64_CC_FLAGS =3D DEF(GCC5_X64_CC_FLAGS) -flto - >DUSING_LTO -Os -Wno-unused-but-set-variable >+RELEASE_GCC5_X64_CC_FLAGS =3D DEF(GCC5_X64_CC_FLAGS) -flto - >DUSING_LTO -Os -Wno-unused-but-set-variable -Wno-unused-const-variable > RELEASE_GCC5_X64_DLINK_FLAGS =3D DEF(GCC5_X64_DLINK_FLAGS) -flto - >Os > > NOOPT_GCC5_X64_CC_FLAGS =3D DEF(GCC5_X64_CC_FLAGS) -O0 >@@ -5393,7 +5393,7 @@ RELEASE_GCC5_X64_DLINK_FLAGS =3D >DEF(GCC5_X64_DLINK_FLAGS) -flto -Os > DEBUG_GCC5_ARM_CC_FLAGS =3D DEF(GCC5_ARM_CC_FLAGS) -O0 > DEBUG_GCC5_ARM_DLINK_FLAGS =3D DEF(GCC5_ARM_DLINK_FLAGS) > >-RELEASE_GCC5_ARM_CC_FLAGS =3D DEF(GCC5_ARM_CC_FLAGS) -flto - >Wno-unused-but-set-variable >+RELEASE_GCC5_ARM_CC_FLAGS =3D DEF(GCC5_ARM_CC_FLAGS) -flto - >Wno-unused-but-set-variable -Wno-unused-const-variable > RELEASE_GCC5_ARM_DLINK_FLAGS =3D DEF(GCC5_ARM_DLINK_FLAGS) -flto >-Os -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-arm -Wl,-plugin-opt=3D-pass= - >through=3D-llto-arm > > NOOPT_GCC5_ARM_CC_FLAGS =3D DEF(GCC5_ARM_CC_FLAGS) -O0 >@@ -5428,7 +5428,7 @@ RELEASE_GCC5_ARM_DLINK_FLAGS =3D >DEF(GCC5_ARM_DLINK_FLAGS) -flto -Os -L$(WORKS > DEBUG_GCC5_AARCH64_DLINK_FLAGS =3D >DEF(GCC5_AARCH64_DLINK_FLAGS) -z common-page-size=3D0x1000 > DEBUG_GCC5_AARCH64_DLINK_XIPFLAGS =3D -z common-page-size=3D0x20 > >-RELEASE_GCC5_AARCH64_CC_FLAGS =3D DEF(GCC5_AARCH64_CC_FLAGS) - >flto -Wno-unused-but-set-variable -mcmodel=3Dtiny -fomit-frame-pointer >+RELEASE_GCC5_AARCH64_CC_FLAGS =3D DEF(GCC5_AARCH64_CC_FLAGS) - >flto -Wno-unused-but-set-variable -Wno-unused-const-variable - >mcmodel=3Dtiny -fomit-frame-pointer > RELEASE_GCC5_AARCH64_DLINK_FLAGS =3D >DEF(GCC5_AARCH64_DLINK_FLAGS) -flto -Os - >L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-aarch64 -Wl,-plugin-opt=3D-pass- >through=3D-llto-aarch64 -Wno-lto-type-mismatch > > NOOPT_GCC5_AARCH64_CC_FLAGS =3D DEF(GCC5_AARCH64_CC_FLAGS) - >O0 -mcmodel=3Dsmall >-- >2.11.0 > > >_______________________________________________ >edk2-devel mailing list >edk2-devel@lists.01.org >https://lists.01.org/mailman/listinfo/edk2-devel