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