* gdb.stabs/weird.exp: Remove directory-checking code. Use
[deliverable/binutils-gdb.git] / gdb / testsuite / gdb.reverse / finish-reverse.exp
CommitLineData
c5a57081 1# Copyright 2008-2012 Free Software Foundation, Inc.
28d41a99
MS
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 is part of the GDB testsuite. It tests 'finish' with
17# reverse debugging.
18
d3895d7d 19if ![supports_reverse] {
28d41a99
MS
20 return
21}
22
23set testfile "finish-reverse"
24set srcfile ${testfile}.c
25
26if { [prepare_for_testing $testfile.exp "$testfile" $srcfile] } {
27 return -1
28}
29
28d41a99
MS
30runto main
31
d3895d7d 32if [supports_process_record] {
28d41a99 33 # Activate process record/replay
bcd2dc50 34 gdb_test_no_output "record" "Turn on process record"
28d41a99
MS
35}
36
37# Test finish from void func
38
39set breakloc [gdb_get_line_number "VOID FUNC" "$srcfile"]
40gdb_test "break void_func" \
41 "Breakpoint $decimal at .*/$srcfile, line $breakloc\." \
42 "set breakpoint on void_func"
43gdb_continue_to_breakpoint "void_func" ".*/$srcfile:$breakloc.*"
44
45set test_msg "finish from void_func"
46gdb_test_multiple "finish" "$test_msg" {
47 -re " call to void_func .*$gdb_prompt $" {
48 send_gdb "step\n"
49 exp_continue
50 }
51 -re " void_checkpoint .*$gdb_prompt $" {
52 pass "$test_msg"
53 }
54}
55
56# Test finish from char func
57
58set breakloc [gdb_get_line_number "CHAR FUNC" "$srcfile"]
59gdb_test "break char_func" \
60 "Breakpoint $decimal at .*/$srcfile, line $breakloc\." \
61 "set breakpoint on char_func"
62gdb_continue_to_breakpoint "char_func" ".*/$srcfile:$breakloc.*"
63
64set test_msg "finish from char_func"
65gdb_test_multiple "finish" "$test_msg" {
66 -re " void_checkpoint .*$gdb_prompt $" {
67 send_gdb "step\n"
68 exp_continue
69 }
70 -re " char_checkpoint .*$gdb_prompt $" {
71 pass "$test_msg"
72 }
73}
74
75# Test finish from short func
76
77set breakloc [gdb_get_line_number "SHORT FUNC" "$srcfile"]
78gdb_test "break short_func" \
79 "Breakpoint $decimal at .* line $breakloc\." \
80 "set breakpoint on short_func"
81gdb_continue_to_breakpoint "short_func" ".*/$srcfile:$breakloc.*"
82
83set test_msg "finish from short_func"
84gdb_test_multiple "finish" "$test_msg" {
85 -re " char_checkpoint .*$gdb_prompt $" {
86 send_gdb "step\n"
87 exp_continue
88 }
89 -re " short_checkpoint .*$gdb_prompt $" {
90 pass "$test_msg"
91 }
92}
93
94# Test finish from int func
95
96set breakloc [gdb_get_line_number "INT FUNC" "$srcfile"]
97gdb_test "break int_func" \
98 "Breakpoint $decimal at .* line $breakloc\." \
99 "set breakpoint on int_func"
100gdb_continue_to_breakpoint "int_func" ".*/$srcfile:$breakloc.*"
101
102set test_msg "finish from int_func"
103gdb_test_multiple "finish" "$test_msg" {
104 -re " short_checkpoint .*$gdb_prompt $" {
105 send_gdb "step\n"
106 exp_continue
107 }
108 -re " int_checkpoint .*$gdb_prompt $" {
109 pass "$test_msg"
110 }
111}
112
113# Test finish from long func
114
115set breakloc [gdb_get_line_number "LONG FUNC" "$srcfile"]
116gdb_test "break long_func" \
117 "Breakpoint $decimal at .* line $breakloc\." \
118 "set breakpoint on long_func"
119gdb_continue_to_breakpoint "long_func" ".*/$srcfile:$breakloc.*"
120
121set test_msg "finish from long_func"
122gdb_test_multiple "finish" "$test_msg" {
123 -re " int_checkpoint .*$gdb_prompt $" {
124 send_gdb "step\n"
125 exp_continue
126 }
127 -re " long_checkpoint .*$gdb_prompt $" {
128 pass "$test_msg"
129 }
130}
131
132# Test finish from long long func
133
134set breakloc [gdb_get_line_number "LONG LONG FUNC" "$srcfile"]
135gdb_test "break long_long_func" \
136 "Breakpoint $decimal at .* line $breakloc\." \
137 "set breakpoint on long_long_func"
138gdb_continue_to_breakpoint "long_long_func" ".*/$srcfile:$breakloc.*"
139
140set test_msg "finish from long_long_func"
141gdb_test_multiple "finish" "$test_msg" {
142 -re " long_checkpoint .*$gdb_prompt $" {
143 send_gdb "step\n"
144 exp_continue
145 }
146 -re " long_long_checkpoint .*$gdb_prompt $" {
147 pass "$test_msg"
148 }
149}
150
151
152###
153###
154###
155
156# Now switch to reverse
bcd2dc50 157gdb_test_no_output "set exec-dir reverse" "set reverse execution"
28d41a99
MS
158
159# Test reverse finish from long long func
160
161set breakloc [gdb_get_line_number "LONG LONG FUNC" "$srcfile"]
162gdb_continue_to_breakpoint "long_long_func" ".*/$srcfile:$breakloc.*"
163
164set test_msg "reverse finish from long_long_func"
165gdb_test_multiple "finish" "$test_msg" {
166 -re ".* long_checkpoint.*$gdb_prompt $" {
dcd5da87 167 pass "$test_msg"
28d41a99
MS
168 }
169}
170
171# Test reverse finish from long func
172
173set breakloc [gdb_get_line_number "LONG FUNC" "$srcfile"]
174gdb_continue_to_breakpoint "long_func" ".*/$srcfile:$breakloc.*"
175
176set test_msg "reverse finish from long_func"
177gdb_test_multiple "finish" "$test_msg" {
178 -re ".* int_checkpoint.*$gdb_prompt $" {
dcd5da87 179 pass "$test_msg"
28d41a99
MS
180 }
181}
182
183# Test reverse finish from int func
184
185set breakloc [gdb_get_line_number "INT FUNC" "$srcfile"]
186gdb_continue_to_breakpoint "int_func" ".*/$srcfile:$breakloc.*"
187
188set test_msg "reverse finish from int_func"
189gdb_test_multiple "finish" "$test_msg" {
190 -re ".* short_checkpoint.*$gdb_prompt $" {
dcd5da87 191 pass "$test_msg"
28d41a99
MS
192 }
193}
194
195# Test reverse finish from short func
196
197set breakloc [gdb_get_line_number "SHORT FUNC" "$srcfile"]
198gdb_continue_to_breakpoint "short_func" ".*/$srcfile:$breakloc.*"
199
200set test_msg "reverse finish from short_func"
201gdb_test_multiple "finish" "$test_msg" {
202 -re ".* char_checkpoint.*$gdb_prompt $" {
dcd5da87 203 pass "$test_msg"
28d41a99
MS
204 }
205}
206
207# Test reverse finish from char func
208
209set breakloc [gdb_get_line_number "CHAR FUNC" "$srcfile"]
210gdb_continue_to_breakpoint "char_func" ".*/$srcfile:$breakloc.*"
211
212set test_msg "reverse finish from char_func"
213gdb_test_multiple "finish" "$test_msg" {
214 -re ".* void_checkpoint.*$gdb_prompt $" {
dcd5da87 215 pass "$test_msg"
28d41a99
MS
216 }
217}
218
219# Test reverse finish from void func
220
221set breakloc [gdb_get_line_number "VOID FUNC" "$srcfile"]
222gdb_continue_to_breakpoint "void_func" ".*/$srcfile:$breakloc.*"
223
224set test_msg "reverse finish from void_func"
225gdb_test_multiple "finish" "$test_msg" {
226 -re ".* call to void_func.*$gdb_prompt $" {
dcd5da87 227 pass "$test_msg"
28d41a99
MS
228 }
229}
This page took 0.362374 seconds and 4 git commands to generate.