gdb/testsuite: disable some tests of gdb.cp/typeid.exp when using Clang
authorBruno Larsen <blarsen@redhat.com>
Thu, 29 Sep 2022 12:51:34 +0000 (14:51 +0200)
committerBruno Larsen <blarsen@redhat.com>
Fri, 11 Nov 2022 09:13:45 +0000 (10:13 +0100)
Since Clang chooses to not add any debug information for base types,
expecting it to be included with libraries' informations, gdb.cp/typeid.exp
will always fail if the program hasn't started.  This commit fixes that by
making it so when using Clang, the base type variables aren't tested.

Approved-by: Tom Tromey <tom@tromey.com>
gdb/testsuite/gdb.cp/typeid.exp

index 6411217191a1042cdfd3eff6cbf89b5c46961dab..fd8e96276c518a7d3c40396bea78700ec15ddc94 100644 (file)
@@ -29,8 +29,16 @@ proc do_typeid_tests {started} {
     # We might see the standard type or gdb's internal type.
     set type_re "(std::type_info|gdb_gnu_v3_type_info)"
 
+    set var {ca b}
+    if {$started || ![test_compiler_info clang-*-* c++]} {
+       # Clang doesn't place type information for the base types in
+       # the executable, and relies on this being linked in from the
+       # standard library.  As a result, type information for these
+       # variables is only available once the inferior is started.
+       lappend var i cp ccp
+    }
 
-    foreach simple_var {i cp ccp ca b} {
+    foreach simple_var $var {
        gdb_test "print &typeid($simple_var)" \
            " = \\($type_re \\*\\) $hex.*"