1 /* Test of <signal.h> substitute. 2 Copyright (C) 2009-2021 Free Software Foundation, Inc. 3 4 This program is free software: you can redistribute it and/or modify 5 it under the terms of the GNU General Public License as published by 6 the Free Software Foundation; either version 3 of the License, or 7 (at your option) any later version. 8 9 This program is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 GNU General Public License for more details. 13 14 You should have received a copy of the GNU General Public License 15 along with this program. If not, see <https://www.gnu.org/licenses/>. */ 16 17 /* Written by Eric Blake <ebb9@byu.net>, 2009. */ 18 19 #include <config.h> 20 21 #include <signal.h> 22 23 /* Check for required types. */ 24 struct 25 { 26 size_t a; 27 uid_t b; 28 volatile sig_atomic_t c; 29 sigset_t d; 30 pid_t e; 31 #if 0 32 /* Not guaranteed by gnulib. */ 33 pthread_t f; 34 struct timespec g; 35 #endif 36 } s; 37 38 /* Check that NSIG is defined. */ 39 int nsig = NSIG; 40 41 int main(void)42main (void) 43 { 44 switch (0) 45 { 46 /* The following are guaranteed by C. */ 47 case 0: 48 case SIGABRT: 49 case SIGFPE: 50 case SIGILL: 51 case SIGINT: 52 case SIGSEGV: 53 case SIGTERM: 54 /* The following is guaranteed by gnulib. */ 55 #if GNULIB_SIGPIPE || defined SIGPIPE 56 case SIGPIPE: 57 #endif 58 /* Ensure no conflict with other standardized names. */ 59 #ifdef SIGALRM 60 case SIGALRM: 61 #endif 62 /* On Haiku, SIGBUS is mistakenly equal to SIGSEGV. */ 63 #if defined SIGBUS && SIGBUS != SIGSEGV 64 case SIGBUS: 65 #endif 66 #ifdef SIGCHLD 67 case SIGCHLD: 68 #endif 69 #ifdef SIGCONT 70 case SIGCONT: 71 #endif 72 #ifdef SIGHUP 73 case SIGHUP: 74 #endif 75 #ifdef SIGKILL 76 case SIGKILL: 77 #endif 78 #ifdef SIGQUIT 79 case SIGQUIT: 80 #endif 81 #ifdef SIGSTOP 82 case SIGSTOP: 83 #endif 84 #ifdef SIGTSTP 85 case SIGTSTP: 86 #endif 87 #ifdef SIGTTIN 88 case SIGTTIN: 89 #endif 90 #ifdef SIGTTOU 91 case SIGTTOU: 92 #endif 93 #ifdef SIGUSR1 94 case SIGUSR1: 95 #endif 96 #ifdef SIGUSR2 97 case SIGUSR2: 98 #endif 99 #ifdef SIGSYS 100 case SIGSYS: 101 #endif 102 #ifdef SIGTRAP 103 case SIGTRAP: 104 #endif 105 #ifdef SIGURG 106 case SIGURG: 107 #endif 108 #ifdef SIGVTALRM 109 case SIGVTALRM: 110 #endif 111 #ifdef SIGXCPU 112 case SIGXCPU: 113 #endif 114 #ifdef SIGXFSZ 115 case SIGXFSZ: 116 #endif 117 /* SIGRTMIN and SIGRTMAX need not be compile-time constants. */ 118 #if 0 119 # ifdef SIGRTMIN 120 case SIGRTMIN: 121 # endif 122 # ifdef SIGRTMAX 123 case SIGRTMAX: 124 # endif 125 #endif 126 ; 127 } 128 return s.a + s.b + s.c + s.e; 129 } 130