1 # Copyright
1998-2022 Free Software Foundation
, Inc.
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.
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.
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
/>.
16 # This file was written by Michael Snyder
(msnyder@cygnus.com
)
18 load_lib
"trace-support.exp"
23 standard_testfile actions.c
24 if ![gdb_trace_common_supports_arch
] {
25 unsupported
"no trace-common.h support for arch"
28 if { [gdb_compile
"$srcdir/$subdir/$srcfile" $binfile \
29 executable
{debug nowarnings
}] != "" } {
30 untested
"failed to compile"
33 gdb_reinitialize_dir $srcdir
/$subdir
35 #
If testing
on a remote host
, download the source file.
36 # remote_download host $srcdir
/$subdir
/$srcfile
40 #
define relative source line numbers
:
41 # all subsequent line numbers are relative to this first one
(baseline
)
42 set baseline
[gdb_find_recursion_test_baseline $srcfile
]
43 if { $baseline
== -1 } then {
44 fail
"could not find gdb_recursion_test function"
48 set testline1
[expr $baseline
+ 3]
51 # test
"passcount" command
54 gdb_delete_tracepoints
55 set trcpt1
[gdb_gettpnum gdb_c_test
]
56 set trcpt2
[gdb_gettpnum gdb_asm_test
]
57 set trcpt3
[gdb_gettpnum $testline1
]
58 if { $trcpt1
<= 0 || $trcpt2
<= 0 || $trcpt3
<= 0 } then {
59 fail
"setting tracepoints"
63 #
4.1 passcount of specified tracepoint
65 gdb_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"
75 gdb_test
"passcount 2 $trcpt1" \
76 "Setting tracepoint $trcpt1.s passcount to 2" \
77 "4.1b: set 1st tracepoint's passcount to two"
79 gdb_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"
90 gdb_test
"passcount 4 $trcpt2" \
91 "Setting tracepoint $trcpt2.s passcount to 4" \
92 "4.1d: set 2nd tracepoint's passcount to four"
94 gdb_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"
106 #
4.2 passcount of last
(default
) tracepoint
108 gdb_test
"passcount 6" \
109 "Setting tracepoint $trcpt3.s passcount to 6" \
110 "4.2b: set last (default) tp's passcount to six"
112 gdb_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"
122 #
4.3 run until stopped explicitly by user
123 #
[deferred to dynamic test section
]
125 #
4.4 reset the previously
set passcounts to new
values
127 gdb_test
"passcount 7" \
128 "Setting tracepoint $trcpt3.s passcount to 7" \
129 "4.4a: reset last (default) tp's passcount to seven"
131 gdb_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"
141 gdb_test
"passcount 5 $trcpt2" \
142 "Setting tracepoint $trcpt2.s passcount to 5" \
143 "4.4b: reset second tracepoint's passcount to five"
145 gdb_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"
155 #
4.20 <FIXME test number
> passcount
for "all"
157 gdb_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"
161 gdb_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"
171 gdb_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"
175 gdb_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"
185 #
4.5 Verify
trace stops
on first
"satisfied" passcount
186 #
[deferred to dynamic test section
]
188 #
4.6 minimum passcount boundary condition
190 gdb_test
"passcount 0 $trcpt1" \
191 "Setting tracepoint $trcpt1.s passcount to 0" \
192 "4.6: set passcount to zero"
194 gdb_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"
206 #
4.7 (test a very large passcount
)
208 gdb_test
"passcount 32767 $trcpt1" \
209 "Setting tracepoint $trcpt1.s passcount to 32767" \
210 "4.7: set passcount to large number (32767)"
212 gdb_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)"
222 #
4.8 set passcount
for invalid tracepoint
224 gdb_test
"passcount 1 [expr $trcpt2 + $trcpt3]" \
225 "No tracepoint number [expr $trcpt2 + $trcpt3]." \
226 "4.8: invalid tracepoint number in passcount"
229 gdb_test
"help passcount" "Set the passcount for a tracepoint.*" \
230 "4.9: help passcount"