1# Tests for reference parameters of types and their subtypes in GDB. 2# Copyright 2006-2023 Free Software Foundation, Inc. 3 4# This program is free software; you can redistribute it and/or modify 5# it under the terms of the GNU General Public License as published by 6# the Free Software Foundation; either version 3 of the License, or 7# (at your option) any later version. 8# 9# This program is distributed in the hope that it will be useful, 10# but WITHOUT ANY WARRANTY; without even the implied warranty of 11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12# GNU General Public License for more details. 13# 14# You should have received a copy of the GNU General Public License 15# along with this program. If not, see <http://www.gnu.org/licenses/>. 16 17# written by Paul N. Hilfinger (Hilfinger@adacore.com) 18 19# 20# test running programs 21# 22 23if { [skip_cplus_tests] } { continue } 24 25standard_testfile .cc 26 27if {[build_executable $testfile.exp $testfile $srcfile {debug c++}] == -1} { 28 return -1 29} 30 31gdb_exit 32 33proc gdb_start_again { text } { 34 global binfile 35 global srcfile 36 37 clean_restart $binfile 38 39 runto ${srcfile}:[gdb_get_line_number $text] 40} 41 42gdb_start_again "marker1 here" 43gdb_test "print Q" ".*id = 42.*" "print value of a Child in main" 44gdb_test "print f1(Q)" ".* = 42.*" "print value of f1 on Child in main" 45gdb_test "print f2(Q)" ".* = 42.*" "print value of f2 on Child in main" 46 47gdb_start_again "marker1 here" 48gdb_test "print f1(QR)" ".* = 42.*" "print value of f1 on (Child&) in main" 49 50gdb_start_again "marker1 here" 51gdb_test "print f2(QR)" ".* = 42.*" "print value of f2 on (Child&) in main" 52 53gdb_start_again "marker2 here" 54gdb_test "print C" ".*id = 42.*" "print value of Child& in f2" 55gdb_test "print f1(C)" ".* = 42.*" "print value of f1 on Child& in f2" 56 57gdb_start_again "marker3 here" 58gdb_test "print R" ".*id = 42.*" "print value of Parent& in f1" 59 60gdb_start_again "breakpoint MQ here" 61gdb_test "print f1(MQ)" ".* = 53" 62gdb_test "print mf1(MQ)" ".* = 106" 63gdb_test "print mf2(MQ)" ".* = 106" 64gdb_test "print f1(MQR)" ".* = 53" 65gdb_test "print mf1(MQR)" ".* = 106" 66gdb_test "print mf2(MQR)" ".* = 106" 67