1# Copyright 1998-2020 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 23standard_testfile actions.c 24if ![gdb_trace_common_supports_arch] { 25 unsupported "no trace-common.h support for arch" 26 return -1 27} 28if { [gdb_compile "$srcdir/$subdir/$srcfile" $binfile \ 29 executable {debug nowarnings}] != "" } { 30 untested "failed to compile" 31 return -1 32} 33gdb_reinitialize_dir $srcdir/$subdir 34 35# If testing on a remote host, download the source file. 36# remote_download host $srcdir/$subdir/$srcfile 37 38gdb_file_cmd $binfile 39 40# define relative source line numbers: 41# all subsequent line numbers are relative to this first one (baseline) 42set baseline [gdb_find_recursion_test_baseline $srcfile] 43if { $baseline == -1 } then { 44 fail "could not find gdb_recursion_test function" 45 return 46} 47 48set testline1 [expr $baseline + 3] 49 50# 51# test "passcount" command 52# 53 54gdb_delete_tracepoints 55set trcpt1 [gdb_gettpnum gdb_c_test] 56set trcpt2 [gdb_gettpnum gdb_asm_test] 57set trcpt3 [gdb_gettpnum $testline1] 58if { $trcpt1 <= 0 || $trcpt2 <= 0 || $trcpt3 <= 0 } then { 59 fail "setting tracepoints" 60 return 61} 62 63# 4.1 passcount of specified tracepoint 64 65gdb_test "info tracepoints" \ 66 "Num Type\[ \]+Disp Enb Address\[ \]+What.* 67\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_c_test at .*$srcfile:\[0-9\]+. 68\[\t \]+not installed on target. 69\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_asm_test at .*$srcfile:\[0-9\]+. 70\[\t \]+not installed on target. 71\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_recursion_test at .*$srcfile:\[0-9\]+. 72\[\t \]+not installed on target." \ 73 "4.1a: set three tracepoints, passcounts all zero" 74 75gdb_test "passcount 2 $trcpt1" \ 76 "Setting tracepoint $trcpt1.s passcount to 2" \ 77 "4.1b: set 1st tracepoint's passcount to two" 78 79gdb_test "info tracepoints" \ 80 "Num Type\[ \]+Disp Enb Address\[ \]+What.* 81\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_c_test at .*$srcfile:\[0-9\]+. 82\[\t \]+pass count 2 . 83\[\t \]+not installed on target. 84\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_asm_test at .*$srcfile:\[0-9\]+. 85\[\t \]+not installed on target. 86\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_recursion_test at .*$srcfile:\[0-9\]+. 87\[\t \]+not installed on target." \ 88 "4.1c: verify 1st tracepoint's passcount set to two" 89 90gdb_test "passcount 4 $trcpt2" \ 91 "Setting tracepoint $trcpt2.s passcount to 4" \ 92 "4.1d: set 2nd tracepoint's passcount to four" 93 94gdb_test "info tracepoints" \ 95 "Num Type\[ \]+Disp Enb Address\[ \]+What.* 96\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_c_test at .*$srcfile:\[0-9\]+. 97\[\t \]+pass count 2 . 98\[\t \]+not installed on target. 99\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_asm_test at .*$srcfile:\[0-9\]+. 100\[\t \]+pass count 4 . 101\[\t \]+not installed on target. 102\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_recursion_test at .*$srcfile:\[0-9\]+. 103\[\t \]+not installed on target." \ 104 "4.1c: verify 2nd tracepoint's passcount set to four" 105 106# 4.2 passcount of last (default) tracepoint 107 108gdb_test "passcount 6" \ 109 "Setting tracepoint $trcpt3.s passcount to 6" \ 110 "4.2b: set last (default) tp's passcount to six" 111 112gdb_test "info tracepoints" \ 113 "Num Type\[ \]+Disp Enb Address\[ \]+What.* 114\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_c_test at .*$srcfile:\[0-9\]+. 115\[\t \]+pass count 2 .* 116\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_asm_test at .*$srcfile:\[0-9\]+. 117\[\t \]+pass count 4 .* 118\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_recursion_test at .*$srcfile:\[0-9\]+. 119\[\t \]+pass count 6 .*" \ 120 "4.2b: verify last (default) tp's passcount set to six" 121 122# 4.3 run until stopped explicitly by user 123# [deferred to dynamic test section] 124 125# 4.4 reset the previously set passcounts to new values 126 127gdb_test "passcount 7" \ 128 "Setting tracepoint $trcpt3.s passcount to 7" \ 129 "4.4a: reset last (default) tp's passcount to seven" 130 131gdb_test "info tracepoints" \ 132 "Num Type\[ \]+Disp Enb Address\[ \]+What.* 133\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_c_test at .*$srcfile:\[0-9\]+. 134\[\t \]+pass count 2 .* 135\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_asm_test at .*$srcfile:\[0-9\]+. 136\[\t \]+pass count 4 .* 137\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_recursion_test at .*$srcfile:\[0-9\]+. 138\[\t \]+pass count 7 .*" \ 139 "4.4a: verify reset last (default) tp's passcount to seven" 140 141gdb_test "passcount 5 $trcpt2" \ 142 "Setting tracepoint $trcpt2.s passcount to 5" \ 143 "4.4b: reset second tracepoint's passcount to five" 144 145gdb_test "info tracepoints" \ 146 "Num Type\[ \]+Disp Enb Address\[ \]+What.* 147\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_c_test at .*$srcfile:\[0-9\]+. 148\[\t \]+pass count 2 .* 149\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_asm_test at .*$srcfile:\[0-9\]+. 150\[\t \]+pass count 5 .* 151\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_recursion_test at .*$srcfile:\[0-9\]+. 152\[\t \]+pass count 7 .*" \ 153 "4.4c: verify reset second tracepoint's passcount to five" 154 155# 4.20 <FIXME test number> passcount for "all" 156 157gdb_test "passcount 3 all" \ 158 ".*$trcpt1.s pass.* 3.*$trcpt2.s pass.* 3.*$trcpt3.s pass.* 3" \ 159 "4.20a: set all three passcounts to three" 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 \]+pass count 3 .* 165\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_asm_test at .*$srcfile:\[0-9\]+. 166\[\t \]+pass count 3 .* 167\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_recursion_test at .*$srcfile:\[0-9\]+. 168\[\t \]+pass count 3 .*" \ 169 "4.20a: verify all three passcounts to three" 170 171gdb_test "passcount 4 all" \ 172 ".*$trcpt1.s pass.* 4.*$trcpt2.s pass.* 4.*$trcpt3.s pass.* 4" \ 173 "4.20a: reset all three passcounts to four" 174 175gdb_test "info tracepoints" \ 176 "Num Type\[ \]+Disp Enb Address\[ \]+What.* 177\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_c_test at .*$srcfile:\[0-9\]+. 178\[\t \]+pass count 4 .* 179\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_asm_test at .*$srcfile:\[0-9\]+. 180\[\t \]+pass count 4 .* 181\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_recursion_test at .*$srcfile:\[0-9\]+. 182\[\t \]+pass count 4 .*" \ 183 "4.20b: reset all three passcounts to four" 184 185# 4.5 Verify trace stops on first "satisfied" passcount 186# [deferred to dynamic test section] 187 188# 4.6 minimum passcount boundary condition 189 190gdb_test "passcount 0 $trcpt1" \ 191 "Setting tracepoint $trcpt1.s passcount to 0" \ 192 "4.6: set passcount to zero" 193 194gdb_test "info tracepoints" \ 195 "Num Type\[ \]+Disp Enb Address\[ \]+What.* 196\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_c_test at .*$srcfile:\[0-9\]+. 197\[\t \]+not installed on target. 198\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_asm_test at .*$srcfile:\[0-9\]+. 199\[\t \]+pass count 4 . 200\[\t \]+not installed on target. 201\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_recursion_test at .*$srcfile:\[0-9\]+. 202\[\t \]+pass count 4 . 203\[\t \]+not installed on target." \ 204 "4.6: verify passcount to zero" 205 206# 4.7 (test a very large passcount) 207 208gdb_test "passcount 32767 $trcpt1" \ 209 "Setting tracepoint $trcpt1.s passcount to 32767" \ 210 "4.7: set passcount to large number (32767)" 211 212gdb_test "info tracepoints" \ 213 "Num Type\[ \]+Disp Enb Address\[ \]+What.* 214\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_c_test at .*$srcfile:\[0-9\]+. 215\[\t \]+pass count 32767 .* 216\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_asm_test at .*$srcfile:\[0-9\]+. 217\[\t \]+pass count 4 .* 218\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_recursion_test at .*$srcfile:\[0-9\]+. 219\[\t \]+pass count 4 .*" \ 220 "4.7: verify passcount to large number (32767)" 221 222# 4.8 set passcount for invalid tracepoint 223 224gdb_test "passcount 1 [expr $trcpt2 + $trcpt3]" \ 225 "No tracepoint number [expr $trcpt2 + $trcpt3]." \ 226 "4.8: invalid tracepoint number in passcount" 227 228# 4.9 help passcount 229gdb_test "help passcount" "Set the passcount for a tracepoint.*" \ 230 "4.9: help passcount" 231