Fix gdb.python/py-format-string.exp with Clang
authorGary Benson <gbenson@redhat.com>
Tue, 27 Oct 2020 17:02:39 +0000 (17:02 +0000)
committerGary Benson <gbenson@redhat.com>
Tue, 27 Oct 2020 17:02:39 +0000 (17:02 +0000)
GDB includes the virtual table pointer when formatting polymorphic
C++ objects for printing, but GCC and Clang name these differently:
GCC emits a DW_AT_name of "_vptr.Base" when describing the virtual
table pointer of a type derived from type "Base", whereas Clang
will emit "_vptr$Base" in this situation.  This commit fixes a
testcase which failed because of this.

gdb/testsuite/ChangeLog:

* gdb.python/py-format-string.exp (test_deref_refs): Treat
"_vptr$Base" as correct, in addition to "_vptr.Base".
(test_mixed): Likewise.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.python/py-format-string.exp

index 6f92df87a6464e1b96644c005f0104ba6bde591a..a260377b9faca793fed6174fa43a45fa8302acbf 100644 (file)
@@ -1,3 +1,9 @@
+2020-10-14  Gary Benson <gbenson@redhat.com>
+
+       * gdb.python/py-format-string.exp (test_deref_refs): Treat
+       "_vptr$Base" as correct, in addition to "_vptr.Base".
+       (test_mixed): Likewise.
+
 2020-10-27  Gary Benson <gbenson@redhat.com>
 
        * gdb.mi/mi-fortran-modules.exp: Check skip_fortran_tests.
index 792d60c09dbe1025fb0b597ab0a221c965f71dd3..b7acc242ed320cb1ce2ad53930b5962f0bc4bf44 100644 (file)
@@ -509,7 +509,7 @@ proc test_deref_refs {} {
   if { $current_lang == "c++" } {
     check_var_with_bool_opt "deref_refs" "a_point_t_ref"
     check_var_with_bool_opt "deref_refs" "a_base_ref" \
-      "${default_ref_regexp}: \\{_vptr\\.Base = ${default_pointer_regexp} <vtable for Deriv\\+16>, a = 42, static a_static_member = 2019\\}"
+       "${default_ref_regexp}: \\{_vptr\[.\$\]Base = ${default_pointer_regexp} <vtable for Deriv\\+16>, a = 42, static a_static_member = 2019\\}"
   }
 }
 
@@ -905,7 +905,7 @@ proc test_mixed {} {
 
     check_format_string "a_base_ref" \
       "deref_refs=True, static_members=False" \
-      "${default_ref_regexp}: \\{_vptr\\.Base = ${default_pointer_regexp} <vtable for Deriv\\+16>, a = 42\\}"
+      "${default_ref_regexp}: \\{_vptr\[.\$\]Base = ${default_pointer_regexp} <vtable for Deriv\\+16>, a = 42\\}"
   }
 }