diff --git a/lib/linux/signal.c b/lib/linux/signal.c index 75352599..d2f05b6f 100644 --- a/lib/linux/signal.c +++ b/lib/linux/signal.c @@ -26,7 +26,7 @@ #if __i386__ #else void -_restorer (void) +_restorer_for_siginfo (void) { _sys_call (SYS_rt_sigreturn); } @@ -44,12 +44,12 @@ signal (int signum, sighandler_t action) unsigned short itembitcount; setup_action.sa_handler = action; - setup_action.sa_restorer = _restorer; + setup_action.sa_restorer = _restorer_for_siginfo; bitindex = signum - 1; itembitcount = 8 * sizeof(setup_action.sa_mask.items[0]); setup_action.sa_mask.items[bitindex / itembitcount] = 1UL << (bitindex % itembitcount); old.sa_handler = SIG_DFL; - setup_action.sa_flags = SA_RESTORER | SA_RESTART; + setup_action.sa_flags = SA_RESTORER | SA_RESTART | SA_SIGINFO; int r = _sys_call4 (SYS_rt_sigaction, signum, &setup_action, &old, sizeof (sigset_t)); if (r) return 0;