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