1# Copyright 1998, 1999 Free Software Foundation, Inc. 2# 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 2 of the License, or 6# (at your option) any later version. 7# 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. 12# 13# You should have received a copy of the GNU General Public License 14# along with this program; if not, write to the Free Software 15# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 16 17# Please email any bugs, comments, and/or additions to this file to: 18# bug-gdb@prep.ai.mit.edu 19 20# This file was written by Michael Snyder (msnyder@cygnus.com) 21 22load_lib "trace-support.exp"; 23 24if $tracelevel then { 25 strace $tracelevel 26} 27 28set prms_id 0 29set bug_id 0 30 31gdb_exit 32gdb_start 33 34if [istarget "m68k-*-elf"] then { 35 set srcfile gdb_c_test.c 36 set binfile [board_info target d490_binfile]; 37} else { 38 set testfile "actions" 39 set srcfile ${testfile}.c 40 set binfile $objdir/$subdir/$testfile 41 if { [gdb_compile "$srcdir/$subdir/$srcfile" $binfile \ 42 executable {debug additional_flags=-w}] != "" } { 43 gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." 44 } 45} 46gdb_reinitialize_dir $srcdir/$subdir 47 48# If testing on a remote host, download the source file. 49# remote_download host $srcdir/$subdir/$srcfile 50 51gdb_file_cmd $binfile 52 53# define relative source line numbers: 54# all subsequent line numbers are relative to this first one (baseline) 55set baseline [gdb_find_recursion_test_baseline $srcfile]; 56if { $baseline == -1 } then { 57 fail "Could not find gdb_recursion_test function" 58 return; 59} 60set testline1 [expr $baseline + 4] 61 62# 63# test "delete tracepoints" command 64# 65 66# 3.1 delete tracepoints (all) 67gdb_delete_tracepoints 68gdb_test "trace gdb_c_test" "Tracepoint \[0-9\]+ at .*" "set tracepoint 1" 69gdb_test "trace gdb_asm_test" "Tracepoint \[0-9\]+ at .*" "set tracepoint 2" 70gdb_test "trace $testline1" "Tracepoint \[0-9\]+ at .*" "set tracepoint 3" 71 72gdb_test "info tracepoints" \ 73 "Num Enb Address\[ \]+PassC StepC What.*\[0-9\]+\[\t \]+y\[\t \]+0x\[0-9a-fA-F\]+.*in gdb_c_test.*\[0-9\]+\[\t \]+y\[\t \]+0x\[0-9a-fA-F\]+.*gdb_asm_test.*\[0-9\]+\[\t \]+y\[\t \]+0x\[0-9a-fA-F\]+.*in gdb_recursion_test.*" \ 74 "3.1a: set three tracepoints" 75 76send_gdb "delete tracepoints\n" 77gdb_expect 30 { 78 -re "Delete all tracepoints.*y or n.*$" { 79 send_gdb "y\n" 80 gdb_expect 30 { 81 -re "$gdb_prompt $" { 82 pass "3.1b: delete all tracepoints" 83 } 84 timeout { fail "3.1b: delete all tracepoints (timeout)" } 85 } 86 } 87 -re "$gdb_prompt $" { # This should only happen if there are no tracepoints 88 fail "3.1b: delete all tracepoints (no tracepoints?)" 89 } 90 timeout { fail "3.1b: delete all tracepoints (timeout)" } 91} 92 93# 3.2 delete tracepoint <n> 94gdb_delete_tracepoints 95set trcpt1 [gdb_gettpnum gdb_c_test]; 96set trcpt2 [gdb_gettpnum gdb_asm_test]; 97set trcpt3 [gdb_gettpnum $testline1]; 98if { $trcpt1 <= 0 || $trcpt2 <= 0 || $trcpt3 <= 0 } then { 99 fail "setting tracepoints" 100 return; 101} 102 103gdb_test "info tracepoints" \ 104 "Num Enb Address\[ \]+PassC StepC What.*$trcpt1\[\t \]+y\[\t \]+0x\[0-9a-fA-F\]+.*in.*gdb_c_test.*$trcpt2\[\t \]+y\[\t \]+0x\[0-9a-fA-F\]+.*gdb_asm_test.*$trcpt3\[\t \]+y\[\t \]+0x\[0-9a-fA-F\]+.*in.*gdb_recursion_test.*" \ 105 "3.2a: set three tracepoints" 106 107#gdb_test "delete tracepoint $trcpt1" "" "" 108send_gdb "delete tracepoint $trcpt1\n" 109gdb_expect { 110 -re "No tracepoint number.*$gdb_prompt $" { 111 fail "3.2b: delete first tracepoint" 112 } 113 -re ".*\[Ee\]rror.*$gdb_prompt $" { 114 fail "3.2b: delete first tracepoint" 115 } 116 -re "$gdb_prompt $" { 117 pass "3.2b: delete first tracepoint" 118 } 119 timeout { 120 fail "3.2b: delete first tracepoint (timeout)" 121 } 122} 123 124send_gdb "info tracepoints\n" 125gdb_expect { 126 -re "$trcpt1\[\t \]+y\[\t \]+0x.*in.*gdb_c_test.*$gdb_prompt $" { 127 fail "3.2c: verify delete first tracepoint (argh)" 128 } 129 -re "$trcpt2\[\t \]+y.*gdb_asm_test.*\[\r\n\t ]+$trcpt3\[\t \]+y.* in gdb_recursion_test at .*$gdb_prompt $" { 130 pass "3.2c: verify delete first tracepoint" 131 } 132 -re ".*$gdb_prompt $" { 133 fail "3.2c: verify delete first tracepoint (mumble)" 134 } 135 timeout { 136 fail "3.2c: verify delete first tracepoint (timeout)" 137 } 138} 139 140#gdb_test "delete tracepoint $trcpt2" "" "" 141send_gdb "delete tracepoint $trcpt2\n" 142gdb_expect { 143 -re "No tracepoint number.*$gdb_prompt $" { 144 fail "3.2d: delete second tracepoint" 145 } 146 -re ".*\[Ee\]rror.*$gdb_prompt $" { 147 fail "3.2d: delete second tracepoint" 148 } 149 -re "$gdb_prompt $" { 150 pass "3.2d: delete second tracepoint" 151 } 152 timeout { 153 fail "3.2d: delete second tracepoint (timeout)" 154 } 155} 156 157send_gdb "info tracepoints\n" 158gdb_expect { 159 -re "$trcpt1\[\t \]+y\[\t \]+0x.*in.*gdb_c_test.*$gdb_prompt $" { 160 fail "3.2e: verify delete second tracepoint" 161 } 162 -re "$trcpt2\[\t \]+y\[\t \]+0x.*in gdb_asm_test.*$gdb_prompt $" { 163 fail "3.2e: verify delete second tracepoint" 164 } 165 -re "$trcpt3\[\t \]+y\[\t \]+0x.*in gdb_recursion_test.*$gdb_prompt $" { 166 pass "3.2e: verify delete second tracepoint" 167 } 168 -re "$gdb_prompt $" { 169 fail "3.2e: verify delete second tracepoint" 170 } 171 timeout { 172 fail "3.2e: verify delete second tracepoint (timeout)" 173 } 174} 175 176#gdb_test "delete tracepoint $trcpt3" "" "" 177send_gdb "delete tracepoint $trcpt3\n" 178gdb_expect { 179 -re "No tracepoint number.*$gdb_prompt $" { 180 fail "3.2f: delete third tracepoint" 181 } 182 -re ".*\[Ee\]rror.*$gdb_prompt $" { 183 fail "3.2f: delete third tracepoint" 184 } 185 -re "$gdb_prompt $" { 186 pass "3.2f: delete third tracepoint" 187 } 188 timeout { 189 fail "3.2f: delete third tracepoint (timeout)" 190 } 191} 192 193# send_gdb "ARF! \\n\n" 194send_gdb "info tracepoints\n" 195gdb_expect { 196 -re "$trcpt3\[\t \]+y\[\t \]+0x.*in gdb_recursion_test.*$gdb_prompt $" { 197 fail "3.2g: verify delete third tracepoint" 198 } 199 -re "$gdb_prompt $" { 200 pass "3.2g: verify delete third tracepoint" 201 } 202 timeout { 203 fail "3.2g: verify delete third tracepoint (timeout)" 204 } 205} 206 207# 3.3 delete three tracepoints at once 208gdb_delete_tracepoints 209set trcpt1 [gdb_gettpnum gdb_c_test]; 210set trcpt2 [gdb_gettpnum gdb_asm_test]; 211set trcpt3 [gdb_gettpnum $testline1]; 212if { $trcpt1 <= 0 || $trcpt2 <= 0 || $trcpt3 <= 0 } then { 213 fail "setting tracepoints" 214 return; 215} 216 217gdb_test "info tracepoints" \ 218 "Num Enb Address\[ \]+PassC StepC What.*$trcpt1\[\t \]+y\[\t \]+0x\[0-9a-fA-F\]+.*in gdb_c_test.*$trcpt2\[\t \]+y\[\t \]+0x\[0-9a-fA-F\]+.*gdb_asm_test.*$trcpt3\[\t \]+y\[\t \]+0x\[0-9a-fA-F\]+.*in gdb_recursion_test.*" \ 219 "3.3a: set three tracepoints" 220 221#gdb_test "delete tracepoint $trcpt1 $trcpt2 $trcpt3" "" "" 222send_gdb "delete tracepoint $trcpt1 $trcpt2 $trcpt3\n" 223gdb_expect { 224 -re "No tracepoint number.*$gdb_prompt $" { 225 fail "3.3b: delete three tracepoints" 226 } 227 -re ".*\[Ee\]rror.*$gdb_prompt $" { 228 fail "3.3b: delete three tracepoints" 229 } 230 -re "$gdb_prompt $" { 231 pass "3.3b: delete three tracepoints" 232 } 233 timeout { 234 fail "3.3b: delete three tracepoint (timeout)" 235 } 236} 237 238send_gdb "info tracepoints\n" 239gdb_expect { 240 -re "$trcpt1\[\t \]+y\[\t \]+0x.*in gdb_c_test.*$gdb_prompt $" { 241 fail "3.3c: verify delete three tracepoints (first one persists)" 242 } 243 -re "$trcpt2\[\t \]+y\[\t \]+0x.*in gdb_asm_test.*$gdb_prompt $" { 244 fail "3.3c: verify delete three tracepoints (second one persists)" 245 } 246 -re "$trcpt3\[\t \]+y\[\t \]+0x.*in gdb_recursion_test.*$gdb_prompt $" { 247 fail "3.3c: verify delete three tracepoints (third one persists)" 248 } 249 -re "$gdb_prompt $" { 250 pass "3.3c: verify delete three tracepoints" 251 } 252 timeout { 253 fail "3.3c: verify delete three tracepoints (timeout)" 254 } 255} 256 257# 3.4 delete invalid tracepoint number 258gdb_test "delete tracepoint [expr $trcpt2 + $trcpt3]" \ 259 "No tracepoint number [expr $trcpt2 + $trcpt3]." \ 260 "3.4: delete invalid tracepoint number" 261 262# 3.5 delete tracepoint number zero 263gdb_test "delete tracepoint 0" "bad tracepoint number at or near '0'" \ 264 "3.5: delete tracepoint number zero" 265 266# 3.6 help delete tracepoints 267gdb_test "help delete tracepoints" \ 268 "Delete specified tracepoints.*" \ 269 "3.6: help delete tracepoints" 270