From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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 78F1F385828F for ; Tue, 4 Oct 2022 17:08:10 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 78F1F385828F Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-149-4KMJdqDTMum6xXPveM9d_g-1; Tue, 04 Oct 2022 13:08:09 -0400 X-MC-Unique: 4KMJdqDTMum6xXPveM9d_g-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 B80F92999B3E for ; Tue, 4 Oct 2022 17:08:08 +0000 (UTC) Received: from fedora.redhat.com (unknown [10.40.192.57]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 0638E492B04; Tue, 4 Oct 2022 17:08:07 +0000 (UTC) From: Bruno Larsen To: gdb-patches@sourceware.org Subject: [PATCH 02/11] gdb/testsuite: enable running gdb.cp/classes.exp with clang Date: Tue, 4 Oct 2022 19:07:37 +0200 Message-Id: <20221004170747.154307-3-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.8 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, T_FILL_THIS_FORM_SHORT 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 04 Oct 2022 17:08:14 -0000 When attempting to run the gdb.cp/classes.exp test using clang++, the test fails to prepare with -Wnon-c-typedef-for-linkage like the previously fixed gdb.cp/class2.exp. Upon fixing this, the test shows 5 unexpected failures. One such failures is: ptype/r class class_with_public_typedef type = class class_with_public_typedef { private: int a; public: class_with_public_typedef::INT b; private: typedef int INT; } (gdb) FAIL: gdb.cp/classes.exp: ptype class class_with_public_typedef // wrong access specifier for typedef: private While g++ provided the following output: ptype/r class class_with_public_typedef type = class class_with_public_typedef { private: int a; public: class_with_public_typedef::INT b; typedef int INT; } (gdb) PASS: gdb.cp/classes.exp: ptype class class_with_public_typedef This error happens because clang does not add DW_AT_accessibility to typedefs inside classes, and without this information GDB defaults to assuming the typedef is private. Since there is nothing that GDB can do about this, these tests have been set as xfails, and a clang bug has been filed. --- gdb/testsuite/gdb.cp/classes.exp | 33 +++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/gdb/testsuite/gdb.cp/classes.exp b/gdb/testsuite/gdb.cp/classes.exp index 7b8b315ac1f..3f3e587803c 100644 --- a/gdb/testsuite/gdb.cp/classes.exp +++ b/gdb/testsuite/gdb.cp/classes.exp @@ -24,14 +24,20 @@ load_lib "cp-support.exp" 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 } + # Test ptype of class objects. proc test_ptype_class_objects {} { + if {[test_compiler_info {clang*}]} { + set clang_used true + } else { + set clang_used false + } # Simple type. cp_test_ptype_class \ @@ -319,6 +325,12 @@ proc test_ptype_class_objects {} { # Classes with typedefs of different access. + # Clang does not add access information for typedefs in classes. + # More information on: https://github.com/llvm/llvm-project/issues/57608 + if {$clang_used} { + setup_xfail "clang 57608" *-*-* + } + cp_test_ptype_class \ "class class_with_typedefs" "" "class" "class_with_typedefs" \ { @@ -339,6 +351,10 @@ proc test_ptype_class_objects {} { { typedef private "typedef int private_int;" } } + if {$clang_used} { + setup_xfail "clang 57608" *-*-* + } + cp_test_ptype_class \ "class class_with_public_typedef" "" "class" \ "class_with_public_typedef" { @@ -346,6 +362,11 @@ proc test_ptype_class_objects {} { { field public "class_with_public_typedef::INT b;" } { typedef public "typedef int INT;" } } + + if {$clang_used} { + setup_xfail "clang 57608" *-*-* + } + cp_test_ptype_class \ "class class_with_protected_typedef" "" "class" \ "class_with_protected_typedef" { @@ -353,6 +374,11 @@ proc test_ptype_class_objects {} { { field protected "class_with_protected_typedef::INT b;" } { typedef protected "typedef int INT;" } } + + if {$clang_used} { + setup_xfail "clang 57608" *-*-* + } + cp_test_ptype_class \ "struct struct_with_protected_typedef" "" "struct" \ "struct_with_protected_typedef" { @@ -360,6 +386,11 @@ proc test_ptype_class_objects {} { { field protected "struct_with_protected_typedef::INT b;" } { typedef protected "typedef int INT;" } } + + if {$clang_used} { + setup_xfail "clang 57608" *-*-* + } + cp_test_ptype_class \ "struct struct_with_private_typedef" "" "struct" \ "struct_with_private_typedef" { -- 2.37.3