Update copyright year in most headers.
[deliverable/binutils-gdb.git] / gdb / testsuite / gdb.trace / passc-dyn.exp
CommitLineData
4c38e0a4
JB
1# Copyright 1998, 2005, 2007, 2008, 2009, 2010
2# Free Software Foundation, Inc.
c906108c
SS
3#
4# This program is free software; you can redistribute it and/or modify
5# it under the terms of the GNU General Public License as published by
e22f8b7c 6# the Free Software Foundation; either version 3 of the License, or
c906108c 7# (at your option) any later version.
e22f8b7c 8#
c906108c
SS
9# This program is distributed in the hope that it will be useful,
10# but WITHOUT ANY WARRANTY; without even the implied warranty of
11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12# GNU General Public License for more details.
e22f8b7c 13#
c906108c 14# You should have received a copy of the GNU General Public License
e22f8b7c 15# along with this program. If not, see <http://www.gnu.org/licenses/>.
c906108c 16
c906108c
SS
17# This file was written by Michael Snyder (msnyder@cygnus.com)
18
19load_lib "trace-support.exp";
20
21if $tracelevel then {
22 strace $tracelevel
23}
24
25set prms_id 0
26set bug_id 0
27
28gdb_exit
29gdb_start
f8b7eaf3
DJ
30set testfile "actions"
31set srcfile ${testfile}.c
32set binfile $objdir/$subdir/passc-dyn
33if { [gdb_compile "$srcdir/$subdir/$srcfile" $binfile \
34 executable {debug nowarnings}] != "" } {
35 untested passc-dyn.exp
36 return -1
c906108c 37}
f8b7eaf3
DJ
38gdb_load $binfile
39gdb_test "tstop" "" ""
40gdb_test "tfind none" "" ""
41runto_main
c906108c
SS
42gdb_reinitialize_dir $srcdir/$subdir
43
44# We generously give ourselves one "pass" if we successfully
45# detect that this test cannot be run on this target!
46if { ![gdb_target_supports_trace] } then {
5f579bc5 47 pass "Current target does not support trace"
c906108c
SS
48 return 1;
49
50}
51
52# If testing on a remote host, download the source file.
53# remote_download host $srcdir/$subdir/$srcfile
54
55
56#
57# test passcount dynamically (live target)
58#
59
60set baseline [gdb_find_recursion_test_baseline $srcfile];
61
62if { $baseline == -1 } then {
63 fail "Could not find gdb_recursion_test function"
64 return;
65}
66
67# define relative source line numbers:
68# all subsequent line numbers are relative to this first one (baseline)
69
70set testline2 [expr $baseline + 4]
71set testline3 [expr $baseline + 5]
72set testline4 [expr $baseline + 6]
73
74#
75# test passcount command semantics (live test)
76#
77
78## Set three tracepoints with three different passcounts.
79## Verify that the experiment stops after the one with the
80## lowest passcount is hit.
81
82gdb_delete_tracepoints
83set tdp2 [gdb_gettpnum "$testline2"]
84set tdp3 [gdb_gettpnum "$testline3"]
85set tdp4 [gdb_gettpnum "$testline4"]
86if { $tdp2 <= 0 || $tdp3 <= 0 || $tdp4 <= 0 } then {
87 fail "setting tracepoints"
88 return;
89}
90
91gdb_test "passcount 4 $tdp2" "Setting tracepoint $tdp2's passcount to 4" \
92 "4.5: set passcount for tracepoint $tdp2"
93gdb_test "passcount 2 $tdp3" "Setting tracepoint $tdp3's passcount to 2" \
94 "4.5: set passcount for tracepoint $tdp3"
95gdb_test "passcount 3 $tdp4" "Setting tracepoint $tdp4's passcount to 3" \
96 "4.5: set passcount for tracepoint $tdp4"
97
98gdb_test "tstart" "" ""
99
f8b7eaf3
DJ
100gdb_test "break end" "" ""
101gdb_test "continue" \
102 "Continuing.*Breakpoint $decimal, end.*" \
103 "run trace experiment"
104gdb_test "tstop" "" ""
c906108c
SS
105
106gdb_test "tfind none" "" ""
107if [gdb_test "printf \"x \%d x\\n\", \$trace_frame" "x -1 x" ""] {
b60f0898
JB
108 untested passc-dyn.exp
109 return -1
c906108c
SS
110}
111
112gdb_test "tfind tracepoint $tdp2" "" ""
113if [gdb_test "printf \"x \%d x\\n\", \$trace_frame" "x 0 x" ""] {
b60f0898
JB
114 untested passc-dyn.exp
115 return -1
c906108c
SS
116}
117
118gdb_test "tfind tracepoint $tdp3" "" ""
119if [gdb_test "printf \"x \%d x\\n\", \$trace_frame" "x 1 x" ""] {
b60f0898
JB
120 untested passc-dyn.exp
121 return -1
c906108c
SS
122}
123
124gdb_test "tfind tracepoint $tdp4" "" ""
125if [gdb_test "printf \"x \%d x\\n\", \$trace_frame" "x 2 x" ""] {
b60f0898
JB
126 untested passc-dyn.exp
127 return -1
c906108c
SS
128}
129
130gdb_test "tfind tracepoint $tdp2" "" ""
131if [gdb_test "printf \"x \%d x\\n\", \$trace_frame" "x 3 x" ""] {
b60f0898
JB
132 untested passc-dyn.exp
133 return -1
c906108c
SS
134}
135
136gdb_test "tfind tracepoint $tdp3" "" ""
137if [gdb_test "printf \"x \%d x\\n\", \$trace_frame" "x 4 x" ""] {
b60f0898
JB
138 untested passc-dyn.exp
139 return -1
c906108c
SS
140}
141
142## We should now be at the last frame, because this frame's passcount
143## should have caused collection to stop. If we do a tfind now,
144## it should fail.
145
146gdb_test "tfind" "failed to find.*" "4.5: dynamic passcount test"
147
148# Finished!
149gdb_test "tfind none" "" ""
150
This page took 0.923092 seconds and 4 git commands to generate.