diff --git a/gdb/testsuite/gdb.cp/typeid.exp b/gdb/testsuite/gdb.cp/typeid.exp index 9963a8a..7469b2b 100644 --- a/gdb/testsuite/gdb.cp/typeid.exp +++ b/gdb/testsuite/gdb.cp/typeid.exp @@ -25,11 +25,25 @@ if {[prepare_for_testing $testfile.exp $testfile $srcfile {debug c++}]} { proc do_typeid_tests {started} { global hex + global gdb_prompt + set symbol_found 1 + # Try to access one of the symbols to make sure it is available. Some + # architectures put the symbols on relocatable sections, which means + # they will not be accessible before the inferior is running. + send_gdb "print 'typeinfo for int'\n" + gdb_expect { + -re "No symbol \"typeinfo for int\" in current context.*$gdb_prompt" { + set symbol_found 0 + } + -re ".*$gdb_prompt" { + } + } + + if {$symbol_found == 1} { # We might see the standard type or gdb's internal type. set type_re "(std::type_info|struct gdb_gnu_v3_type_info)" - foreach simple_var {i cp ccp ca b} { gdb_test "print &typeid($simple_var)" \ " = \\($type_re \\*\\) $hex.*" @@ -40,6 +54,7 @@ proc do_typeid_tests {started} { gdb_test "print &typeid($simple_var) == &typeid(typeof($simple_var))" \ " = true" } + } # typeid for these is Derived. Don't try these tests until the # inferior has started.