Update copyright year range in all GDB files.
[deliverable/binutils-gdb.git] / gdb / testsuite / gdb.base / sigall.exp
1 # Copyright 1995-2019 Free Software Foundation, Inc.
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 if [target_info exists gdb,nosignals] {
17 verbose "Skipping sigall.exp because of nosignals."
18 continue
19 }
20
21 standard_testfile
22
23 if {[prepare_for_testing "failed to prepare" $testfile $srcfile debug]} {
24 return -1
25 }
26
27 proc test_one_sig {nextsig} {
28 global sig_supported
29 global gdb_prompt
30 global thissig
31
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\]+ .*"
37
38 set need_another_continue 1
39 set missed_handler 0
40 if $this_sig_supported then {
41 set esig $thissig
42
43 if { $thissig == "IO" } {
44 setup_xfail "i*86-pc-linuxoldld-gnu" "i*86-pc-linuxaout-gnu"
45 }
46 # On Linux SPARC64 systems SIGLOST==SIGPWR and gdb identifies
47 # the raised signal as PWR.
48 if { $thissig == "LOST" && [ istarget "sparc64-*-linux*" ] } then {
49 set esig "PWR"
50 }
51
52 gdb_test "continue" \
53 "Continuing.*Program received signal SIG$esig.*" \
54 "get signal $esig"
55 }
56
57 if $need_another_continue then {
58 if { $thissig == "URG" } {
59 setup_xfail "i*86-pc-linuxoldld-gnu" "i*86-pc-linuxaout-gnu"
60 }
61 # Either Lynx or GDB screws up on SIGPRIO
62 if { $thissig == "PRIO" } {
63 setup_xfail "*-*-*lynx*"
64 }
65 gdb_test_multiple "continue" "send signal $thissig" {
66 -re "Breakpoint.*handle_$thissig.*$gdb_prompt $" {
67 pass "send signal $thissig"
68 }
69 -re "Breakpoint.*gen_$nextsig.*kill.*$gdb_prompt $" {
70 fail "missed breakpoint at handle_$thissig"
71 set missed_handler 1
72 }
73 }
74 }
75
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"
80 set sig_supported 1
81 }
82 -re "Breakpoint.*gen_$nextsig.*\r\n\[0-9\]+\[ \t\]+handle_.*\r\n$gdb_prompt $" {
83 pass "advance to $nextsig"
84 set sig_supported 0
85 }
86 }
87 }
88 set thissig $nextsig
89 }
90
91 # The list of signals that the program generates, in the order they
92 # are generated.
93 set signals {
94 ABRT
95 HUP
96 QUIT
97 ILL
98 EMT
99 FPE
100 BUS
101 SEGV
102 SYS
103 PIPE
104 ALRM
105 URG
106 TSTP
107 CONT
108 CHLD
109 TTIN
110 TTOU
111 IO
112 XCPU
113 XFSZ
114 VTALRM
115 PROF
116 WINCH
117 LOST
118 USR1
119 USR2
120 PWR
121 POLL
122 WIND
123 PHONE
124 WAITING
125 LWP
126 DANGER
127 GRANT
128 RETRACT
129 MSG
130 SOUND
131 SAK
132 PRIO
133 33
134 34
135 35
136 36
137 37
138 38
139 39
140 40
141 41
142 42
143 43
144 44
145 45
146 46
147 47
148 48
149 49
150 50
151 51
152 52
153 53
154 54
155 55
156 56
157 57
158 58
159 59
160 60
161 61
162 62
163 63
164 TERM
165 }
166
167 # Make the first signal SIGABRT because it is always supported.
168 set sig_supported 1
169 set thissig "ABRT"
170
171 runto gen_ABRT
172
173 foreach sig [lrange $signals 1 end] {
174 test_one_sig $sig
175 }
176
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.*" \
184 "get signal TERM"
185 gdb_test "continue" "Breakpoint.*handle_TERM.*" "send signal TERM"
186 gdb_continue_to_end "continue to sigall exit"
187
188 return 0
This page took 0.038349 seconds and 4 git commands to generate.