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