]> Git Repo - binutils.git/blame - gdb/testsuite/gdb.reverse/sigall-precsave.exp
* gdb.reverse/break-precsave.exp: Use standard_output_file.
[binutils.git] / gdb / testsuite / gdb.reverse / sigall-precsave.exp
CommitLineData
c5a57081 1# Copyright 2009-2012 Free Software Foundation, Inc.
02506ff1
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
16if [target_info exists gdb,nosignals] {
3b48433d 17 verbose "Skipping sigall-precsave.exp because of nosignals."
02506ff1
MS
18 return
19}
20
d3895d7d 21if ![supports_reverse] {
02506ff1
MS
22 return
23}
24
02506ff1
MS
25
26gdb_exit
27gdb_start
28gdb_reinitialize_dir $srcdir/$subdir
29
7686c074 30standard_testfile sigall-reverse.c
55baab26 31set precsave [standard_output_file sigall.precsave]
7686c074
TT
32
33if {[build_executable $testfile.exp $testfile $srcfile debug] == -1} {
34 return -1
02506ff1
MS
35}
36
37# Make the first signal SIGABRT because it is always supported.
38set sig_supported 1
39set thissig "ABRT"
40
41proc test_one_sig {nextsig} {
42 global sig_supported
43 global gdb_prompt
44 global thissig
45
46 set this_sig_supported $sig_supported
47 gdb_test "handle SIG$thissig stop print" \
48 "SIG$thissig\[ \t\]*Yes\[ \t\]*Yes\[ \t\]*Yes.*"
49 gdb_test "b handle_$thissig" "Breakpoint \[0-9\]+ .*"
50 gdb_test "b gen_$nextsig" "Breakpoint \[0-9\]+ .*"
51
52 set need_another_continue 1
53 set missed_handler 0
54 if $this_sig_supported then {
55 if { $thissig == "IO" } {
56 setup_xfail "i*86-pc-linuxoldld-gnu" "i*86-pc-linuxaout-gnu"
57 }
58 set testmsg "get signal $thissig"
59 gdb_test_multiple "continue" $testmsg {
60 -re "Program received signal SIG$thissig.*handle_$thissig.*$gdb_prompt $" {
61 fail "$testmsg (wrong location)"
62 }
63 -re "Program received signal SIG$thissig.*$gdb_prompt $" {
64 pass $testmsg
65 }
66 -re "Breakpoint.* handle_$thissig.*$gdb_prompt $" {
67 xfail $testmsg
68 set need_another_continue 0
69 }
70 }
71 }
72 if [ istarget "alpha-dec-osf3*" ] then {
73 # OSF/1-3.x is unable to continue with a job control stop signal.
74 # The inferior remains stopped without an event of interest
75 # and GDB waits forever for the inferior to stop on an event
76 # of interest. Work around the kernel bug.
77 if { $thissig == "TSTP" || $thissig == "TTIN" || $thissig == "TTOU" } {
78 setup_xfail "alpha-dec-osf3*"
79 fail "cannot continue from signal $thissig"
80 set need_another_continue 0
81 }
82 }
83
84 if $need_another_continue then {
85 if { $thissig == "URG" } {
86 setup_xfail "i*86-pc-linuxoldld-gnu" "i*86-pc-linuxaout-gnu"
87 }
88 # Either Lynx or GDB screws up on SIGPRIO
89 if { $thissig == "PRIO" } {
90 setup_xfail "*-*-*lynx*"
91 }
92 set testmsg "send signal $thissig"
93 gdb_test_multiple "continue" $testmsg {
94 -re "Breakpoint.*handle_$thissig.*$gdb_prompt $" {
95 pass $testmsg
96 }
97 -re "Breakpoint.*gen_$nextsig.*kill.*$gdb_prompt $" {
98 fail "missed breakpoint at handle_$thissig"
99 set missed_handler 1
100 }
101 }
102 }
103
104 if { $missed_handler == "0" } then {
105 set testmsg "advance to $nextsig"
106 gdb_test_multiple "signal 0" $testmsg {
107 -re "Breakpoint.*gen_$nextsig.*kill.*$gdb_prompt $" {
108 pass $testmsg
109 set sig_supported 1
110 }
111 -re "Breakpoint.*gen_$nextsig.*handle.*$gdb_prompt $" {
112 pass $testmsg
113 set sig_supported 0
114 }
115 }
116 }
117 set thissig $nextsig
118}
119
120proc test_one_sig_reverse {prevsig} {
121 global gdb_prompt
122
123 gdb_test "reverse-continue" "Breakpoint .* handle_$prevsig.*" \
124 "reverse to handler of $prevsig"
125
126 set saw_signal 0
127 set testmsg "reverse to gen_$prevsig"
128 gdb_test_multiple "reverse-continue" $testmsg {
129 -re "Breakpoint.*handle_.*$gdb_prompt " {
130 pass "$testmsg (un-handled)"
131 }
132 -re "Program received signal SIG$prevsig.*$gdb_prompt " {
133 pass "reverse to signal event, $prevsig"
134
135 set nested_testmsg "reverse signal delivered"
136 gdb_test_multiple "frame" $nested_testmsg {
137 -re ".*handle_$prevsig.*$gdb_prompt " {
138 fail "$nested_testmsg (wrong location)"
139 }
140 -re ".*$gdb_prompt " {
141 pass $nested_testmsg
142 }
143 }
144
145 set saw_signal 1
146 send_gdb "reverse-continue\n"
147 exp_continue
148 }
149 -re "Breakpoint.*kill.*$gdb_prompt " {
150 if { $saw_signal } then {
151 pass "$testmsg (handled)"
152 } else {
153 xfail "$testmsg (handled)"
154 }
155 }
156 -re "No more reverse-execution history.*kill.*$gdb_prompt " {
157 if { $saw_signal } then {
158 pass "$testmsg (handled)"
159 } else {
160 xfail "$testmsg (handled)"
161 }
162 }
163 }
164}
165
166gdb_load $binfile
167
168runto gen_ABRT
169
d3895d7d 170if [supports_process_record] {
02506ff1 171 # Activate process record/replay
bcd2dc50 172 gdb_test_no_output "record" "Turn on process record"
02506ff1
MS
173}
174
175# Run until end, then save execution log.
176
177set breakloc [gdb_get_line_number "end of main" "$srcfile"]
178gdb_test "break $breakloc" \
179 "Breakpoint $decimal at .*/$srcfile, line $breakloc\." \
180 "BP at end of main"
181
182# Signal handlers must be disabled
183gdb_test "handle all nostop noprint"
184
185gdb_test "continue" "Breakpoint .* end of main .*" "run to end of main"
186
55baab26
TT
187gdb_test "record save $precsave" \
188 "Saved core file $precsave with execution log\." \
02506ff1
MS
189 "save process recfile"
190
191gdb_test "kill" "" "Kill process, prepare to debug log file" \
192 "Kill the program being debugged\\? \\(y or n\\) " "y"
193
55baab26 194gdb_test "record restore $precsave" \
02506ff1
MS
195 "Program terminated with signal .*" \
196 "reload precord save file"
197
198# Signal handlers must be re-enabled
199gdb_test "handle all stop print"
200
201# test signal handling
202test_one_sig HUP
203test_one_sig QUIT
204test_one_sig ILL
205test_one_sig EMT
206test_one_sig FPE
207test_one_sig BUS
208test_one_sig SEGV
209test_one_sig SYS
210test_one_sig PIPE
211test_one_sig ALRM
212test_one_sig URG
213test_one_sig TSTP
214test_one_sig CONT
215test_one_sig CHLD
216test_one_sig TTIN
217test_one_sig TTOU
218test_one_sig IO
219test_one_sig XCPU
220test_one_sig XFSZ
221test_one_sig VTALRM
222test_one_sig PROF
223test_one_sig WINCH
224test_one_sig LOST
225test_one_sig USR1
226test_one_sig USR2
227test_one_sig PWR
228test_one_sig POLL
229test_one_sig WIND
230test_one_sig PHONE
231test_one_sig WAITING
232test_one_sig LWP
233test_one_sig DANGER
234test_one_sig GRANT
235test_one_sig RETRACT
236test_one_sig MSG
237test_one_sig SOUND
238test_one_sig SAK
239test_one_sig PRIO
240test_one_sig 33
241test_one_sig 34
242test_one_sig 35
243test_one_sig 36
244test_one_sig 37
245test_one_sig 38
246test_one_sig 39
247test_one_sig 40
248test_one_sig 41
249test_one_sig 42
250test_one_sig 43
251test_one_sig 44
252test_one_sig 45
253test_one_sig 46
254test_one_sig 47
255test_one_sig 48
256test_one_sig 49
257test_one_sig 50
258test_one_sig 51
259test_one_sig 52
260test_one_sig 53
261test_one_sig 54
262test_one_sig 55
263test_one_sig 56
264test_one_sig 57
265test_one_sig 58
266test_one_sig 59
267test_one_sig 60
268test_one_sig 61
269test_one_sig 62
270test_one_sig 63
271test_one_sig TERM
272
273# The last signal (SIGTERM) gets handled slightly differently because
274# we are not setting up for another test.
275gdb_test "handle SIGTERM stop print" \
276 "SIGTERM\[ \t\]*Yes\[ \t\]*Yes\[ \t\]*Yes.*"
277gdb_test "b handle_TERM" "Breakpoint \[0-9\]+ .*"
278gdb_test "continue" \
279 "Continuing.*Program received signal SIGTERM.*" \
280 "get signal TERM"
281gdb_test "continue" "Breakpoint.*handle_TERM.*" "send signal TERM"
282
283gdb_test "continue" " end of main .*" "continue to sigall exit"
284
285test_one_sig_reverse TERM
286test_one_sig_reverse 63
287test_one_sig_reverse 62
288test_one_sig_reverse 61
289test_one_sig_reverse 60
290test_one_sig_reverse 59
291test_one_sig_reverse 58
292test_one_sig_reverse 57
293test_one_sig_reverse 56
294test_one_sig_reverse 55
295test_one_sig_reverse 54
296test_one_sig_reverse 53
297test_one_sig_reverse 52
298test_one_sig_reverse 51
299test_one_sig_reverse 50
300test_one_sig_reverse 49
301test_one_sig_reverse 48
302test_one_sig_reverse 47
303test_one_sig_reverse 46
304test_one_sig_reverse 45
305test_one_sig_reverse 44
306test_one_sig_reverse 43
307test_one_sig_reverse 42
308test_one_sig_reverse 41
309test_one_sig_reverse 40
310test_one_sig_reverse 39
311test_one_sig_reverse 38
312test_one_sig_reverse 37
313test_one_sig_reverse 36
314test_one_sig_reverse 35
315test_one_sig_reverse 34
316test_one_sig_reverse 33
317test_one_sig_reverse PRIO
318test_one_sig_reverse SAK
319test_one_sig_reverse SOUND
320test_one_sig_reverse MSG
321test_one_sig_reverse RETRACT
322test_one_sig_reverse GRANT
323test_one_sig_reverse DANGER
324test_one_sig_reverse LWP
325test_one_sig_reverse WAITING
326test_one_sig_reverse PHONE
327test_one_sig_reverse WIND
328test_one_sig_reverse POLL
329test_one_sig_reverse PWR
330test_one_sig_reverse USR2
331test_one_sig_reverse USR1
332test_one_sig_reverse LOST
333test_one_sig_reverse WINCH
334test_one_sig_reverse PROF
335test_one_sig_reverse VTALRM
336test_one_sig_reverse XFSZ
337test_one_sig_reverse XCPU
338test_one_sig_reverse IO
339test_one_sig_reverse TTOU
340test_one_sig_reverse TTIN
341test_one_sig_reverse CHLD
342test_one_sig_reverse CONT
343test_one_sig_reverse TSTP
344test_one_sig_reverse URG
345test_one_sig_reverse ALRM
346test_one_sig_reverse PIPE
347test_one_sig_reverse SYS
348test_one_sig_reverse SEGV
349test_one_sig_reverse BUS
350test_one_sig_reverse FPE
351test_one_sig_reverse EMT
352test_one_sig_reverse ILL
353test_one_sig_reverse QUIT
354test_one_sig_reverse HUP
355test_one_sig_reverse ABRT
356
357# Make the first signal SIGABRT because it is always supported.
358set sig_supported 1
359set thissig "ABRT"
360
361test_one_sig HUP
362test_one_sig QUIT
363test_one_sig ILL
364test_one_sig EMT
365test_one_sig FPE
366test_one_sig BUS
367test_one_sig SEGV
368test_one_sig SYS
369test_one_sig PIPE
370test_one_sig ALRM
371test_one_sig URG
372test_one_sig TSTP
373test_one_sig CONT
374test_one_sig CHLD
375test_one_sig TTIN
376test_one_sig TTOU
377test_one_sig IO
378test_one_sig XCPU
379test_one_sig XFSZ
380test_one_sig VTALRM
381test_one_sig PROF
382test_one_sig WINCH
383test_one_sig LOST
384test_one_sig USR1
385test_one_sig USR2
386test_one_sig PWR
387test_one_sig POLL
388test_one_sig WIND
389test_one_sig PHONE
390test_one_sig WAITING
391test_one_sig LWP
392test_one_sig DANGER
393test_one_sig GRANT
394test_one_sig RETRACT
395test_one_sig MSG
396test_one_sig SOUND
397test_one_sig SAK
398test_one_sig PRIO
399test_one_sig 33
400test_one_sig 34
401test_one_sig 35
402test_one_sig 36
403test_one_sig 37
404test_one_sig 38
405test_one_sig 39
406test_one_sig 40
407test_one_sig 41
408test_one_sig 42
409test_one_sig 43
410test_one_sig 44
411test_one_sig 45
412test_one_sig 46
413test_one_sig 47
414test_one_sig 48
415test_one_sig 49
416test_one_sig 50
417test_one_sig 51
418test_one_sig 52
419test_one_sig 53
420test_one_sig 54
421test_one_sig 55
422test_one_sig 56
423test_one_sig 57
424test_one_sig 58
425test_one_sig 59
426test_one_sig 60
427test_one_sig 61
428test_one_sig 62
429test_one_sig 63
430test_one_sig TERM
This page took 0.899865 seconds and 4 git commands to generate.