My fix is to edit /usr/include/signal.h and comment out all the optimized
versions of the signal routines:
#if 0 /* added by me */
#define __sigemptyset(set) ((*(set) = 0L), 0)
#define __sigfillset(set) ((*(set) = -1L), 0)
#define __sigaddset(set, sig) ((*(set) |= __sigmask (sig)), 0)
#define __sigdelset(set, sig) ((*(set) &= ~__sigmask (sig)), 0)
#define __sigismember(set, sig) ((*(set) & __sigmask (sig)) ? 1 : 0)
#ifdef __OPTIMIZE__
#define sigemptyset __sigemptyset
#define sigfillset __sigfillset
/* We don't do that any more since it causes problems due to
* "sig" > _NSIG and "sig" < 1. It isn't worth the touble to make
* them inline and static. Use __sigxxxxx if you want speed with
* correct "sig".
*/
#if 0
#define sigaddset __sigaddset
#define sigdelset __sigdelset
#define sigismember __sigismember
#endif
#endif
#endif /* added by me */