1 # Copyright
1995-2019 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 if [target_info
exists gdb
,nosignals
] {
17 verbose
"Skipping sigall.exp because of nosignals."
23 if {[prepare_for_testing
"failed to prepare" $testfile $srcfile debug]} {
27 proc test_one_sig
{nextsig
} {
32 set this_sig_supported $sig_supported
33 gdb_test
"handle SIG$thissig stop print" \
34 "SIG$thissig\[ \t\]*Yes\[ \t\]*Yes\[ \t\]*Yes.*"
35 gdb_test
"b handle_$thissig" "Breakpoint \[0-9\]+ .*"
36 gdb_test
"b gen_$nextsig" "Breakpoint \[0-9\]+ .*"
38 set need_another_continue
1
40 if $this_sig_supported
then {
43 if { $thissig
== "IO" } {
44 setup_xfail
"i*86-pc-linuxoldld-gnu" "i*86-pc-linuxaout-gnu"
46 #
On Linux SPARC64 systems SIGLOST
==SIGPWR and gdb identifies
47 # the raised
signal as PWR.
48 if { $thissig
== "LOST" && [ istarget "sparc64-*-linux*" ] } then {
53 "Continuing.*Program received signal SIG$esig.*" \
57 if $need_another_continue
then {
58 if { $thissig
== "URG" } {
59 setup_xfail
"i*86-pc-linuxoldld-gnu" "i*86-pc-linuxaout-gnu"
61 # Either Lynx or GDB screws up
on SIGPRIO
62 if { $thissig
== "PRIO" } {
63 setup_xfail
"*-*-*lynx*"
65 gdb_test_multiple
"continue" "send signal $thissig" {
66 -re
"Breakpoint.*handle_$thissig.*$gdb_prompt $" {
67 pass
"send signal $thissig"
69 -re
"Breakpoint.*gen_$nextsig.*kill.*$gdb_prompt $" {
70 fail
"missed breakpoint at handle_$thissig"
76 if { $missed_handler
== "0" } then {
77 gdb_test_multiple
"signal 0" "advance to $nextsig" {
78 -re
"Breakpoint.*gen_$nextsig.*\r\n\[0-9\]+\[ \t\]+kill \\(.*\r\n$gdb_prompt $" {
79 pass
"advance to $nextsig"
82 -re
"Breakpoint.*gen_$nextsig.*\r\n\[0-9\]+\[ \t\]+handle_.*\r\n$gdb_prompt $" {
83 pass
"advance to $nextsig"
91 # The list of signals that the
program generates
, in the order they
167 # Make the first
signal SIGABRT because it is always supported.
173 foreach sig
[lrange $signals
1 end
] {
177 # The last
signal (SIGTERM
) gets handled slightly differently because
178 # we are not setting up
for another test.
179 gdb_test
"handle SIGTERM stop print" \
180 "SIGTERM\[ \t\]*Yes\[ \t\]*Yes\[ \t\]*Yes.*"
181 gdb_test
"b handle_TERM" "Breakpoint \[0-9\]+ .*"
182 gdb_test
"continue" \
183 "Continuing.*Program received signal SIGTERM.*" \
185 gdb_test
"continue" "Breakpoint.*handle_TERM.*" "send signal TERM"
186 gdb_continue_to_end
"continue to sigall exit"