Message ID | 20221004170747.154307-2-blarsen@redhat.com |
---|---|
State | Committed |
Headers |
Return-Path: <gdb-patches-bounces+patchwork=sourceware.org@sourceware.org> X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 3D958385C418 for <patchwork@sourceware.org>; Tue, 4 Oct 2022 17:08:36 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 3D958385C418 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1664903316; bh=9+GSLNESTECSswkU5HjyE7+LUihfxyPysbzmRrsK0+U=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=gyOjn3V862GaNN225arxOewirIjDa7Xa3RSfi3Ebi5PlDnXRY6u3aDGmt7mDkkriu nknpsa8gPBlNZueO2XaRX0u5BN5FTBEF+rxsyvhlSSDweCx9fxoGxd697pM8CaXtCr /4LeUFE56PYucU2jywDXl7XF5ZzCIuKcCRzwvvC4= X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id 75B503858436 for <gdb-patches@sourceware.org>; Tue, 4 Oct 2022 17:08:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 75B503858436 Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-47-tUM89mMRNSqcIHnxfqJf0A-1; Tue, 04 Oct 2022 13:08:07 -0400 X-MC-Unique: tUM89mMRNSqcIHnxfqJf0A-1 Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 63663101A267 for <gdb-patches@sourceware.org>; Tue, 4 Oct 2022 17:08:07 +0000 (UTC) Received: from fedora.redhat.com (unknown [10.40.192.57]) by smtp.corp.redhat.com (Postfix) with ESMTPS id A84A8492B04; Tue, 4 Oct 2022 17:08:06 +0000 (UTC) To: gdb-patches@sourceware.org Subject: [PATCH 01/11] gdb/testsuite: ignore Non-C-typedefs for gdb.cp/class2.exp Date: Tue, 4 Oct 2022 19:07:36 +0200 Message-Id: <20221004170747.154307-2-blarsen@redhat.com> In-Reply-To: <20221004170747.154307-1-blarsen@redhat.com> References: <20221004170747.154307-1-blarsen@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.10 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="US-ASCII"; x-default=true X-Spam-Status: No, score=-12.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_LOW, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list <gdb-patches.sourceware.org> List-Unsubscribe: <https://sourceware.org/mailman/options/gdb-patches>, <mailto:gdb-patches-request@sourceware.org?subject=unsubscribe> List-Archive: <https://sourceware.org/pipermail/gdb-patches/> List-Post: <mailto:gdb-patches@sourceware.org> List-Help: <mailto:gdb-patches-request@sourceware.org?subject=help> List-Subscribe: <https://sourceware.org/mailman/listinfo/gdb-patches>, <mailto:gdb-patches-request@sourceware.org?subject=subscribe> From: Bruno Larsen via Gdb-patches <gdb-patches@sourceware.org> Reply-To: Bruno Larsen <blarsen@redhat.com> Errors-To: gdb-patches-bounces+patchwork=sourceware.org@sourceware.org Sender: "Gdb-patches" <gdb-patches-bounces+patchwork=sourceware.org@sourceware.org> |
Series |
Cleanup gdb.cp tests when running with clang
|
|
Commit Message
Guinevere Larsen
Oct. 4, 2022, 5:07 p.m. UTC
When attempting to test gdb.cp/class2.exp using clang, it fails to prepare with the following error: Executing on host: clang++ -fdiagnostics-color=never -Wno-unknown-warning-option -c -g -o /home/blarsen/Documents/fsf_build/gdb/testsuite/outputs/gdb.cp/class2/class20.o /home/blarsen/Documents/fsf_build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.cp/class2.cc (timeout = 300) builtin_spawn -ignore SIGHUP clang++ -fdiagnostics-color=never -Wno-unknown-warning-option -c -g -o /home/blarsen/Documents/fsf_build/gdb/testsuite/outputs/gdb.cp/class2/class20.o /home/blarsen/Documents/fsf_build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.cp/class2.cc /home/blarsen/Documents/fsf_build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.cp/class2.cc:53:14: warning: anonymous non-C-compatible type given name for linkage purposes by typedef declaration; add a tag name here [-Wnon-c-typedef-for-linkage] typedef class { ^ Dbase /home/blarsen/Documents/fsf_build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.cp/class2.cc:54:2: note: type is not C-compatible due to this member declaration public: ^~~~~~~ /home/blarsen/Documents/fsf_build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.cp/class2.cc:58:3: note: type is given name 'Dbase' for linkage purposes by this typedef declaration } Dbase; ^ 1 warning generated. gdb compile failed, /home/blarsen/Documents/fsf_build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.cp/class2.cc:53:14: warning: anonymous non-C-compatible type given name for linkage purposes by typedef declaration; add a tag name here [-Wnon-c-typedef-for-linkage] typedef class { ^ Dbase /home/blarsen/Documents/fsf_build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.cp/class2.cc:54:2: note: type is not C-compatible due to this member declaration public: ^~~~~~~ /home/blarsen/Documents/fsf_build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.cp/class2.cc:58:3: note: type is given name 'Dbase' for linkage purposes by this typedef declaration } Dbase; ^ 1 warning generated. UNTESTED: gdb.cp/class2.exp: failed to prepare This can be silenced by adding -Wno-non-c-typedef-for-linkage. The test shows no failures with this change. --- gdb/testsuite/gdb.cp/class2.exp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
Comments
Bruno Larsen via Gdb-patches <gdb-patches@sourceware.org> writes: > When attempting to test gdb.cp/class2.exp using clang, it fails to > prepare with the following error: > > Executing on host: clang++ -fdiagnostics-color=never -Wno-unknown-warning-option -c -g -o /home/blarsen/Documents/fsf_build/gdb/testsuite/outputs/gdb.cp/class2/class20.o /home/blarsen/Documents/fsf_build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.cp/class2.cc (timeout = 300) > builtin_spawn -ignore SIGHUP clang++ -fdiagnostics-color=never -Wno-unknown-warning-option -c -g -o /home/blarsen/Documents/fsf_build/gdb/testsuite/outputs/gdb.cp/class2/class20.o /home/blarsen/Documents/fsf_build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.cp/class2.cc > /home/blarsen/Documents/fsf_build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.cp/class2.cc:53:14: warning: anonymous non-C-compatible type given name for linkage purposes by typedef declaration; add a tag name here [-Wnon-c-typedef-for-linkage] > typedef class { > ^ > Dbase > /home/blarsen/Documents/fsf_build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.cp/class2.cc:54:2: note: type is not C-compatible due to this member declaration > public: > ^~~~~~~ > /home/blarsen/Documents/fsf_build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.cp/class2.cc:58:3: note: type is given name 'Dbase' for linkage purposes by this typedef declaration > } Dbase; > ^ > 1 warning generated. > gdb compile failed, /home/blarsen/Documents/fsf_build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.cp/class2.cc:53:14: warning: anonymous non-C-compatible type given name for linkage purposes by typedef declaration; add a tag name here [-Wnon-c-typedef-for-linkage] > typedef class { > ^ > Dbase > /home/blarsen/Documents/fsf_build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.cp/class2.cc:54:2: note: type is not C-compatible due to this member declaration > public: > ^~~~~~~ > /home/blarsen/Documents/fsf_build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.cp/class2.cc:58:3: note: type is given name 'Dbase' for linkage purposes by this typedef declaration > } Dbase; > ^ > 1 warning generated. > UNTESTED: gdb.cp/class2.exp: failed to prepare > > This can be silenced by adding -Wno-non-c-typedef-for-linkage. The test > shows no failures with this change. > --- > gdb/testsuite/gdb.cp/class2.exp | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/gdb/testsuite/gdb.cp/class2.exp b/gdb/testsuite/gdb.cp/class2.exp > index 32f9dfc18a5..e1e4ad0fae6 100644 > --- a/gdb/testsuite/gdb.cp/class2.exp > +++ b/gdb/testsuite/gdb.cp/class2.exp > @@ -18,7 +18,7 @@ if { [skip_cplus_tests] } { return } > > standard_testfile .cc > > -if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug c++}]} { > +if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug c++ additional_flags=-Wno-non-c-typedef-for-linkage}]} { > return -1 I worry about just adding an extra flag like this. GCC is happy enough as it ignores unknown arguments, but some other compiler might be unhappy. Additionally, with earlier versions of clang++ (I tested 9.0.1) the new flag isn't recognised, and actually causes the build to fail. I wonder if we should look to something like gdb.cp/pr9167.exp for how to solve this? In that script we do this: set flags [list debug c++] if { [test_compiler_info gcc-*] && [gcc_major_version] >= 10 } { # Work around PR gcc/101452. lappend flags additional_flags=-fno-eliminate-unused-debug-types } this might be a better model for how to add the flag. Thanks, Andrew
On 26/10/2022 14:02, Andrew Burgess wrote: > Bruno Larsen via Gdb-patches <gdb-patches@sourceware.org> writes: > >> When attempting to test gdb.cp/class2.exp using clang, it fails to >> prepare with the following error: >> >> Executing on host: clang++ -fdiagnostics-color=never -Wno-unknown-warning-option -c -g -o /home/blarsen/Documents/fsf_build/gdb/testsuite/outputs/gdb.cp/class2/class20.o /home/blarsen/Documents/fsf_build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.cp/class2.cc (timeout = 300) >> builtin_spawn -ignore SIGHUP clang++ -fdiagnostics-color=never -Wno-unknown-warning-option -c -g -o /home/blarsen/Documents/fsf_build/gdb/testsuite/outputs/gdb.cp/class2/class20.o /home/blarsen/Documents/fsf_build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.cp/class2.cc >> /home/blarsen/Documents/fsf_build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.cp/class2.cc:53:14: warning: anonymous non-C-compatible type given name for linkage purposes by typedef declaration; add a tag name here [-Wnon-c-typedef-for-linkage] >> typedef class { >> ^ >> Dbase >> /home/blarsen/Documents/fsf_build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.cp/class2.cc:54:2: note: type is not C-compatible due to this member declaration >> public: >> ^~~~~~~ >> /home/blarsen/Documents/fsf_build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.cp/class2.cc:58:3: note: type is given name 'Dbase' for linkage purposes by this typedef declaration >> } Dbase; >> ^ >> 1 warning generated. >> gdb compile failed, /home/blarsen/Documents/fsf_build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.cp/class2.cc:53:14: warning: anonymous non-C-compatible type given name for linkage purposes by typedef declaration; add a tag name here [-Wnon-c-typedef-for-linkage] >> typedef class { >> ^ >> Dbase >> /home/blarsen/Documents/fsf_build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.cp/class2.cc:54:2: note: type is not C-compatible due to this member declaration >> public: >> ^~~~~~~ >> /home/blarsen/Documents/fsf_build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.cp/class2.cc:58:3: note: type is given name 'Dbase' for linkage purposes by this typedef declaration >> } Dbase; >> ^ >> 1 warning generated. >> UNTESTED: gdb.cp/class2.exp: failed to prepare >> >> This can be silenced by adding -Wno-non-c-typedef-for-linkage. The test >> shows no failures with this change. >> --- >> gdb/testsuite/gdb.cp/class2.exp | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/gdb/testsuite/gdb.cp/class2.exp b/gdb/testsuite/gdb.cp/class2.exp >> index 32f9dfc18a5..e1e4ad0fae6 100644 >> --- a/gdb/testsuite/gdb.cp/class2.exp >> +++ b/gdb/testsuite/gdb.cp/class2.exp >> @@ -18,7 +18,7 @@ if { [skip_cplus_tests] } { return } >> >> standard_testfile .cc >> >> -if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug c++}]} { >> +if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug c++ additional_flags=-Wno-non-c-typedef-for-linkage}]} { >> return -1 > I worry about just adding an extra flag like this. GCC is happy enough > as it ignores unknown arguments, but some other compiler might be > unhappy. > > Additionally, with earlier versions of clang++ (I tested 9.0.1) the new > flag isn't recognised, and actually causes the build to fail. Good call. This flag seems to have been added by clang-11, so I'll check for that version. > > I wonder if we should look to something like gdb.cp/pr9167.exp for how > to solve this? In that script we do this: > > set flags [list debug c++] > if { [test_compiler_info gcc-*] && [gcc_major_version] >= 10 } { > # Work around PR gcc/101452. > lappend flags additional_flags=-fno-eliminate-unused-debug-types > } > > this might be a better model for how to add the flag. Looking at gcc_major_version, this looks too verbose. gcc_major_version already checks for the given compiler, returning -1 if the compiler is not the expected one, so that code from gdb.cp/pr9167.exp could be shortened to: if { [ gcc_major_version ] >= 10 } { .... } What do you think? (I also think the function should be renamed, but that is a patch for another day). Cheers, Bruno > > Thanks, > Andrew >
Bruno Larsen <blarsen@redhat.com> writes: > On 26/10/2022 14:02, Andrew Burgess wrote: >> Bruno Larsen via Gdb-patches <gdb-patches@sourceware.org> writes: >> >>> When attempting to test gdb.cp/class2.exp using clang, it fails to >>> prepare with the following error: >>> >>> Executing on host: clang++ -fdiagnostics-color=never -Wno-unknown-warning-option -c -g -o /home/blarsen/Documents/fsf_build/gdb/testsuite/outputs/gdb.cp/class2/class20.o /home/blarsen/Documents/fsf_build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.cp/class2.cc (timeout = 300) >>> builtin_spawn -ignore SIGHUP clang++ -fdiagnostics-color=never -Wno-unknown-warning-option -c -g -o /home/blarsen/Documents/fsf_build/gdb/testsuite/outputs/gdb.cp/class2/class20.o /home/blarsen/Documents/fsf_build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.cp/class2.cc >>> /home/blarsen/Documents/fsf_build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.cp/class2.cc:53:14: warning: anonymous non-C-compatible type given name for linkage purposes by typedef declaration; add a tag name here [-Wnon-c-typedef-for-linkage] >>> typedef class { >>> ^ >>> Dbase >>> /home/blarsen/Documents/fsf_build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.cp/class2.cc:54:2: note: type is not C-compatible due to this member declaration >>> public: >>> ^~~~~~~ >>> /home/blarsen/Documents/fsf_build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.cp/class2.cc:58:3: note: type is given name 'Dbase' for linkage purposes by this typedef declaration >>> } Dbase; >>> ^ >>> 1 warning generated. >>> gdb compile failed, /home/blarsen/Documents/fsf_build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.cp/class2.cc:53:14: warning: anonymous non-C-compatible type given name for linkage purposes by typedef declaration; add a tag name here [-Wnon-c-typedef-for-linkage] >>> typedef class { >>> ^ >>> Dbase >>> /home/blarsen/Documents/fsf_build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.cp/class2.cc:54:2: note: type is not C-compatible due to this member declaration >>> public: >>> ^~~~~~~ >>> /home/blarsen/Documents/fsf_build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.cp/class2.cc:58:3: note: type is given name 'Dbase' for linkage purposes by this typedef declaration >>> } Dbase; >>> ^ >>> 1 warning generated. >>> UNTESTED: gdb.cp/class2.exp: failed to prepare >>> >>> This can be silenced by adding -Wno-non-c-typedef-for-linkage. The test >>> shows no failures with this change. >>> --- >>> gdb/testsuite/gdb.cp/class2.exp | 2 +- >>> 1 file changed, 1 insertion(+), 1 deletion(-) >>> >>> diff --git a/gdb/testsuite/gdb.cp/class2.exp b/gdb/testsuite/gdb.cp/class2.exp >>> index 32f9dfc18a5..e1e4ad0fae6 100644 >>> --- a/gdb/testsuite/gdb.cp/class2.exp >>> +++ b/gdb/testsuite/gdb.cp/class2.exp >>> @@ -18,7 +18,7 @@ if { [skip_cplus_tests] } { return } >>> >>> standard_testfile .cc >>> >>> -if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug c++}]} { >>> +if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug c++ additional_flags=-Wno-non-c-typedef-for-linkage}]} { >>> return -1 >> I worry about just adding an extra flag like this. GCC is happy enough >> as it ignores unknown arguments, but some other compiler might be >> unhappy. >> >> Additionally, with earlier versions of clang++ (I tested 9.0.1) the new >> flag isn't recognised, and actually causes the build to fail. > Good call. This flag seems to have been added by clang-11, so I'll check > for that version. >> >> I wonder if we should look to something like gdb.cp/pr9167.exp for how >> to solve this? In that script we do this: >> >> set flags [list debug c++] >> if { [test_compiler_info gcc-*] && [gcc_major_version] >= 10 } { >> # Work around PR gcc/101452. >> lappend flags additional_flags=-fno-eliminate-unused-debug-types >> } >> >> this might be a better model for how to add the flag. > > Looking at gcc_major_version, this looks too verbose. gcc_major_version > already checks for the given compiler, returning -1 if the compiler is > not the expected one, so that code from gdb.cp/pr9167.exp could be > shortened to: > > if { [ gcc_major_version ] >= 10 } { > .... > } I guess you actually need: [ gcc_major_version "gcc-*" c++ ] in order to check the C++ compiler. Thanks, Andrew > > What do you think? > > (I also think the function should be renamed, but that is a patch for > another day). > > Cheers, > Bruno > >> >> Thanks, >> Andrew >>
diff --git a/gdb/testsuite/gdb.cp/class2.exp b/gdb/testsuite/gdb.cp/class2.exp index 32f9dfc18a5..e1e4ad0fae6 100644 --- a/gdb/testsuite/gdb.cp/class2.exp +++ b/gdb/testsuite/gdb.cp/class2.exp @@ -18,7 +18,7 @@ if { [skip_cplus_tests] } { return } standard_testfile .cc -if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug c++}]} { +if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug c++ additional_flags=-Wno-non-c-typedef-for-linkage}]} { return -1 }