From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) by sourceware.org (Postfix) with ESMTP id F34873971C3F for ; Thu, 18 Jun 2020 16:18:33 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org F34873971C3F Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-17-TubNp3dBNUC4NNMq38iXew-1; Thu, 18 Jun 2020 12:18:31 -0400 X-MC-Unique: TubNp3dBNUC4NNMq38iXew-1 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id E22F6835B47; Thu, 18 Jun 2020 16:18:30 +0000 (UTC) Received: from blade.nx (ovpn-115-39.ams2.redhat.com [10.36.115.39]) by smtp.corp.redhat.com (Postfix) with ESMTP id 761AA5D9D3; Thu, 18 Jun 2020 16:18:30 +0000 (UTC) Received: by blade.nx (Postfix, from userid 1000) id B22D0816CCA9; Thu, 18 Jun 2020 17:18:29 +0100 (BST) Date: Thu, 18 Jun 2020 17:18:29 +0100 From: Gary Benson To: Pedro Alves Cc: Tom Tromey , gdb-patches@sourceware.org Subject: Re: [PATCH] W/ Clang, compile C/C++ testcases with -Wno-unknown-warning-option Message-ID: <20200618161829.GB1032@blade.nx> References: <1590757423-18004-1-git-send-email-gbenson@redhat.com> <87mu5qaa2b.fsf@tromey.com> <68fd1b3e-10ae-8f1d-b96d-f35ce7ae3037@redhat.com> <20200616124212.GB30305@blade.nx> <5b75188a-0c0e-528a-1bbd-213f5fa52bd4@redhat.com> <20200617172913.GA5386@blade.nx> <4a87b8c6-a71c-cb54-8e23-7388c7128c2e@redhat.com> MIME-Version: 1.0 In-Reply-To: <4a87b8c6-a71c-cb54-8e23-7388c7128c2e@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=us-ascii Content-Disposition: inline X-Spam-Status: No, score=-15.4 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Jun 2020 16:18:35 -0000 Pedro Alves wrote: > From 79f1cfddeea957a778c856c879a386901a96609b Mon Sep 17 00:00:00 2001 > From: Pedro Alves > Date: Wed, 17 Jun 2020 19:29:37 +0100 > Subject: [PATCH] W/ Clang, compile C/C++ testcases with > -Wno-unknown-warning-option > > Some C/C++ testcases unconditionally pass -Wno-foo as additional > options to disable some warning. That is OK with GCC, because GCC > accepts -Wno-foo silently even if it doesn't support -Wfoo. This is a > feature which allows disabling warnings with newer compilers without > breaking builds with older compilers. Clang however warns about > unknown -Wno-foo by default, unless you pass > -Wno-unknown-warning-option as well: > > $ gcc -Wno-foo test.c > * nothing, compiles successfuly * > > $ clang -Wno-foo test.c > warning: unknown warning option '-Wno-foo [-Wunknown-warning-option] > > This commit adds -Wunknown-warning-option centrally in gdb_compile, so > that individual testcases don't have to worry about breaking older > Clangs. > > IOW, this avoids this problematic scenario: > > #1 - A testcase compiles successfully with Clang version X. > #2 - Clang version "X + 1" adds a new warning, enabled by default, > which breaks the test. > #3 - We add -Wno-newwarning to the testcase, fixing the testcase with > clang "X + 1". > #4 - Now building the test with Clang version X no longer works, due > to "unknown warning option". > > gdb/testsuite/ChangeLog: > yyyy-mm-dd Pedro Alves > > * lib/gdb.exp (gdb_compile): Update intro comment. If C/C++ with > Clang, add "-Wno-unknown-warning-option" to the options. > --- > gdb/testsuite/lib/gdb.exp | 19 ++++++++++++++++++- > 1 file changed, 18 insertions(+), 1 deletion(-) > > diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp > index f502eb157d8..bbc940a4512 100644 > --- a/gdb/testsuite/lib/gdb.exp > +++ b/gdb/testsuite/lib/gdb.exp > @@ -3826,7 +3826,8 @@ set gdb_saved_set_unbuffered_mode_obj "" > # - ldflags=flag: Add FLAG to the linker flags. > # - incdir=path: Add PATH to the searched include directories. > # - libdir=path: Add PATH to the linker searched directories. > -# - ada, c++, f77: Compile the file as Ada, C++ or Fortran. > +# - ada, c++, f77, f90, rust: Compile the file as Ada, C++, > +# Fortran 77, Fortran 90 or Rust. > # - debug: Build with debug information. > # - optimize: Build with optimization. > > @@ -3850,6 +3851,22 @@ proc gdb_compile {source dest type options} { > set new_options [universal_compile_options] > } > > + # Some C/C++ testcases unconditionally pass -Wno-foo as additional > + # options to disable some warning. That is OK with GCC, because > + # by design, GCC accepts any -Wno-foo option, even if it doesn't > + # support -Wfoo. Clang however warns about unknown -Wno-foo by > + # default, unless you pass -Wno-unknown-warning-option as well. > + # We do that here, so that individual testcases don't have to > + # worry about it. > + if {[lsearch -exact $options getting_compiler_info] == -1 > + && [lsearch -exact $options rust] == -1 > + && [lsearch -exact $options ada] == -1 > + && [lsearch -exact $options f77] == -1 > + && [lsearch -exact $options f90] == -1 > + && [test_compiler_info "clang-*"]} { > + lappend new_options "additional_flags=-Wno-unknown-warning-option" > + } > + > # Place (and look for) Fortran `.mod` files in the output > # directory for this specific test. > if {[lsearch -exact $options f77] != -1 \ > > base-commit: 669203174311c5be76744a879563c697cd479853 > -- > 2.14.5 Oh, thanks, that looks great. Could you commit it please? Cheers, Gary -- Gary Benson - he / him / his Principal Software Engineer, Red Hat