From 2adf9eb9d57d54eea767e18b550ee26f70d27dcf Mon Sep 17 00:00:00 2001 From: Eric Blake Date: Wed, 30 Dec 2009 14:42:41 -0700 Subject: [PATCH] signal, spawn: use link warnings These modules depended on link-warning, then didn't use it. * lib/signal.in.h (sigset_t): Make unconditional. (sigismember, sigemptyset, sigaddset, sigdelset, sigfillset) (sigpending, sigprocmask, sigaction): Add link warnings. * lib/spawn.in.h (posix_spawn, posix_spawnp, posix_spawnattr_init) (posix_spawnattr_destroy, posix_spawnattr_getsigdefault) (posix_spawnattr_setsigdefault, posix_spawnattr_getsigmask) (posix_spawnattr_setsigmask, posix_spawnattr_getflags) (posix_spawnattr_setflags, posix_spawnattr_getpgroup) (posix_spawnattr_setpgroup, posix_spawnattr_getschedpolicy) (posix_spawnattr_setschedpolicy, posix_spawnattr_getschedparam) (posix_spawnattr_setschedparam, posix_spawn_file_actions_init) (posix_spawn_file_actions_destroy) (posix_spawn_file_actions_addopen) (posix_spawn_file_actions_addclose) (posix_spawwn_file_actions_adddup2): Likewise. * m4/signal_h.m4 (gl_SIGNAL_H): Guarantee uid_t. * tests/test-signal.c (main): Enhance test. Signed-off-by: Eric Blake --- ChangeLog | 21 ++++++++ lib/signal.in.h | 113 ++++++++++++++++++++++++++++------------- lib/spawn.in.h | 120 ++++++++++++++++++++++++++++++++++++++++++++ m4/signal_h.m4 | 3 +- tests/test-signal.c | 103 ++++++++++++++++++++++++++++++++++++- 5 files changed, 323 insertions(+), 37 deletions(-) diff --git a/ChangeLog b/ChangeLog index dff8ae98f8..ed0bbb1f6e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,24 @@ +2009-12-31 Eric Blake + + signal, spawn: use link warnings + * lib/signal.in.h (sigset_t): Make unconditional. + (sigismember, sigemptyset, sigaddset, sigdelset, sigfillset) + (sigpending, sigprocmask, sigaction): Add link warnings. + * lib/spawn.in.h (posix_spawn, posix_spawnp, posix_spawnattr_init) + (posix_spawnattr_destroy, posix_spawnattr_getsigdefault) + (posix_spawnattr_setsigdefault, posix_spawnattr_getsigmask) + (posix_spawnattr_setsigmask, posix_spawnattr_getflags) + (posix_spawnattr_setflags, posix_spawnattr_getpgroup) + (posix_spawnattr_setpgroup, posix_spawnattr_getschedpolicy) + (posix_spawnattr_setschedpolicy, posix_spawnattr_getschedparam) + (posix_spawnattr_setschedparam, posix_spawn_file_actions_init) + (posix_spawn_file_actions_destroy) + (posix_spawn_file_actions_addopen) + (posix_spawn_file_actions_addclose) + (posix_spawwn_file_actions_adddup2): Likewise. + * m4/signal_h.m4 (gl_SIGNAL_H): Guarantee uid_t. + * tests/test-signal.c (main): Enhance test. + 2009-12-31 Eric Blake spawn: improve wrapper support diff --git a/lib/signal.in.h b/lib/signal.in.h index 3a957cd83e..365f4974d9 100644 --- a/lib/signal.in.h +++ b/lib/signal.in.h @@ -52,6 +52,11 @@ typedef int rpl_sig_atomic_t; # define sig_atomic_t rpl_sig_atomic_t #endif +/* A set or mask of signals. */ +#if !@HAVE_SIGSET_T@ +typedef unsigned int sigset_t; +#endif + #ifdef __cplusplus extern "C" { #endif @@ -68,21 +73,17 @@ extern "C" { #endif -#if !@HAVE_POSIX_SIGNALBLOCKING@ +#if @GNULIB_SIGPROCMASK@ +# if !@HAVE_POSIX_SIGNALBLOCKING@ /* Maximum signal number + 1. */ -# ifndef NSIG -# define NSIG 32 -# endif +# ifndef NSIG +# define NSIG 32 +# endif /* This code supports only 32 signals. */ typedef int verify_NSIG_constraint[2 * (NSIG <= 32) - 1]; -/* A set or mask of signals. */ -# if !@HAVE_SIGSET_T@ -typedef unsigned int sigset_t; -# endif - /* Test whether a given signal is contained in a signal set. */ extern int sigismember (const sigset_t *set, int sig) _GL_ARG_NONNULL ((1)); @@ -106,31 +107,69 @@ extern int sigpending (sigset_t *set) _GL_ARG_NONNULL ((1)); combining it with *SET as indicated in OPERATION. In this implementation, you are not allowed to change a signal handler while the signal is blocked. */ -# define SIG_BLOCK 0 /* blocked_set = blocked_set | *set; */ -# define SIG_SETMASK 1 /* blocked_set = *set; */ -# define SIG_UNBLOCK 2 /* blocked_set = blocked_set & ~*set; */ +# define SIG_BLOCK 0 /* blocked_set = blocked_set | *set; */ +# define SIG_SETMASK 1 /* blocked_set = *set; */ +# define SIG_UNBLOCK 2 /* blocked_set = blocked_set & ~*set; */ extern int sigprocmask (int operation, const sigset_t *set, sigset_t *old_set); -# define signal rpl_signal +# define signal rpl_signal /* Install the handler FUNC for signal SIG, and return the previous handler. */ extern void (*signal (int sig, void (*func) (int))) (int); -# if GNULIB_defined_SIGPIPE +# if GNULIB_defined_SIGPIPE /* Raise signal SIG. */ -# undef raise -# define raise rpl_raise +# undef raise +# define raise rpl_raise extern int raise (int sig); -# endif - -#endif /* !@HAVE_POSIX_SIGNALBLOCKING@ */ - - -#if !@HAVE_SIGACTION@ - -# if !@HAVE_SIGINFO_T@ +# endif + +# endif /* !@HAVE_POSIX_SIGNALBLOCKING@ */ +#elif defined GNULIB_POSIXCHECK +# undef sigaddset +# define sigaddset(s,n) \ + (GL_LINK_WARNING ("sigaddset is unportable - " \ + "use gnulib module sigprocmask for portability"), \ + sigaddset (s, n)) +# undef sigdelset +# define sigdelset(s,n) \ + (GL_LINK_WARNING ("sigdelset is unportable - " \ + "use gnulib module sigprocmask for portability"), \ + sigdelset (s, n)) +# undef sigemptyset +# define sigemptyset(s) \ + (GL_LINK_WARNING ("sigemptyset is unportable - " \ + "use gnulib module sigprocmask for portability"), \ + sigemptyset (s)) +# undef sigfillset +# define sigfillset(s) \ + (GL_LINK_WARNING ("sigfillset is unportable - " \ + "use gnulib module sigprocmask for portability"), \ + sigfillset (s)) +# undef sigismember +# define sigismember(s,n) \ + (GL_LINK_WARNING ("sigismember is unportable - " \ + "use gnulib module sigprocmask for portability"), \ + sigismember (s, n)) +# undef sigpending +# define sigpending(s) \ + (GL_LINK_WARNING ("sigpending is unportable - " \ + "use gnulib module sigprocmask for portability"), \ + sigpending (s)) +# undef sigprocmask +# define sigprocmask(h,s,o) \ + (GL_LINK_WARNING ("sigprocmask is unportable - " \ + "use gnulib module sigprocmask for portability"), \ + sigprocmask (h, s, o)) +#endif /* @GNULIB_SIGPROCMASK@ */ + + +#if @GNULIB_SIGACTION@ +# if !@HAVE_SIGACTION@ + +# if !@HAVE_SIGINFO_T@ /* Present to allow compilation, but unsupported by gnulib. */ union sigval { @@ -152,7 +191,7 @@ struct siginfo_t union sigval si_value; }; typedef struct siginfo_t siginfo_t; -# endif /* !@HAVE_SIGINFO_T@ */ +# endif /* !@HAVE_SIGINFO_T@ */ /* We assume that platforms which lack the sigaction() function also lack the 'struct sigaction' type, and vice versa. */ @@ -172,22 +211,28 @@ struct sigaction /* Not all POSIX flags are supported. */ int sa_flags; }; -# define sa_handler _sa_func._sa_handler -# define sa_sigaction _sa_func._sa_sigaction +# define sa_handler _sa_func._sa_handler +# define sa_sigaction _sa_func._sa_sigaction /* Unsupported flags are not present. */ -# define SA_RESETHAND 1 -# define SA_NODEFER 2 -# define SA_RESTART 4 +# define SA_RESETHAND 1 +# define SA_NODEFER 2 +# define SA_RESTART 4 extern int sigaction (int, const struct sigaction *restrict, struct sigaction *restrict); -#elif !@HAVE_STRUCT_SIGACTION_SA_SIGACTION@ +# elif !@HAVE_STRUCT_SIGACTION_SA_SIGACTION@ -# define sa_sigaction sa_handler - -#endif /* !@HAVE_SIGACTION@, !@HAVE_STRUCT_SIGACTION_SA_SIGACTION@ */ +# define sa_sigaction sa_handler +# endif /* !@HAVE_SIGACTION@, !@HAVE_STRUCT_SIGACTION_SA_SIGACTION@ */ +#elif defined GNULIB_POSIXCHECK +# undef sigaction +# define sigaction(s,a,o) \ + (GL_LINK_WARNING ("sigaction is unportable - " \ + "use gnulib module sigaction for portability"), \ + sigaction (s, a, o)) +#endif /* Some systems don't have SA_NODEFER. */ #ifndef SA_NODEFER diff --git a/lib/spawn.in.h b/lib/spawn.in.h index 29b388bbaa..8f86a9778f 100644 --- a/lib/spawn.in.h +++ b/lib/spawn.in.h @@ -156,6 +156,12 @@ extern int posix_spawn (pid_t *_Restrict_ __pid, char *const envp[_Restrict_arr_]) _GL_ARG_NONNULL ((2, 5, 6)); # endif +#elif defined GNULIB_POSIXCHECK +# undef posix_spawn +# define posix_spawn(a,b,c,d,e,f) \ + (GL_LINK_WARNING ("posix_spawn is unportable - " \ + "use gnulib module posix_spawn for portability"), \ + posix_spawn (a, b, c, d, e, f)) #endif #if @GNULIB_POSIX_SPAWNP@ @@ -173,6 +179,12 @@ extern int posix_spawnp (pid_t *__pid, const char *__file, char *const argv[], char *const envp[]) _GL_ARG_NONNULL ((2, 5, 6)); # endif +#elif defined GNULIB_POSIXCHECK +# undef posix_spawnp +# define posix_spawnp(a,b,c,d,e,f) \ + (GL_LINK_WARNING ("posix_spawnp is unportable - " \ + "use gnulib module posix_spawnp for portability"), \ + posix_spawnp (a, b, c, d, e, f)) #endif @@ -185,6 +197,12 @@ extern int posix_spawnp (pid_t *__pid, const char *__file, extern int posix_spawnattr_init (posix_spawnattr_t *__attr) __THROW _GL_ARG_NONNULL ((1)); # endif +#elif defined GNULIB_POSIXCHECK +# undef posix_spawnattr_init +# define posix_spawnattr_init(a) \ + (GL_LINK_WARNING ("posix_spawnattr_init is unportable - " \ + "use gnulib module posix_spawnattr_init for portability"), \ + posix_spawnattr_init (a)) #endif #if @GNULIB_POSIX_SPAWNATTR_DESTROY@ @@ -196,6 +214,12 @@ extern int posix_spawnattr_init (posix_spawnattr_t *__attr) extern int posix_spawnattr_destroy (posix_spawnattr_t *__attr) __THROW _GL_ARG_NONNULL ((1)); # endif +#elif defined GNULIB_POSIXCHECK +# undef posix_spawnattr_destroy +# define posix_spawnattr_destroy(a) \ + (GL_LINK_WARNING ("posix_spawnattr_destroy is unportable - " \ + "use gnulib module posix_spawnattr_destroy for portability"), \ + posix_spawnattr_destroy (a)) #endif #if @GNULIB_POSIX_SPAWNATTR_GETSIGDEFAULT@ @@ -209,6 +233,12 @@ extern int posix_spawnattr_getsigdefault (const posix_spawnattr_t *_Restrict_ __ sigset_t *_Restrict_ __sigdefault) __THROW _GL_ARG_NONNULL ((1, 2)); # endif +#elif defined GNULIB_POSIXCHECK +# undef posix_spawnattr_getsigdefault +# define posix_spawnattr_getsigdefault(a, b) \ + (GL_LINK_WARNING ("posix_spawnattr_getsigdefault is unportable - " \ + "use gnulib module posix_spawnattr_getsigdefault for portability"), \ + posix_spawnattr_getsigdefault (a, b)) #endif #if @GNULIB_POSIX_SPAWNATTR_SETSIGDEFAULT@ @@ -221,6 +251,12 @@ extern int posix_spawnattr_setsigdefault (posix_spawnattr_t *_Restrict_ __attr, const sigset_t *_Restrict_ __sigdefault) __THROW _GL_ARG_NONNULL ((1, 2)); # endif +#elif defined GNULIB_POSIXCHECK +# undef posix_spawnattr_setsigdefault +# define posix_spawnattr_setsigdefault(a, b) \ + (GL_LINK_WARNING ("posix_spawnattr_setsigdefault is unportable - " \ + "use gnulib module posix_spawnattr_setsigdefault for portability"), \ + posix_spawnattr_setsigdefault (a, b)) #endif #if @GNULIB_POSIX_SPAWNATTR_GETSIGMASK@ @@ -233,6 +269,12 @@ extern int posix_spawnattr_getsigmask (const posix_spawnattr_t *_Restrict_ __att sigset_t *_Restrict_ __sigmask) __THROW _GL_ARG_NONNULL ((1, 2)); # endif +#elif defined GNULIB_POSIXCHECK +# undef posix_spawnattr_getsigmask +# define posix_spawnattr_getsigmask(a, b) \ + (GL_LINK_WARNING ("posix_spawnattr_getsigmask is unportable - " \ + "use gnulib module posix_spawnattr_getsigmask for portability"), \ + posix_spawnattr_getsigmask (a, b)) #endif #if @GNULIB_POSIX_SPAWNATTR_SETSIGMASK@ @@ -245,6 +287,12 @@ extern int posix_spawnattr_setsigmask (posix_spawnattr_t *_Restrict_ __attr, const sigset_t *_Restrict_ __sigmask) __THROW _GL_ARG_NONNULL ((1, 2)); # endif +#elif defined GNULIB_POSIXCHECK +# undef posix_spawnattr_setsigmask +# define posix_spawnattr_setsigmask(a, b) \ + (GL_LINK_WARNING ("posix_spawnattr_setsigmask is unportable - " \ + "use gnulib module posix_spawnattr_setsigmask for portability"), \ + posix_spawnattr_setsigmask (a, b)) #endif #if @GNULIB_POSIX_SPAWNATTR_GETFLAGS@ @@ -257,6 +305,12 @@ extern int posix_spawnattr_getflags (const posix_spawnattr_t *_Restrict_ __attr, short int *_Restrict_ __flags) __THROW _GL_ARG_NONNULL ((1, 2)); # endif +#elif defined GNULIB_POSIXCHECK +# undef posix_spawnattr_getsigdefault +# define posix_spawnattr_getsigdefault(a, b) \ + (GL_LINK_WARNING ("posix_spawnattr_getsigdefault is unportable - " \ + "use gnulib module posix_spawnattr_getsigdefault for portability"), \ + posix_spawnattr_getsigdefault (a, b)) #endif #if @GNULIB_POSIX_SPAWNATTR_SETFLAGS@ @@ -269,6 +323,12 @@ extern int posix_spawnattr_setflags (posix_spawnattr_t *__attr, short int __flags) __THROW _GL_ARG_NONNULL ((1)); # endif +#elif defined GNULIB_POSIXCHECK +# undef posix_spawnattr_getflags +# define posix_spawnattr_getflags(a, b) \ + (GL_LINK_WARNING ("posix_spawnattr_getflags is unportable - " \ + "use gnulib module posix_spawnattr_getflags for portability"), \ + posix_spawnattr_getflags (a, b)) #endif #if @GNULIB_POSIX_SPAWNATTR_GETPGROUP@ @@ -281,6 +341,12 @@ extern int posix_spawnattr_getpgroup (const posix_spawnattr_t *_Restrict_ __attr pid_t *_Restrict_ __pgroup) __THROW _GL_ARG_NONNULL ((1, 2)); # endif +#elif defined GNULIB_POSIXCHECK +# undef posix_spawnattr_setflags +# define posix_spawnattr_setflags(a, b) \ + (GL_LINK_WARNING ("posix_spawnattr_setflags is unportable - " \ + "use gnulib module posix_spawnattr_setflags for portability"), \ + posix_spawnattr_setflags (a, b)) #endif #if @GNULIB_POSIX_SPAWNATTR_SETPGROUP@ @@ -305,6 +371,12 @@ extern int posix_spawnattr_getschedpolicy (const posix_spawnattr_t *_Restrict_ _ int *_Restrict_ __schedpolicy) __THROW _GL_ARG_NONNULL ((1, 2)); # endif +#elif defined GNULIB_POSIXCHECK +# undef posix_spawnattr_getschedpolicy +# define posix_spawnattr_getschedpolicy(a, b) \ + (GL_LINK_WARNING ("posix_spawnattr_getschedpolicy is unportable - " \ + "use gnulib module posix_spawnattr_getschedpolicy for portability"), \ + posix_spawnattr_getschedpolicy (a, b)) #endif #if @GNULIB_POSIX_SPAWNATTR_SETSCHEDPOLICY@ @@ -317,6 +389,12 @@ extern int posix_spawnattr_setschedpolicy (posix_spawnattr_t *__attr, int __schedpolicy) __THROW _GL_ARG_NONNULL ((1)); # endif +#elif defined GNULIB_POSIXCHECK +# undef posix_spawnattr_setschedpolicy +# define posix_spawnattr_setschedpolicy(a, b) \ + (GL_LINK_WARNING ("posix_spawnattr_setschedpolicy is unportable - " \ + "use gnulib module posix_spawnattr_setschedpolicy for portability"), \ + posix_spawnattr_setschedpolicy (a, b)) #endif #if @GNULIB_POSIX_SPAWNATTR_GETSCHEDPARAM@ @@ -329,6 +407,12 @@ extern int posix_spawnattr_getschedparam (const posix_spawnattr_t *_Restrict_ __ struct sched_param *_Restrict_ __schedparam) __THROW _GL_ARG_NONNULL ((1, 2)); # endif +#elif defined GNULIB_POSIXCHECK +# undef posix_spawnattr_getschedparam +# define posix_spawnattr_getschedparam(a, b) \ + (GL_LINK_WARNING ("posix_spawnattr_getschedparam is unportable - " \ + "use gnulib module posix_spawnattr_getschedparam for portability"), \ + posix_spawnattr_getschedparam (a, b)) #endif #if @GNULIB_POSIX_SPAWNATTR_SETSCHEDPARAM@ @@ -341,6 +425,12 @@ extern int posix_spawnattr_setschedparam (posix_spawnattr_t *_Restrict_ __attr, const struct sched_param *_Restrict_ __schedparam) __THROW _GL_ARG_NONNULL ((1, 2)); # endif +#elif defined GNULIB_POSIXCHECK +# undef posix_spawnattr_setschedparam +# define posix_spawnattr_setschedparam(a, b) \ + (GL_LINK_WARNING ("posix_spawnattr_setschedparam is unportable - " \ + "use gnulib module posix_spawnattr_setschedparam for portability"), \ + posix_spawnattr_setschedparam (a, b)) #endif @@ -353,6 +443,12 @@ extern int posix_spawnattr_setschedparam (posix_spawnattr_t *_Restrict_ __attr, extern int posix_spawn_file_actions_init (posix_spawn_file_actions_t *__file_actions) __THROW _GL_ARG_NONNULL ((1)); # endif +#elif defined GNULIB_POSIXCHECK +# undef posix_spawn_file_actions_init +# define posix_spawn_file_actions_init(a) \ + (GL_LINK_WARNING ("posix_spawn_file_actions_init is unportable - " \ + "use gnulib module posix_spawn_file_actions_init for portability"), \ + posix_spawn_file_actions_init (a)) #endif #if @GNULIB_POSIX_SPAWN_FILE_ACTIONS_DESTROY@ @@ -364,6 +460,12 @@ extern int posix_spawn_file_actions_init (posix_spawn_file_actions_t *__file_act extern int posix_spawn_file_actions_destroy (posix_spawn_file_actions_t *__file_actions) __THROW _GL_ARG_NONNULL ((1)); # endif +#elif defined GNULIB_POSIXCHECK +# undef posix_spawn_file_actions_destroy +# define posix_spawn_file_actions_destroy(a) \ + (GL_LINK_WARNING ("posix_spawn_file_actions_destroy is unportable - " \ + "use gnulib module posix_spawn_file_actions_destroy for portability"), \ + posix_spawn_file_actions_destroy (a)) #endif #if @GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN@ @@ -379,6 +481,12 @@ extern int posix_spawn_file_actions_addopen (posix_spawn_file_actions_t *_Restri int __oflag, mode_t __mode) __THROW _GL_ARG_NONNULL ((1, 3)); # endif +#elif defined GNULIB_POSIXCHECK +# undef posix_spawn_file_actions_addopen +# define posix_spawn_file_actions_addopen(a, b, c, d, e) \ + (GL_LINK_WARNING ("posix_spawn_file_actions_addopen is unportable - " \ + "use gnulib module posix_spawn_file_actions_addopen for portability"), \ + posix_spawn_file_actions_addopen (a, b, c, d, e)) #endif #if @GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE@ @@ -392,6 +500,12 @@ extern int posix_spawn_file_actions_addclose (posix_spawn_file_actions_t *__file int __fd) __THROW _GL_ARG_NONNULL ((1)); # endif +#elif defined GNULIB_POSIXCHECK +# undef posix_spawn_file_actions_addclose +# define posix_spawn_file_actions_addclose(a,b) \ + (GL_LINK_WARNING ("posix_spawn_file_actions_addclose is unportable - " \ + "use gnulib module posix_spawn_file_actions_addclose for portability"), \ + posix_spawn_file_actions_addclose (a, b)) #endif #if @GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2@ @@ -405,6 +519,12 @@ extern int posix_spawn_file_actions_adddup2 (posix_spawn_file_actions_t *__file_ int __fd, int __newfd) __THROW _GL_ARG_NONNULL ((1)); # endif +#elif defined GNULIB_POSIXCHECK +# undef posix_spawn_file_actions_adddup2 +# define posix_spawn_file_actions_adddup2(a,b,c) \ + (GL_LINK_WARNING ("posix_spawn_file_actions_adddup2 is unportable - " \ + "use gnulib module posix_spawn_file_actions_adddup2 for portability"), \ + posix_spawn_file_actions_adddup2 (a, b, c)) #endif diff --git a/m4/signal_h.m4 b/m4/signal_h.m4 index e69befd0ed..df6a3ba868 100644 --- a/m4/signal_h.m4 +++ b/m4/signal_h.m4 @@ -1,4 +1,4 @@ -# signal_h.m4 serial 7 +# signal_h.m4 serial 8 dnl Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -14,6 +14,7 @@ AC_DEFUN([gl_SIGNAL_H], [HAVE_TYPE_VOLATILE_SIG_ATOMIC_T=0], [[ #include ]]) + AC_REQUIRE([AC_TYPE_UID_T]) ]) AC_DEFUN([gl_SIGNAL_MODULE_INDICATOR], diff --git a/tests/test-signal.c b/tests/test-signal.c index 5154f4e953..b0c11cf84a 100644 --- a/tests/test-signal.c +++ b/tests/test-signal.c @@ -20,10 +20,109 @@ #include -volatile sig_atomic_t s; +/* Check for required types. */ +struct +{ + size_t a; + uid_t b; + volatile sig_atomic_t c; + sigset_t d; + pid_t e; +#if 0 + /* Not guaranteed by gnulib. */ + pthread_t f; + struct timespec g; +#endif +} s; int main (void) { - return s; + switch (0) + { + /* The following are guaranteed by C. */ + case 0: + case SIGABRT: + case SIGFPE: + case SIGILL: + case SIGINT: + case SIGSEGV: + case SIGTERM: + /* The following is guaranteed by gnulib. */ +#if GNULIB_SIGPIPE || defined SIGPIPE + case SIGPIPE: +#endif + /* Ensure no conflict with other standardized names. */ +#ifdef SIGALRM + case SIGALRM: +#endif +#ifdef SIGBUS + case SIGBUS: +#endif +#ifdef SIGCHLD + case SIGCHLD: +#endif +#ifdef SIGCONT + case SIGCONT: +#endif +#ifdef SIGHUP + case SIGHUP: +#endif +#ifdef SIGKILL + case SIGKILL: +#endif +#ifdef SIGQUIT + case SIGQUIT: +#endif +#ifdef SIGSTOP + case SIGSTOP: +#endif +#ifdef SIGTSTP + case SIGTSTP: +#endif +#ifdef SIGTTIN + case SIGTTIN: +#endif +#ifdef SIGTTOU + case SIGTTOU: +#endif +#ifdef SIGUSR1 + case SIGUSR1: +#endif +#ifdef SIGUSR2 + case SIGUSR2: +#endif +#ifdef SIGSYS + case SIGSYS: +#endif +#ifdef SIGTRAP + case SIGTRAP: +#endif +#ifdef SIGURG + case SIGURG: +#endif +#ifdef SIGVTALRM + case SIGVTALRM: +#endif +#ifdef SIGXCPU + case SIGXCPU: +#endif +#ifdef SIGXFSZ + case SIGXFSZ: +#endif +#ifdef SIG + case SIG: +#endif + /* SIGRTMIN and SIGRTMAX need not be compile-time constants. */ +#if 0 +# ifdef SIGRTMIN + case SIGRTMIN: +# endif +# ifdef SIGRTMAX + case SIGRTMAX: +# endif +#endif + ; + } + return s.a + s.b + s.c + s.e; } -- 2.30.2