1*b725ae77Skettenis# Copyright 1998, 1999, 2001, 2003, 2004 Free Software Foundation, Inc. 2*b725ae77Skettenis 3*b725ae77Skettenis# This program is free software; you can redistribute it and/or modify 4*b725ae77Skettenis# it under the terms of the GNU General Public License as published by 5*b725ae77Skettenis# the Free Software Foundation; either version 2 of the License, or 6*b725ae77Skettenis# (at your option) any later version. 7*b725ae77Skettenis# 8*b725ae77Skettenis# This program is distributed in the hope that it will be useful, 9*b725ae77Skettenis# but WITHOUT ANY WARRANTY; without even the implied warranty of 10*b725ae77Skettenis# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11*b725ae77Skettenis# GNU General Public License for more details. 12*b725ae77Skettenis# 13*b725ae77Skettenis# You should have received a copy of the GNU General Public License 14*b725ae77Skettenis# along with this program; if not, write to the Free Software 15*b725ae77Skettenis# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 16*b725ae77Skettenis 17*b725ae77Skettenis# This file is part of the gdb testsuite 18*b725ae77Skettenis# file written by Elena Zannoni (ezannoni@cygnus.com) 19*b725ae77Skettenis# rewritten by Michael Chastain (mec.gnu@mindspring.com) 20*b725ae77Skettenis# 21*b725ae77Skettenis# source files cttiadd.cc, cttiadd1.cc, cttiadd2.cc, cttiadd3.cc 22*b725ae77Skettenis 23*b725ae77Skettenis# Call to template instantiations. 24*b725ae77Skettenis 25*b725ae77Skettenisif $tracelevel then { 26*b725ae77Skettenis strace $tracelevel 27*b725ae77Skettenis} 28*b725ae77Skettenis 29*b725ae77Skettenisif { [skip_cplus_tests] } { continue } 30*b725ae77Skettenis 31*b725ae77Skettenisset testfile "cttiadd" 32*b725ae77Skettenisset srcfile "${srcdir}/${subdir}/${testfile}.cc" 33*b725ae77Skettenisset srcfile1 "${srcdir}/${subdir}/${testfile}1.cc" 34*b725ae77Skettenisset srcfile2 "${srcdir}/${subdir}/${testfile}2.cc" 35*b725ae77Skettenisset srcfile3 "${srcdir}/${subdir}/${testfile}3.cc" 36*b725ae77Skettenisset objfile "${objdir}/${subdir}/${testfile}.o" 37*b725ae77Skettenisset objfile1 "${objdir}/${subdir}/${testfile}1.o" 38*b725ae77Skettenisset objfile2 "${objdir}/${subdir}/${testfile}2.o" 39*b725ae77Skettenisset objfile3 "${objdir}/${subdir}/${testfile}3.o" 40*b725ae77Skettenisset binfile "${objdir}/${subdir}/${testfile}" 41*b725ae77Skettenis 42*b725ae77Skettenisif { [gdb_compile "${srcfile}" "${objfile}" object {debug c++}] != "" } { 43*b725ae77Skettenis gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." 44*b725ae77Skettenis} 45*b725ae77Skettenis 46*b725ae77Skettenisif { [gdb_compile "${srcfile1}" "${objfile1}" object {debug c++}] != "" } { 47*b725ae77Skettenis gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." 48*b725ae77Skettenis} 49*b725ae77Skettenis 50*b725ae77Skettenisif { [gdb_compile "${srcfile2}" "${objfile2}" object {debug c++}] != "" } { 51*b725ae77Skettenis gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." 52*b725ae77Skettenis} 53*b725ae77Skettenis 54*b725ae77Skettenisif { [gdb_compile "${srcfile3}" "${objfile3}" object {debug c++}] != "" } { 55*b725ae77Skettenis gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." 56*b725ae77Skettenis} 57*b725ae77Skettenis 58*b725ae77Skettenisif { [gdb_compile "${objfile} ${objfile1} ${objfile2} ${objfile3}" "${binfile}" executable {debug c++}] != "" } { 59*b725ae77Skettenis gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." 60*b725ae77Skettenis} 61*b725ae77Skettenis 62*b725ae77Skettenisif [get_compiler_info ${binfile} "c++"] { 63*b725ae77Skettenis return -1; 64*b725ae77Skettenis} 65*b725ae77Skettenis 66*b725ae77Skettenisgdb_exit 67*b725ae77Skettenisgdb_start 68*b725ae77Skettenisgdb_reinitialize_dir $srcdir/$subdir 69*b725ae77Skettenisgdb_load ${binfile} 70*b725ae77Skettenis 71*b725ae77Skettenisif ![runto_main] then { 72*b725ae77Skettenis perror "couldn't run to breakpoint" 73*b725ae77Skettenis continue 74*b725ae77Skettenis} 75*b725ae77Skettenis 76*b725ae77Skettenisgdb_breakpoint [gdb_get_line_number "marker add1"] 77*b725ae77Skettenisgdb_continue_to_breakpoint "marker add1" 78*b725ae77Skettenis 79*b725ae77Skettenisgdb_test "print c" "\\$\[0-9\]+ = 194 .*" 80*b725ae77Skettenisgdb_test "print f" "\\$\[0-9\]+ = 9" 81*b725ae77Skettenisgdb_test "print i" "\\$\[0-9\]+ = 4" 82*b725ae77Skettenis 83*b725ae77Skettenis# TODO: this needs more work before actually deploying it. 84*b725ae77Skettenis# So bail out here. 85*b725ae77Skettenis 86*b725ae77Skettenisif { [ test_compiler_info gcc-*] } then { continue } 87*b725ae77Skettenis 88*b725ae77Skettenisgdb_test_multiple "print add<int>(2,2)" "print add<int>(2,2)" { 89*b725ae77Skettenis -re "\\$\[0-9\]+ = 4\r\n$gdb_prompt $" { 90*b725ae77Skettenis pass "print add<int>(2,2)" 91*b725ae77Skettenis } 92*b725ae77Skettenis -re "No symbol \"add<int>\" in current context.\r\n$gdb_prompt $" { 93*b725ae77Skettenis # TODO: kfail or xfail this 94*b725ae77Skettenis fail "print add<int>(2,2)" 95*b725ae77Skettenis } 96*b725ae77Skettenis} 97*b725ae77Skettenis 98*b725ae77Skettenis# Note: 2.25 and 4.5 are exactly representable in IEEE-ish formats 99*b725ae77Skettenisgdb_test_multiple "print add<float>(2.25,2.25)" "print add<float>(2.25,2.25)" { 100*b725ae77Skettenis -re "\\$\[0-9\]+ = 4\\.5\r\n$gdb_prompt $" { 101*b725ae77Skettenis pass "print add<float>(2.25,2.25)" 102*b725ae77Skettenis } 103*b725ae77Skettenis -re "No symbol \"add<float>\" in current context.\r\n$gdb_prompt $" { 104*b725ae77Skettenis # TODO: kfail or xfail this 105*b725ae77Skettenis fail "print add<float>(2.25,2.25)" 106*b725ae77Skettenis } 107*b725ae77Skettenis} 108*b725ae77Skettenis 109*b725ae77Skettenisgdb_test_multiple "print add<unsigned char>('A','A')" "print add<unsigned char>('A','A')" { 110*b725ae77Skettenis -re "\\$\[0-9\]+ = -126 .*\r\n$gdb_prompt $" { 111*b725ae77Skettenis pass "print add<unsigned char>('A','A')" 112*b725ae77Skettenis } 113*b725ae77Skettenis -re "No symbol \"add<unsigned char>\" in current context.\r\n$gdb_prompt $" { 114*b725ae77Skettenis # TODO: kfail or xfail this 115*b725ae77Skettenis fail "print add<unsigned char>('A','A')" 116*b725ae77Skettenis } 117*b725ae77Skettenis} 118*b725ae77Skettenis 119*b725ae77Skettenisgdb_test_multiple "print add2<int>(2,2)" "print add2<int>(2,2)" { 120*b725ae77Skettenis -re "\\$\[0-9\]+ = 4\r\n$gdb_prompt $" { 121*b725ae77Skettenis pass "print add2<int>(2,2)" 122*b725ae77Skettenis } 123*b725ae77Skettenis -re "No symbol \"add2<int>\" in current context.\r\n$gdb_prompt $" { 124*b725ae77Skettenis # TODO: kfail or xfail this 125*b725ae77Skettenis fail "print add2<int>(2,2)" 126*b725ae77Skettenis } 127*b725ae77Skettenis} 128*b725ae77Skettenis 129*b725ae77Skettenisgdb_test_multiple "print add2<float>(2.25,2.25)" "print add2<float>(2.25,2.25)" { 130*b725ae77Skettenis -re "\\$\[0-9\]+ = 4\\.5\r\n$gdb_prompt $" { 131*b725ae77Skettenis pass "print add2<float>(2.25,2.25)" 132*b725ae77Skettenis } 133*b725ae77Skettenis -re "No symbol \"add2<float>\" in current context.\r\n$gdb_prompt $" { 134*b725ae77Skettenis # TODO: kfail or xfail this 135*b725ae77Skettenis fail "print add2<float>(2.25,2.25)" 136*b725ae77Skettenis } 137*b725ae77Skettenis} 138*b725ae77Skettenis 139*b725ae77Skettenisgdb_test_multiple "print add2<unsigned char>('A','A')" "print add2<unsigned char>('A','A')" { 140*b725ae77Skettenis -re "\\$\[0-9]+ = -126 .*$gdb_prompt $" { 141*b725ae77Skettenis pass "print add2<unsigned char>('A','A')" 142*b725ae77Skettenis } 143*b725ae77Skettenis -re "No symbol \"add2<unsigned char>\" in current context.\r\n$gdb_prompt $" { 144*b725ae77Skettenis # TODO: kfail or xfail this 145*b725ae77Skettenis fail "print add2<unsigned char>('A','A')" 146*b725ae77Skettenis } 147*b725ae77Skettenis} 148*b725ae77Skettenis 149*b725ae77Skettenisgdb_test_multiple "print add3<int>(2,2)" "print add3<int>(2,2)" { 150*b725ae77Skettenis -re "\\$\[0-9\]+ = 4\r\n$gdb_prompt $" { 151*b725ae77Skettenis pass "print add3<int>(2,2)" 152*b725ae77Skettenis } 153*b725ae77Skettenis -re "No symbol \"add3<int>\" in current context.\r\n$gdb_prompt $" { 154*b725ae77Skettenis # TODO: kfail or xfail this 155*b725ae77Skettenis fail "print add3<int>(2,2)" 156*b725ae77Skettenis } 157*b725ae77Skettenis} 158*b725ae77Skettenis 159*b725ae77Skettenisgdb_test_multiple "print add3<float>(2.25,2.25)" "print add3<float>(2.25,2.25)" { 160*b725ae77Skettenis -re "\\$\[0-9\]+ = 4\\.5\r\n$gdb_prompt $" { 161*b725ae77Skettenis pass "print add3<float>(2.25,2.25)" 162*b725ae77Skettenis } 163*b725ae77Skettenis -re "No symbol \"add3<float>\" in current context.\r\n$gdb_prompt $" { 164*b725ae77Skettenis # TODO: kfail or xfail this 165*b725ae77Skettenis fail "print add3<float>(2.25,2.25)" 166*b725ae77Skettenis } 167*b725ae77Skettenis} 168*b725ae77Skettenis 169*b725ae77Skettenisgdb_test_multiple "print add3<unsigned char>('A','A')" "print add3<unsigned char>('A','A')" { 170*b725ae77Skettenis -re "\\$\[0-9]+ = -126 .*$gdb_prompt $" { 171*b725ae77Skettenis pass "print add3<unsigned char>('A','A')" 172*b725ae77Skettenis } 173*b725ae77Skettenis -re "No symbol \"add3<unsigned char>\" in current context.\r\n$gdb_prompt $" { 174*b725ae77Skettenis # TODO: kfail or xfail this 175*b725ae77Skettenis fail "print add3<unsigned char>('A','A')" 176*b725ae77Skettenis } 177*b725ae77Skettenis} 178*b725ae77Skettenis 179*b725ae77Skettenisgdb_test_multiple "print add4<int>(2,2)" "print add4<int>(2,2)" { 180*b725ae77Skettenis -re "\\$\[0-9\]+ = 4\r\n$gdb_prompt $" { 181*b725ae77Skettenis pass "print add4<int>(2,2)" 182*b725ae77Skettenis } 183*b725ae77Skettenis -re "No symbol \"add4<int>\" in current context.\r\n$gdb_prompt $" { 184*b725ae77Skettenis # TODO: kfail or xfail this 185*b725ae77Skettenis fail "print add4<int>(2,2)" 186*b725ae77Skettenis } 187*b725ae77Skettenis} 188*b725ae77Skettenis 189*b725ae77Skettenisgdb_test_multiple "print add4<float>(2.25,2.25)" "print add4<float>(2.25,2.25)" { 190*b725ae77Skettenis -re "\\$\[0-9\]+ = 4\\.5\r\n$gdb_prompt $" { 191*b725ae77Skettenis pass "print add4<float>(2.25,2.25)" 192*b725ae77Skettenis } 193*b725ae77Skettenis -re "No symbol \"add4<float>\" in current context.\r\n$gdb_prompt $" { 194*b725ae77Skettenis # TODO: kfail or xfail this 195*b725ae77Skettenis fail "print add4<float>(2.25,2.25)" 196*b725ae77Skettenis } 197*b725ae77Skettenis} 198*b725ae77Skettenis 199*b725ae77Skettenisgdb_test_multiple "print add4<unsigned char>('A','A')" "print add4<unsigned char>('A','A')" { 200*b725ae77Skettenis -re "\\$\[0-9]+ = -126 .*$gdb_prompt $" { 201*b725ae77Skettenis pass "print add4<unsigned char>('A','A')" 202*b725ae77Skettenis } 203*b725ae77Skettenis -re "No symbol \"add4<unsigned char>\" in current context.\r\n$gdb_prompt $" { 204*b725ae77Skettenis # TODO: kfail or xfail this 205*b725ae77Skettenis fail "print add4<unsigned char>('A','A')" 206*b725ae77Skettenis } 207*b725ae77Skettenis} 208