public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Bruno Larsen <blarsen@redhat.com>
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	[thread overview]
Message-ID: <20221004170747.154307-3-blarsen@redhat.com> (raw)
In-Reply-To: <20221004170747.154307-1-blarsen@redhat.com>

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


  parent reply	other threads:[~2022-10-04 17:08 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-04 17:07 [PATCH 00/11] Cleanup gdb.cp tests when running " Bruno Larsen
2022-10-04 17:07 ` [PATCH 01/11] gdb/testsuite: ignore Non-C-typedefs for gdb.cp/class2.exp Bruno Larsen
2022-10-26 12:02   ` Andrew Burgess
2022-10-27  8:37     ` Bruno Larsen
2022-10-28 11:37       ` Andrew Burgess
2022-10-04 17:07 ` Bruno Larsen [this message]
2022-10-26 12:19   ` [PATCH 02/11] gdb/testsuite: enable running gdb.cp/classes.exp with clang Andrew Burgess
2022-10-04 17:07 ` [PATCH 03/11] gdb/testsuite: account for clang's recursive destructor calls on gdb.cp/mb-ctor.exp Bruno Larsen
2022-10-26 12:35   ` Andrew Burgess
2022-10-04 17:07 ` [PATCH 4/9] gdb/testsuite: add XFAIL to gdb.cp/derivation.exp when using clang Bruno Larsen
2022-10-04 17:09   ` Bruno Larsen
2022-10-04 17:07 ` [PATCH 04/11] " Bruno Larsen
2022-10-26 12:37   ` Andrew Burgess
2022-10-26 14:50   ` Andrew Burgess
2022-10-04 17:07 ` [PATCH 05/11] gdb/testsuite: allow for clang style destructors on gdb.cp/m-static.exp Bruno Larsen
2022-10-26 13:04   ` Andrew Burgess
2022-10-26 14:51   ` Andrew Burgess
2022-10-04 17:07 ` [PATCH 06/11] gdb/testsuite: add XFAIL to gdb.cp/ptype-flags.exp when using clang Bruno Larsen
2022-10-26 14:08   ` Andrew Burgess
2022-10-27 13:17     ` Bruno Larsen
2022-10-28 11:38       ` Andrew Burgess
2022-10-31 12:45         ` Bruno Larsen
2022-10-04 17:07 ` [PATCH 07/11] gdb/testsuite: skip gdb.cp/anon-struct.exp " Bruno Larsen
2022-10-26 14:49   ` Andrew Burgess
2022-10-27 13:46     ` Bruno Larsen
2022-10-04 17:07 ` [PATCH 08/11] gdb/testsuite: disable gdb.cp/typeid.exp " Bruno Larsen
2022-10-26 15:37   ` Andrew Burgess
2022-10-04 17:07 ` [PATCH 09/11] gdb/testsuite: fix gdb.cp/converts.exp to run with clang Bruno Larsen
2022-10-26 15:54   ` Andrew Burgess
2022-10-31 12:46     ` Bruno Larsen
2022-10-04 17:07 ` [PATCH 10/11] gdb/testsuite: remove XFAIL on gdb.cp/temargs.exp Bruno Larsen
2022-10-26 15:57   ` Andrew Burgess
2022-10-04 17:07 ` [PATCH 11/11] gdb/testsuite: disable gdb.cp/call-method-register.exp with clang Bruno Larsen
2022-10-27  9:49   ` Andrew Burgess
2022-10-31 10:51     ` Bruno Larsen
2022-10-18  8:10 ` [PING][PATCH 00/11] Cleanup gdb.cp tests when running " Bruno Larsen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20221004170747.154307-3-blarsen@redhat.com \
    --to=blarsen@redhat.com \
    --cc=gdb-patches@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).