Automatic Copyright Year update after running gdb/copyright.py
[binutils-gdb.git] / gdb / testsuite / gdb.cp / typeid.exp
blob6411217191a1042cdfd3eff6cbf89b5c46961dab
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/>.
16 standard_testfile .cc
18 if {[skip_cplus_tests]} {
19     return -1
22 if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug c++}]} {
23     return -1
26 proc do_typeid_tests {started} {
27     global hex
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))" \
41             " = true"
42     }
44     # typeid for these is Derived.  Don't try these tests until the
45     # inferior has started.
46     if {$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)" \
51                 " = true"
52         }
53     }
56 with_test_prefix "before starting" {
57     do_typeid_tests 0
60 if ![runto_main] {
61     return -1
64 with_test_prefix "after starting" {
65     do_typeid_tests 1