1# Copyright 1998-2015 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 3 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, see <http://www.gnu.org/licenses/>. 15 16# This file was written by Michael Snyder (msnyder@cygnus.com) 17 18load_lib "trace-support.exp" 19 20 21gdb_exit 22gdb_start 23 24standard_testfile actions.c 25if { [gdb_compile "$srcdir/$subdir/$srcfile" $binfile \ 26 executable {debug nowarnings}] != "" } { 27 untested deltrace.exp 28 return -1 29} 30gdb_reinitialize_dir $srcdir/$subdir 31 32# If testing on a remote host, download the source file. 33# remote_download host $srcdir/$subdir/$srcfile 34 35gdb_file_cmd $binfile 36 37# define relative source line numbers: 38# all subsequent line numbers are relative to this first one (baseline) 39set baseline [gdb_find_recursion_test_baseline $srcfile] 40if { $baseline == -1 } then { 41 fail "Could not find gdb_recursion_test function" 42 return 43} 44set testline1 [expr $baseline + 4] 45 46# 47# test "delete tracepoints" command 48# 49 50# 3.1 delete tracepoints (all) 51gdb_delete_tracepoints 52gdb_test "trace gdb_c_test" "Tracepoint \[0-9\]+ at .*" "set tracepoint 1" 53gdb_test "trace gdb_asm_test" "Tracepoint \[0-9\]+ at .*" "set tracepoint 2" 54gdb_test "trace $testline1" "Tracepoint \[0-9\]+ at .*" "set tracepoint 3" 55 56gdb_test "info tracepoints" \ 57 "Num Type\[ \]+Disp Enb Address\[ \]+What.* 58\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_c_test at .*$srcfile:\[0-9\]+. 59\[\t \]+not installed on target. 60\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_asm_test at .*$srcfile:\[0-9\]+. 61\[\t \]+not installed on target. 62\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_recursion_test at .*$srcfile:\[0-9\]+. 63\[\t \]+not installed on target." \ 64 "3.1a: set three tracepoints" 65 66gdb_test "delete tracepoints" \ 67 "" \ 68 "3.1b: delete all tracepoints" \ 69 "Delete all tracepoints.*y or n.*$" \ 70 "y" 71 72 73# 3.2 delete tracepoint <n> 74gdb_delete_tracepoints 75set trcpt1 [gdb_gettpnum gdb_c_test] 76set trcpt2 [gdb_gettpnum gdb_asm_test] 77set trcpt3 [gdb_gettpnum $testline1] 78if { $trcpt1 <= 0 || $trcpt2 <= 0 || $trcpt3 <= 0 } then { 79 fail "setting tracepoints" 80 return 81} 82 83gdb_test "info tracepoints" \ 84 "Num Type\[ \]+Disp Enb Address\[ \]+What.* 85\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_c_test at .*$srcfile:\[0-9\]+. 86\[\t \]+not installed on target. 87\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_asm_test at .*$srcfile:\[0-9\]+. 88\[\t \]+not installed on target. 89\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_recursion_test at .*$srcfile:\[0-9\]+. 90\[\t \]+not installed on target." \ 91 "3.2a: set three tracepoints" 92 93#gdb_test_no_output "delete tracepoint $trcpt1" "" 94gdb_test_multiple "delete tracepoint $trcpt1" "3.2b: delete first tracepoint" { 95 -re "No tracepoint number.*$gdb_prompt $" { 96 fail "3.2b: delete first tracepoint" 97 } 98 -re ".*\[Ee\]rror.*$gdb_prompt $" { 99 fail "3.2b: delete first tracepoint" 100 } 101 -re "$gdb_prompt $" { 102 pass "3.2b: delete first tracepoint" 103 } 104} 105 106gdb_test "info tracepoints" \ 107 "Num Type\[ \]+Disp Enb Address\[ \]+What.* 108\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_asm_test at .*$srcfile:\[0-9\]+. 109\[\t \]+not installed on target. 110\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_recursion_test at .*$srcfile:\[0-9\]+. 111\[\t \]+not installed on target." \ 112 "3.2c: verify delete first tracepoint" 113 114#gdb_test_no_output "delete tracepoint $trcpt2" "" 115gdb_test_multiple "delete tracepoint $trcpt2" "3.2d: delete second tracepoint" { 116 -re "No tracepoint number.*$gdb_prompt $" { 117 fail "3.2d: delete second tracepoint" 118 } 119 -re ".*\[Ee\]rror.*$gdb_prompt $" { 120 fail "3.2d: delete second tracepoint" 121 } 122 -re "$gdb_prompt $" { 123 pass "3.2d: delete second tracepoint" 124 } 125} 126 127gdb_test "info tracepoints" \ 128 "Num Type\[ \]+Disp Enb Address\[ \]+What.* 129\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_recursion_test at .*$srcfile:\[0-9\]+. 130\[\t \]+not installed on target." \ 131 "3.2e: verify delete second tracepoint" 132 133#gdb_test_no_output "delete tracepoint $trcpt3" "" 134gdb_test_multiple "delete tracepoint $trcpt3" "3.2f: delete third tracepoint" { 135 -re "No tracepoint number.*$gdb_prompt $" { 136 fail "3.2f: delete third tracepoint" 137 } 138 -re ".*\[Ee\]rror.*$gdb_prompt $" { 139 fail "3.2f: delete third tracepoint" 140 } 141 -re "$gdb_prompt $" { 142 pass "3.2f: delete third tracepoint" 143 } 144} 145 146# send_gdb "ARF! \\n\n" 147gdb_test "info tracepoints" \ 148 "No tracepoints." \ 149 "3.2g: verify delete third tracepoint" 150 151# 3.3 delete three tracepoints at once 152gdb_delete_tracepoints 153set trcpt1 [gdb_gettpnum gdb_c_test] 154set trcpt2 [gdb_gettpnum gdb_asm_test] 155set trcpt3 [gdb_gettpnum $testline1] 156if { $trcpt1 <= 0 || $trcpt2 <= 0 || $trcpt3 <= 0 } then { 157 fail "setting tracepoints" 158 return 159} 160 161gdb_test "info tracepoints" \ 162 "Num Type\[ \]+Disp Enb Address\[ \]+What.* 163\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_c_test at .*$srcfile:\[0-9\]+. 164\[\t \]+not installed on target. 165\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_asm_test at .*$srcfile:\[0-9\]+. 166\[\t \]+not installed on target. 167\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_recursion_test at .*$srcfile:\[0-9\]+. 168\[\t \]+not installed on target." \ 169 "3.3a: set three tracepoints" 170 171#gdb_test_no_output "delete tracepoint $trcpt1 $trcpt2 $trcpt3" "" 172gdb_test_multiple "delete tracepoint $trcpt1 $trcpt2 $trcpt3" \ 173 "3.3b: delete three tracepoints" { 174 -re "No tracepoint number.*$gdb_prompt $" { 175 fail "3.3b: delete three tracepoints" 176 } 177 -re ".*\[Ee\]rror.*$gdb_prompt $" { 178 fail "3.3b: delete three tracepoints" 179 } 180 -re "$gdb_prompt $" { 181 pass "3.3b: delete three tracepoints" 182 } 183 } 184 185gdb_test "info tracepoints" \ 186 "No tracepoints." \ 187 "3.3c: verify delete three tracepoints" 188 189# 3.4 delete invalid tracepoint number 190gdb_test "delete tracepoint [expr $trcpt2 + $trcpt3]" \ 191 "No breakpoint number [expr $trcpt2 + $trcpt3]." \ 192 "3.4: delete invalid tracepoint number" 193 194# 3.5 delete tracepoint number zero 195gdb_test "delete tracepoint 0" "bad breakpoint number at or near '0'" \ 196 "3.5: delete tracepoint number zero" 197 198# 3.6 help delete tracepoints 199gdb_test "help delete tracepoints" \ 200 "Delete specified tracepoints.*" \ 201 "3.6: help delete tracepoints" 202