1 # Copyright 2013-2022 Free Software Foundation, Inc.
3 # This program is free software; you can redistribute it and/or modify
4 # it under the terms of the GNU General Public License as published by
5 # the Free Software Foundation; either version 3 of the License, or
6 # (at your option) any later version.
8 # This program is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # GNU General Public License for more details.
13 # You should have received a copy of the GNU General Public License
14 # along with this program. If not, see <http://www.gnu.org/licenses/>.
18 if {[skip_cplus_tests]} {
22 if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug c++}]} {
26 proc do_typeid_tests {started} {
29 # We might see the standard type or gdb's internal type.
30 set type_re "(std::type_info|gdb_gnu_v3_type_info)"
33 foreach simple_var {i cp ccp ca b} {
34 gdb_test "print &typeid($simple_var)" \
35 " = \\($type_re \\*\\) $hex.*"
37 # Note that we test pointer equality rather than object
38 # equality here. That is because std::type_info's operator==
39 # is not present in the libstdc++ .so.
40 gdb_test "print &typeid($simple_var) == &typeid(typeof($simple_var))" \
44 # typeid for these is Derived. Don't try these tests until the
45 # inferior has started.
47 foreach der_var {*b *vb1 *vb2 *bv d {const Derived} {const Derived &}} {
48 gdb_test "print &typeid($der_var)" \
49 " = \\($type_re \\*\\) $hex.*"
50 gdb_test "print &typeid($der_var) == &typeid(d)" \
56 with_test_prefix "before starting" {
64 with_test_prefix "after starting" {