Re: ld plugin bfd_make_readable leak
[binutils-gdb.git] / gdb / testsuite / gdb.base / sigall.exp
blob94d58ae3de469cbf4c5500f0eeadb8de499ef8e0
1 #   Copyright 1995-2024 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 require {!target_info exists gdb,nosignals}
18 standard_testfile
20 if {[prepare_for_testing "failed to prepare" $testfile $srcfile debug]} {
21     return -1
24 proc test_one_sig {nextsig} {
25     global sig_supported
26     global gdb_prompt
27     global thissig
29     set this_sig_supported $sig_supported
30     gdb_test "handle SIG$thissig stop print" \
31         "SIG$thissig\[ \t\]*Yes\[ \t\]*Yes\[ \t\]*Yes.*"
32     gdb_test "b handle_$thissig" "Breakpoint \[0-9\]+ .*"
33     gdb_test "b gen_$nextsig" "Breakpoint \[0-9\]+ .*"
35     set need_another_continue 1
36     set missed_handler 0
37     if {$this_sig_supported} {
38         set esig $thissig
40         if { $thissig == "IO" } {
41             setup_xfail "i*86-pc-linuxoldld-gnu" "i*86-pc-linuxaout-gnu"
42         }
43         # On Linux SPARC64 systems SIGLOST==SIGPWR and gdb identifies
44         # the raised signal as PWR.
45         if {$thissig == "LOST" && [istarget "sparc64-*-linux*"]} {
46             set esig "PWR"
47         }
49         gdb_test "continue" \
50             "Continuing.*Program received signal SIG$esig.*" \
51                 "get signal $esig"
52     }
54     if {$need_another_continue} {
55         if { $thissig == "URG" } {
56             setup_xfail "i*86-pc-linuxoldld-gnu" "i*86-pc-linuxaout-gnu"
57         }
58         # Either Lynx or GDB screws up on SIGPRIO
59         if { $thissig == "PRIO" } {
60             setup_xfail "*-*-*lynx*"
61         }
62         gdb_test_multiple "continue" "send signal $thissig" {
63             -re "Breakpoint.*handle_$thissig.*$gdb_prompt $" {
64                 pass "send signal $thissig"
65             }
66             -re "Breakpoint.*gen_$nextsig.*kill.*$gdb_prompt $" {
67                 fail "missed breakpoint at handle_$thissig"
68                 set missed_handler 1
69             }
70         }
71     }
73     if {$missed_handler == "0"} {
74         gdb_test_multiple "signal 0" "advance to $nextsig" {
75             -re "Breakpoint.*gen_$nextsig.*\r\n\[0-9\]+\[ \t\]+kill \\(.*\r\n$gdb_prompt $" {
76                 pass "advance to $nextsig"
77                 set sig_supported 1
78             }
79             -re "Breakpoint.*gen_$nextsig.*\r\n\[0-9\]+\[ \t\]+handle_.*\r\n$gdb_prompt $" {
80                 pass "advance to $nextsig"
81                 set sig_supported 0
82             }
83         }
84     }
85     set thissig $nextsig
88 # The list of signals that the program generates, in the order they
89 # are generated.
90 set signals {
91     ABRT
92     HUP
93     QUIT
94     ILL
95     EMT
96     FPE
97     BUS
98     SEGV
99     SYS
100     PIPE
101     ALRM
102     URG
103     TSTP
104     CONT
105     CHLD
106     TTIN
107     TTOU
108     IO
109     XCPU
110     XFSZ
111     VTALRM
112     PROF
113     WINCH
114     LOST
115     USR1
116     USR2
117     PWR
118     POLL
119     WIND
120     PHONE
121     WAITING
122     LWP
123     DANGER
124     GRANT
125     RETRACT
126     MSG
127     SOUND
128     SAK
129     PRIO
130     33
131     34
132     35
133     36
134     37
135     38
136     39
137     40
138     41
139     42
140     43
141     44
142     45
143     46
144     47
145     48
146     49
147     50
148     51
149     52
150     53
151     54
152     55
153     56
154     57
155     58
156     59
157     60
158     61
159     62
160     63
161     TERM
164 # Make the first signal SIGABRT because it is always supported.
165 set sig_supported 1
166 set thissig "ABRT"
168 runto gen_ABRT
170 foreach sig [lrange $signals 1 end] {
171     test_one_sig $sig
174 # The last signal (SIGTERM) gets handled slightly differently because
175 # we are not setting up for another test.
176 gdb_test "handle SIGTERM stop print" \
177     "SIGTERM\[ \t\]*Yes\[ \t\]*Yes\[ \t\]*Yes.*"
178 gdb_test "b handle_TERM" "Breakpoint \[0-9\]+ .*"
179 gdb_test "continue" \
180     "Continuing.*Program received signal SIGTERM.*" \
181     "get signal TERM"
182 gdb_test "continue" "Breakpoint.*handle_TERM.*" "send signal TERM"
183 gdb_continue_to_end "continue to sigall exit"