[gdb/syscalls] Sync with strace v6.13
[binutils-gdb.git] / gdb / testsuite / gdb.base / sigall.c
blob81f3b08d6bc25be5c07fa1ad5236a2f3d43ef9bb
1 #include <signal.h>
2 #include <unistd.h>
5 /* Signal handlers, we set breakpoints in them to make sure that the
6 signals really get delivered. */
8 void
9 handle_ABRT (int sig)
13 void
14 handle_HUP (int sig)
18 void
19 handle_QUIT (int sig)
23 void
24 handle_ILL (int sig)
28 void
29 handle_EMT (int sig)
33 void
34 handle_FPE (int sig)
38 void
39 handle_BUS (int sig)
43 void
44 handle_SEGV (int sig)
48 void
49 handle_SYS (int sig)
53 void
54 handle_PIPE (int sig)
58 void
59 handle_ALRM (int sig)
63 void
64 handle_URG (int sig)
68 void
69 handle_TSTP (int sig)
73 void
74 handle_CONT (int sig)
78 void
79 handle_CHLD (int sig)
83 void
84 handle_TTIN (int sig)
88 void
89 handle_TTOU (int sig)
93 void
94 handle_IO (int sig)
98 void
99 handle_XCPU (int sig)
103 void
104 handle_XFSZ (int sig)
108 void
109 handle_VTALRM (int sig)
113 void
114 handle_PROF (int sig)
118 void
119 handle_WINCH (int sig)
123 void
124 handle_LOST (int sig)
128 void
129 handle_USR1 (int sig)
133 void
134 handle_USR2 (int sig)
138 void
139 handle_PWR (int sig)
143 void
144 handle_POLL (int sig)
148 void
149 handle_WIND (int sig)
153 void
154 handle_PHONE (int sig)
158 void
159 handle_WAITING (int sig)
163 void
164 handle_LWP (int sig)
168 void
169 handle_DANGER (int sig)
173 void
174 handle_GRANT (int sig)
178 void
179 handle_RETRACT (int sig)
183 void
184 handle_MSG (int sig)
188 void
189 handle_SOUND (int sig)
193 void
194 handle_SAK (int sig)
198 void
199 handle_PRIO (int sig)
203 void
204 handle_33 (int sig)
208 void
209 handle_34 (int sig)
213 void
214 handle_35 (int sig)
218 void
219 handle_36 (int sig)
223 void
224 handle_37 (int sig)
228 void
229 handle_38 (int sig)
233 void
234 handle_39 (int sig)
238 void
239 handle_40 (int sig)
243 void
244 handle_41 (int sig)
248 void
249 handle_42 (int sig)
253 void
254 handle_43 (int sig)
258 void
259 handle_44 (int sig)
263 void
264 handle_45 (int sig)
268 void
269 handle_46 (int sig)
273 void
274 handle_47 (int sig)
278 void
279 handle_48 (int sig)
283 void
284 handle_49 (int sig)
288 void
289 handle_50 (int sig)
293 void
294 handle_51 (int sig)
298 void
299 handle_52 (int sig)
303 void
304 handle_53 (int sig)
308 void
309 handle_54 (int sig)
313 void
314 handle_55 (int sig)
318 void
319 handle_56 (int sig)
323 void
324 handle_57 (int sig)
328 void
329 handle_58 (int sig)
333 void
334 handle_59 (int sig)
338 void
339 handle_60 (int sig)
343 void
344 handle_61 (int sig)
348 void
349 handle_62 (int sig)
353 void
354 handle_63 (int sig)
358 void
359 handle_TERM (int sig)
363 /* Functions to send signals. These also serve as markers.
364 Ordered ANSI-standard signals first, other signals second,
365 with signals in each block ordered by their numerical values
366 on a typical POSIX platform. */
368 /* SIGINT, SIGILL, SIGABRT, SIGFPE, SIGSEGV and SIGTERM
369 are ANSI-standard signals and are always available. */
372 gen_ILL ()
374 kill (getpid (), SIGILL);
375 return 0;
379 gen_ABRT ()
381 kill (getpid (), SIGABRT);
382 return 0;
385 int x;
388 gen_FPE ()
390 /* The intent behind generating SIGFPE this way is to check the mapping
391 from the CPU exception itself to the signals. It would be nice to
392 do the same for SIGBUS, SIGSEGV, etc., but I suspect that even this
393 test might turn out to be insufficiently portable. */
395 #if 0
396 /* Loses on the PA because after the signal handler executes we try to
397 re-execute the failing instruction again. Perhaps we could siglongjmp
398 out of the signal handler? */
399 /* The expect script looks for the word "kill"; don't delete it. */
400 return 5 / x; /* and we both started jumping up and down yelling kill */
401 #else
402 kill (getpid (), SIGFPE);
403 #endif
404 return 0;
408 gen_SEGV ()
410 kill (getpid (), SIGSEGV);
411 return 0;
415 gen_TERM ()
417 kill (getpid (), SIGTERM);
418 return 0;
421 /* All other signals need preprocessor conditionals. */
424 gen_HUP ()
426 #ifdef SIGHUP
427 kill (getpid (), SIGHUP);
428 #else
429 handle_HUP (0);
430 #endif
431 return 0;
435 gen_QUIT ()
437 #ifdef SIGQUIT
438 kill (getpid (), SIGQUIT);
439 #else
440 handle_QUIT (0);
441 #endif
442 return 0;
446 gen_EMT ()
448 #ifdef SIGEMT
449 kill (getpid (), SIGEMT);
450 #else
451 handle_EMT (0);
452 #endif
453 return 0;
457 gen_BUS ()
459 #ifdef SIGBUS
460 kill (getpid (), SIGBUS);
461 #else
462 handle_BUS (0);
463 #endif
464 return 0;
468 gen_SYS ()
470 #ifdef SIGSYS
471 kill (getpid (), SIGSYS);
472 #else
473 handle_SYS (0);
474 #endif
475 return 0;
479 gen_PIPE ()
481 #ifdef SIGPIPE
482 kill (getpid (), SIGPIPE);
483 #else
484 handle_PIPE (0);
485 #endif
486 return 0;
490 gen_ALRM ()
492 #ifdef SIGALRM
493 kill (getpid (), SIGALRM);
494 #else
495 handle_ALRM (0);
496 #endif
497 return 0;
501 gen_URG ()
503 #ifdef SIGURG
504 kill (getpid (), SIGURG);
505 #else
506 handle_URG (0);
507 #endif
508 return 0;
512 gen_TSTP ()
514 #ifdef SIGTSTP
515 kill (getpid (), SIGTSTP);
516 #else
517 handle_TSTP (0);
518 #endif
519 return 0;
523 gen_CONT ()
525 #ifdef SIGCONT
526 kill (getpid (), SIGCONT);
527 #else
528 handle_CONT (0);
529 #endif
530 return 0;
534 gen_CHLD ()
536 #ifdef SIGCHLD
537 kill (getpid (), SIGCHLD);
538 #else
539 handle_CHLD (0);
540 #endif
541 return 0;
545 gen_TTIN ()
547 #ifdef SIGTTIN
548 kill (getpid (), SIGTTIN);
549 #else
550 handle_TTIN (0);
551 #endif
552 return 0;
556 gen_TTOU ()
558 #ifdef SIGTTOU
559 kill (getpid (), SIGTTOU);
560 #else
561 handle_TTOU (0);
562 #endif
563 return 0;
567 gen_IO ()
569 #ifdef SIGIO
570 kill (getpid (), SIGIO);
571 #else
572 handle_IO (0);
573 #endif
574 return 0;
578 gen_XCPU ()
580 #ifdef SIGXCPU
581 kill (getpid (), SIGXCPU);
582 #else
583 handle_XCPU (0);
584 #endif
585 return 0;
589 gen_XFSZ ()
591 #ifdef SIGXFSZ
592 kill (getpid (), SIGXFSZ);
593 #else
594 handle_XFSZ (0);
595 #endif
596 return 0;
600 gen_VTALRM ()
602 #ifdef SIGVTALRM
603 kill (getpid (), SIGVTALRM);
604 #else
605 handle_VTALRM (0);
606 #endif
607 return 0;
611 gen_PROF ()
613 #ifdef SIGPROF
614 kill (getpid (), SIGPROF);
615 #else
616 handle_PROF (0);
617 #endif
618 return 0;
622 gen_WINCH ()
624 #ifdef SIGWINCH
625 kill (getpid (), SIGWINCH);
626 #else
627 handle_WINCH (0);
628 #endif
629 return 0;
633 gen_LOST ()
635 #if defined(SIGLOST) && SIGLOST != SIGABRT
636 kill (getpid (), SIGLOST);
637 #else
638 handle_LOST (0);
639 #endif
640 return 0;
644 gen_USR1 ()
646 #ifdef SIGUSR1
647 kill (getpid (), SIGUSR1);
648 #else
649 handle_USR1 (0);
650 #endif
651 return 0;
655 gen_USR2 ()
657 #ifdef SIGUSR2
658 kill (getpid (), SIGUSR2);
659 #else
660 handle_USR2 (0);
661 #endif
662 return 0;
666 gen_PWR ()
668 #if defined(SIGPWR) && (!defined (SIGLOST) || SIGPWR != SIGLOST)
669 kill (getpid (), SIGPWR);
670 #else
671 handle_PWR (0);
672 #endif
673 return 0;
677 gen_POLL ()
679 #if defined (SIGPOLL) && (!defined (SIGIO) || SIGPOLL != SIGIO)
680 kill (getpid (), SIGPOLL);
681 #else
682 handle_POLL (0);
683 #endif
684 return 0;
688 gen_WIND ()
690 #ifdef SIGWIND
691 kill (getpid (), SIGWIND);
692 #else
693 handle_WIND (0);
694 #endif
695 return 0;
699 gen_PHONE ()
701 #ifdef SIGPHONE
702 kill (getpid (), SIGPHONE);
703 #else
704 handle_PHONE (0);
705 #endif
706 return 0;
710 gen_WAITING ()
712 #ifdef SIGWAITING
713 kill (getpid (), SIGWAITING);
714 #else
715 handle_WAITING (0);
716 #endif
717 return 0;
721 gen_LWP ()
723 #ifdef SIGLWP
724 kill (getpid (), SIGLWP);
725 #else
726 handle_LWP (0);
727 #endif
728 return 0;
732 gen_DANGER ()
734 #ifdef SIGDANGER
735 kill (getpid (), SIGDANGER);
736 #else
737 handle_DANGER (0);
738 #endif
739 return 0;
743 gen_GRANT ()
745 #ifdef SIGGRANT
746 kill (getpid (), SIGGRANT);
747 #else
748 handle_GRANT (0);
749 #endif
750 return 0;
754 gen_RETRACT ()
756 #ifdef SIGRETRACT
757 kill (getpid (), SIGRETRACT);
758 #else
759 handle_RETRACT (0);
760 #endif
761 return 0;
765 gen_MSG ()
767 #ifdef SIGMSG
768 kill (getpid (), SIGMSG);
769 #else
770 handle_MSG (0);
771 #endif
772 return 0;
776 gen_SOUND ()
778 #ifdef SIGSOUND
779 kill (getpid (), SIGSOUND);
780 #else
781 handle_SOUND (0);
782 #endif
783 return 0;
787 gen_SAK ()
789 #ifdef SIGSAK
790 kill (getpid (), SIGSAK);
791 #else
792 handle_SAK (0);
793 #endif
794 return 0;
798 gen_PRIO ()
800 #ifdef SIGPRIO
801 kill (getpid (), SIGPRIO);
802 #else
803 handle_PRIO (0);
804 #endif
805 return 0;
809 gen_33 ()
811 #ifdef SIG33
812 kill (getpid (), 33);
813 #else
814 handle_33 (0);
815 #endif
816 return 0;
820 gen_34 ()
822 #ifdef SIG34
823 kill (getpid (), 34);
824 #else
825 handle_34 (0);
826 #endif
827 return 0;
831 gen_35 ()
833 #ifdef SIG35
834 kill (getpid (), 35);
835 #else
836 handle_35 (0);
837 #endif
838 return 0;
842 gen_36 ()
844 #ifdef SIG36
845 kill (getpid (), 36);
846 #else
847 handle_36 (0);
848 #endif
849 return 0;
853 gen_37 ()
855 #ifdef SIG37
856 kill (getpid (), 37);
857 #else
858 handle_37 (0);
859 #endif
860 return 0;
864 gen_38 ()
866 #ifdef SIG38
867 kill (getpid (), 38);
868 #else
869 handle_38 (0);
870 #endif
871 return 0;
875 gen_39 ()
877 #ifdef SIG39
878 kill (getpid (), 39);
879 #else
880 handle_39 (0);
881 #endif
882 return 0;
886 gen_40 ()
888 #ifdef SIG40
889 kill (getpid (), 40);
890 #else
891 handle_40 (0);
892 #endif
893 return 0;
897 gen_41 ()
899 #ifdef SIG41
900 kill (getpid (), 41);
901 #else
902 handle_41 (0);
903 #endif
904 return 0;
908 gen_42 ()
910 #ifdef SIG42
911 kill (getpid (), 42);
912 #else
913 handle_42 (0);
914 #endif
915 return 0;
919 gen_43 ()
921 #ifdef SIG43
922 kill (getpid (), 43);
923 #else
924 handle_43 (0);
925 #endif
926 return 0;
930 gen_44 ()
932 #ifdef SIG44
933 kill (getpid (), 44);
934 #else
935 handle_44 (0);
936 #endif
937 return 0;
941 gen_45 ()
943 #ifdef SIG45
944 kill (getpid (), 45);
945 #else
946 handle_45 (0);
947 #endif
948 return 0;
952 gen_46 ()
954 #ifdef SIG46
955 kill (getpid (), 46);
956 #else
957 handle_46 (0);
958 #endif
959 return 0;
963 gen_47 ()
965 #ifdef SIG47
966 kill (getpid (), 47);
967 #else
968 handle_47 (0);
969 #endif
970 return 0;
974 gen_48 ()
976 #ifdef SIG48
977 kill (getpid (), 48);
978 #else
979 handle_48 (0);
980 #endif
981 return 0;
985 gen_49 ()
987 #ifdef SIG49
988 kill (getpid (), 49);
989 #else
990 handle_49 (0);
991 #endif
992 return 0;
996 gen_50 ()
998 #ifdef SIG50
999 kill (getpid (), 50);
1000 #else
1001 handle_50 (0);
1002 #endif
1003 return 0;
1007 gen_51 ()
1009 #ifdef SIG51
1010 kill (getpid (), 51);
1011 #else
1012 handle_51 (0);
1013 #endif
1014 return 0;
1018 gen_52 ()
1020 #ifdef SIG52
1021 kill (getpid (), 52);
1022 #else
1023 handle_52 (0);
1024 #endif
1025 return 0;
1029 gen_53 ()
1031 #ifdef SIG53
1032 kill (getpid (), 53);
1033 #else
1034 handle_53 (0);
1035 #endif
1036 return 0;
1040 gen_54 ()
1042 #ifdef SIG54
1043 kill (getpid (), 54);
1044 #else
1045 handle_54 (0);
1046 #endif
1047 return 0;
1051 gen_55 ()
1053 #ifdef SIG55
1054 kill (getpid (), 55);
1055 #else
1056 handle_55 (0);
1057 #endif
1058 return 0;
1062 gen_56 ()
1064 #ifdef SIG56
1065 kill (getpid (), 56);
1066 #else
1067 handle_56 (0);
1068 #endif
1069 return 0;
1073 gen_57 ()
1075 #ifdef SIG57
1076 kill (getpid (), 57);
1077 #else
1078 handle_57 (0);
1079 #endif
1080 return 0;
1084 gen_58 ()
1086 #ifdef SIG58
1087 kill (getpid (), 58);
1088 #else
1089 handle_58 (0);
1090 #endif
1091 return 0;
1095 gen_59 ()
1097 #ifdef SIG59
1098 kill (getpid (), 59);
1099 #else
1100 handle_59 (0);
1101 #endif
1102 return 0;
1106 gen_60 ()
1108 #ifdef SIG60
1109 kill (getpid (), 60);
1110 #else
1111 handle_60 (0);
1112 #endif
1113 return 0;
1117 gen_61 ()
1119 #ifdef SIG61
1120 kill (getpid (), 61);
1121 #else
1122 handle_61 (0);
1123 #endif
1124 return 0;
1128 gen_62 ()
1130 #ifdef SIG62
1131 kill (getpid (), 62);
1132 #else
1133 handle_62 (0);
1134 #endif
1135 return 0;
1139 gen_63 ()
1141 #ifdef SIG63
1142 kill (getpid (), 63);
1143 #else
1144 handle_63 (0);
1145 #endif
1146 return 0;
1150 main ()
1153 #ifdef SIG_SETMASK
1154 /* Ensure all the signals aren't blocked.
1155 The environment in which the testsuite is run may have blocked some
1156 for whatever reason. */
1158 sigset_t newset;
1159 sigemptyset (&newset);
1160 sigprocmask (SIG_SETMASK, &newset, NULL);
1162 #endif
1164 /* Signals are ordered ANSI-standard signals first, other signals
1165 second, with signals in each block ordered by their numerical
1166 values on a typical POSIX platform. */
1168 /* SIGINT, SIGILL, SIGABRT, SIGFPE, SIGSEGV and SIGTERM
1169 are ANSI-standard signals and are always available. */
1170 signal (SIGILL, handle_ILL);
1171 signal (SIGABRT, handle_ABRT);
1172 signal (SIGFPE, handle_FPE);
1173 signal (SIGSEGV, handle_SEGV);
1174 signal (SIGTERM, handle_TERM);
1176 /* All other signals need preprocessor conditionals. */
1177 #ifdef SIGHUP
1178 signal (SIGHUP, handle_HUP);
1179 #endif
1180 #ifdef SIGQUIT
1181 signal (SIGQUIT, handle_QUIT);
1182 #endif
1183 #ifdef SIGEMT
1184 signal (SIGEMT, handle_EMT);
1185 #endif
1186 #ifdef SIGBUS
1187 signal (SIGBUS, handle_BUS);
1188 #endif
1189 #ifdef SIGSYS
1190 signal (SIGSYS, handle_SYS);
1191 #endif
1192 #ifdef SIGPIPE
1193 signal (SIGPIPE, handle_PIPE);
1194 #endif
1195 #ifdef SIGALRM
1196 signal (SIGALRM, handle_ALRM);
1197 #endif
1198 #ifdef SIGURG
1199 signal (SIGURG, handle_URG);
1200 #endif
1201 #ifdef SIGTSTP
1202 signal (SIGTSTP, handle_TSTP);
1203 #endif
1204 #ifdef SIGCONT
1205 signal (SIGCONT, handle_CONT);
1206 #endif
1207 #ifdef SIGCHLD
1208 signal (SIGCHLD, handle_CHLD);
1209 #endif
1210 #ifdef SIGTTIN
1211 signal (SIGTTIN, handle_TTIN);
1212 #endif
1213 #ifdef SIGTTOU
1214 signal (SIGTTOU, handle_TTOU);
1215 #endif
1216 #ifdef SIGIO
1217 signal (SIGIO, handle_IO);
1218 #endif
1219 #ifdef SIGXCPU
1220 signal (SIGXCPU, handle_XCPU);
1221 #endif
1222 #ifdef SIGXFSZ
1223 signal (SIGXFSZ, handle_XFSZ);
1224 #endif
1225 #ifdef SIGVTALRM
1226 signal (SIGVTALRM, handle_VTALRM);
1227 #endif
1228 #ifdef SIGPROF
1229 signal (SIGPROF, handle_PROF);
1230 #endif
1231 #ifdef SIGWINCH
1232 signal (SIGWINCH, handle_WINCH);
1233 #endif
1234 #if defined(SIGLOST) && SIGLOST != SIGABRT
1235 signal (SIGLOST, handle_LOST);
1236 #endif
1237 #ifdef SIGUSR1
1238 signal (SIGUSR1, handle_USR1);
1239 #endif
1240 #ifdef SIGUSR2
1241 signal (SIGUSR2, handle_USR2);
1242 #endif
1243 #if defined(SIGPWR) && (!defined (SIGLOST) || SIGPWR != SIGLOST)
1244 signal (SIGPWR, handle_PWR);
1245 #endif
1246 #if defined (SIGPOLL) && (!defined (SIGIO) || SIGPOLL != SIGIO)
1247 signal (SIGPOLL, handle_POLL);
1248 #endif
1249 #ifdef SIGWIND
1250 signal (SIGWIND, handle_WIND);
1251 #endif
1252 #ifdef SIGPHONE
1253 signal (SIGPHONE, handle_PHONE);
1254 #endif
1255 #ifdef SIGWAITING
1256 signal (SIGWAITING, handle_WAITING);
1257 #endif
1258 #ifdef SIGLWP
1259 signal (SIGLWP, handle_LWP);
1260 #endif
1261 #ifdef SIGDANGER
1262 signal (SIGDANGER, handle_DANGER);
1263 #endif
1264 #ifdef SIGGRANT
1265 signal (SIGGRANT, handle_GRANT);
1266 #endif
1267 #ifdef SIGRETRACT
1268 signal (SIGRETRACT, handle_RETRACT);
1269 #endif
1270 #ifdef SIGMSG
1271 signal (SIGMSG, handle_MSG);
1272 #endif
1273 #ifdef SIGSOUND
1274 signal (SIGSOUND, handle_SOUND);
1275 #endif
1276 #ifdef SIGSAK
1277 signal (SIGSAK, handle_SAK);
1278 #endif
1279 #ifdef SIGPRIO
1280 signal (SIGPRIO, handle_PRIO);
1281 #endif
1282 #ifdef __Lynx__
1283 /* Lynx doesn't seem to have anything in signal.h for this. */
1284 signal (33, handle_33);
1285 signal (34, handle_34);
1286 signal (35, handle_35);
1287 signal (36, handle_36);
1288 signal (37, handle_37);
1289 signal (38, handle_38);
1290 signal (39, handle_39);
1291 signal (40, handle_40);
1292 signal (41, handle_41);
1293 signal (42, handle_42);
1294 signal (43, handle_43);
1295 signal (44, handle_44);
1296 signal (45, handle_45);
1297 signal (46, handle_46);
1298 signal (47, handle_47);
1299 signal (48, handle_48);
1300 signal (49, handle_49);
1301 signal (50, handle_50);
1302 signal (51, handle_51);
1303 signal (52, handle_52);
1304 signal (53, handle_53);
1305 signal (54, handle_54);
1306 signal (55, handle_55);
1307 signal (56, handle_56);
1308 signal (57, handle_57);
1309 signal (58, handle_58);
1310 signal (59, handle_59);
1311 signal (60, handle_60);
1312 signal (61, handle_61);
1313 signal (62, handle_62);
1314 signal (63, handle_63);
1315 #endif /* lynx */
1317 x = 0;
1319 gen_ABRT ();
1320 gen_HUP ();
1321 gen_QUIT ();
1322 gen_ILL ();
1323 gen_EMT ();
1324 gen_FPE ();
1325 gen_BUS ();
1326 gen_SEGV ();
1327 gen_SYS ();
1328 gen_PIPE ();
1329 gen_ALRM ();
1330 gen_URG ();
1331 gen_TSTP ();
1332 gen_CONT ();
1333 gen_CHLD ();
1334 gen_TTIN ();
1335 gen_TTOU ();
1336 gen_IO ();
1337 gen_XCPU ();
1338 gen_XFSZ ();
1339 gen_VTALRM ();
1340 gen_PROF ();
1341 gen_WINCH ();
1342 gen_LOST ();
1343 gen_USR1 ();
1344 gen_USR2 ();
1345 gen_PWR ();
1346 gen_POLL ();
1347 gen_WIND ();
1348 gen_PHONE ();
1349 gen_WAITING ();
1350 gen_LWP ();
1351 gen_DANGER ();
1352 gen_GRANT ();
1353 gen_RETRACT ();
1354 gen_MSG ();
1355 gen_SOUND ();
1356 gen_SAK ();
1357 gen_PRIO ();
1358 gen_33 ();
1359 gen_34 ();
1360 gen_35 ();
1361 gen_36 ();
1362 gen_37 ();
1363 gen_38 ();
1364 gen_39 ();
1365 gen_40 ();
1366 gen_41 ();
1367 gen_42 ();
1368 gen_43 ();
1369 gen_44 ();
1370 gen_45 ();
1371 gen_46 ();
1372 gen_47 ();
1373 gen_48 ();
1374 gen_49 ();
1375 gen_50 ();
1376 gen_51 ();
1377 gen_52 ();
1378 gen_53 ();
1379 gen_54 ();
1380 gen_55 ();
1381 gen_56 ();
1382 gen_57 ();
1383 gen_58 ();
1384 gen_59 ();
1385 gen_60 ();
1386 gen_61 ();
1387 gen_62 ();
1388 gen_63 ();
1389 gen_TERM ();
1391 return 0;