1 /* This testcase is part of GDB, the GNU debugger.
3 Copyright 2009-2014 Free Software Foundation, Inc.
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 3 of the License, or
8 (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. */
22 /* Signal handlers, we set breakpoints in them to make sure that the
23 signals really get delivered. */
101 handle_TTIN (int sig
)
106 handle_TTOU (int sig
)
116 handle_XCPU (int sig
)
121 handle_XFSZ (int sig
)
126 handle_VTALRM (int sig
)
131 handle_PROF (int sig
)
136 handle_WINCH (int sig
)
141 handle_LOST (int sig
)
146 handle_USR1 (int sig
)
151 handle_USR2 (int sig
)
161 handle_POLL (int sig
)
166 handle_WIND (int sig
)
171 handle_PHONE (int sig
)
176 handle_WAITING (int sig
)
186 handle_DANGER (int sig
)
191 handle_GRANT (int sig
)
196 handle_RETRACT (int sig
)
206 handle_SOUND (int sig
)
216 handle_PRIO (int sig
)
376 handle_TERM (int sig
)
380 /* Functions to send signals. These also serve as markers. */
384 kill (getpid (), SIGABRT
);
392 kill (getpid (), SIGHUP
);
403 kill (getpid (), SIGQUIT
);
413 kill (getpid (), SIGILL
);
421 kill (getpid (), SIGEMT
);
433 /* The intent behind generating SIGFPE this way is to check the mapping
434 from the CPU exception itself to the signals. It would be nice to
435 do the same for SIGBUS, SIGSEGV, etc., but I suspect that even this
436 test might turn out to be insufficiently portable. */
439 /* Loses on the PA because after the signal handler executes we try to
440 re-execute the failing instruction again. Perhaps we could siglongjmp
441 out of the signal handler? */
442 /* The expect script looks for the word "kill"; don't delete it. */
443 return 5 / x
; /* and we both started jumping up and down yelling kill */
445 kill (getpid (), SIGFPE
);
454 kill (getpid (), SIGBUS
);
464 kill (getpid (), SIGSEGV
);
472 kill (getpid (), SIGSYS
);
483 kill (getpid (), SIGPIPE
);
494 kill (getpid (), SIGALRM
);
505 kill (getpid (), SIGURG
);
516 kill (getpid (), SIGTSTP
);
527 kill (getpid (), SIGCONT
);
538 kill (getpid (), SIGCHLD
);
549 kill (getpid (), SIGTTIN
);
560 kill (getpid (), SIGTTOU
);
571 kill (getpid (), SIGIO
);
582 kill (getpid (), SIGXCPU
);
593 kill (getpid (), SIGXFSZ
);
604 kill (getpid (), SIGVTALRM
);
615 kill (getpid (), SIGPROF
);
626 kill (getpid (), SIGWINCH
);
636 #if defined(SIGLOST) && SIGLOST != SIGABRT
637 kill (getpid (), SIGLOST
);
648 kill (getpid (), SIGUSR1
);
659 kill (getpid (), SIGUSR2
);
670 kill (getpid (), SIGPWR
);
680 #if defined (SIGPOLL) && (!defined (SIGIO) || SIGPOLL != SIGIO)
681 kill (getpid (), SIGPOLL
);
692 kill (getpid (), SIGWIND
);
703 kill (getpid (), SIGPHONE
);
714 kill (getpid (), SIGWAITING
);
725 kill (getpid (), SIGLWP
);
736 kill (getpid (), SIGDANGER
);
747 kill (getpid (), SIGGRANT
);
758 kill (getpid (), SIGRETRACT
);
769 kill (getpid (), SIGMSG
);
780 kill (getpid (), SIGSOUND
);
791 kill (getpid (), SIGSAK
);
802 kill (getpid (), SIGPRIO
);
813 kill (getpid (), 33);
824 kill (getpid (), 34);
835 kill (getpid (), 35);
846 kill (getpid (), 36);
857 kill (getpid (), 37);
868 kill (getpid (), 38);
879 kill (getpid (), 39);
890 kill (getpid (), 40);
901 kill (getpid (), 41);
912 kill (getpid (), 42);
923 kill (getpid (), 43);
934 kill (getpid (), 44);
945 kill (getpid (), 45);
956 kill (getpid (), 46);
967 kill (getpid (), 47);
978 kill (getpid (), 48);
989 kill (getpid (), 49);
1000 kill (getpid (), 50);
1011 kill (getpid (), 51);
1022 kill (getpid (), 52);
1033 kill (getpid (), 53);
1044 kill (getpid (), 54);
1055 kill (getpid (), 55);
1066 kill (getpid (), 56);
1077 kill (getpid (), 57);
1088 kill (getpid (), 58);
1099 kill (getpid (), 59);
1110 kill (getpid (), 60);
1121 kill (getpid (), 61);
1132 kill (getpid (), 62);
1143 kill (getpid (), 63);
1153 kill (getpid (), SIGTERM
);
1161 /* Ensure all the signals aren't blocked.
1162 The environment in which the testsuite is run may have blocked some
1163 for whatever reason. */
1166 sigemptyset (&newset
);
1167 sigprocmask (SIG_SETMASK
, &newset
, NULL
);
1171 signal (SIGABRT
, handle_ABRT
);
1173 signal (SIGHUP
, handle_HUP
);
1176 signal (SIGQUIT
, handle_QUIT
);
1178 signal (SIGILL
, handle_ILL
);
1180 signal (SIGEMT
, handle_EMT
);
1182 signal (SIGFPE
, handle_FPE
);
1184 signal (SIGBUS
, handle_BUS
);
1186 signal (SIGSEGV
, handle_SEGV
);
1188 signal (SIGSYS
, handle_SYS
);
1191 signal (SIGPIPE
, handle_PIPE
);
1194 signal (SIGALRM
, handle_ALRM
);
1197 signal (SIGURG
, handle_URG
);
1200 signal (SIGTSTP
, handle_TSTP
);
1203 signal (SIGCONT
, handle_CONT
);
1206 signal (SIGCHLD
, handle_CHLD
);
1209 signal (SIGTTIN
, handle_TTIN
);
1212 signal (SIGTTOU
, handle_TTOU
);
1215 signal (SIGIO
, handle_IO
);
1218 signal (SIGXCPU
, handle_XCPU
);
1221 signal (SIGXFSZ
, handle_XFSZ
);
1224 signal (SIGVTALRM
, handle_VTALRM
);
1227 signal (SIGPROF
, handle_PROF
);
1230 signal (SIGWINCH
, handle_WINCH
);
1232 #if defined(SIGLOST) && SIGLOST != SIGABRT
1233 signal (SIGLOST
, handle_LOST
);
1236 signal (SIGUSR1
, handle_USR1
);
1239 signal (SIGUSR2
, handle_USR2
);
1242 signal (SIGPWR
, handle_PWR
);
1244 #if defined (SIGPOLL) && (!defined (SIGIO) || SIGPOLL != SIGIO)
1245 signal (SIGPOLL
, handle_POLL
);
1248 signal (SIGWIND
, handle_WIND
);
1251 signal (SIGPHONE
, handle_PHONE
);
1254 signal (SIGWAITING
, handle_WAITING
);
1257 signal (SIGLWP
, handle_LWP
);
1260 signal (SIGDANGER
, handle_DANGER
);
1263 signal (SIGGRANT
, handle_GRANT
);
1266 signal (SIGRETRACT
, handle_RETRACT
);
1269 signal (SIGMSG
, handle_MSG
);
1272 signal (SIGSOUND
, handle_SOUND
);
1275 signal (SIGSAK
, handle_SAK
);
1278 signal (SIGPRIO
, handle_PRIO
);
1281 /* Lynx doesn't seem to have anything in signal.h for this. */
1282 signal (33, handle_33
);
1283 signal (34, handle_34
);
1284 signal (35, handle_35
);
1285 signal (36, handle_36
);
1286 signal (37, handle_37
);
1287 signal (38, handle_38
);
1288 signal (39, handle_39
);
1289 signal (40, handle_40
);
1290 signal (41, handle_41
);
1291 signal (42, handle_42
);
1292 signal (43, handle_43
);
1293 signal (44, handle_44
);
1294 signal (45, handle_45
);
1295 signal (46, handle_46
);
1296 signal (47, handle_47
);
1297 signal (48, handle_48
);
1298 signal (49, handle_49
);
1299 signal (50, handle_50
);
1300 signal (51, handle_51
);
1301 signal (52, handle_52
);
1302 signal (53, handle_53
);
1303 signal (54, handle_54
);
1304 signal (55, handle_55
);
1305 signal (56, handle_56
);
1306 signal (57, handle_57
);
1307 signal (58, handle_58
);
1308 signal (59, handle_59
);
1309 signal (60, handle_60
);
1310 signal (61, handle_61
);
1311 signal (62, handle_62
);
1312 signal (63, handle_63
);
1314 signal (SIGTERM
, handle_TERM
);
1390 return 0; /* end of main */