Index: lib/libthr/thread/thr_sig.c =================================================================== --- lib/libthr/thread/thr_sig.c (revision 271951) +++ lib/libthr/thread/thr_sig.c (working copy) @@ -143,9 +143,6 @@ errno = err; } -typedef void (*ohandler)(int sig, int code, - struct sigcontext *scp, char *addr, __sighandler_t *catcher); - /* * The signal handler wrapper is entered with all signal masked. */ @@ -188,7 +185,6 @@ { struct pthread *curthread = _get_curthread(); ucontext_t uc2; - __siginfohandler_t *sigfunc; int cancel_point; int cancel_async; int cancel_enable; @@ -224,8 +220,6 @@ /* restore correct mask before calling user handler */ __sys_sigprocmask(SIG_SETMASK, &actp->sa_mask, NULL); - sigfunc = actp->sa_sigaction; - /* * We have already reset cancellation point flags, so if user's code * longjmp()s out of its signal handler, wish its jmpbuf was set @@ -235,12 +229,9 @@ * re-set cancel_enable flag by calling pthread_setcancelstate(). */ if ((actp->sa_flags & SA_SIGINFO) != 0) - (*(sigfunc))(sig, info, ucp); - else { - ((ohandler)(*sigfunc))( - sig, info->si_code, (struct sigcontext *)ucp, - info->si_addr, (__sighandler_t *)sigfunc); - } + (*(actp->sa_sigaction))(sig, info, ucp); + else + (*(actp->sa_handler))(sig); err = errno; curthread->in_sigsuspend = in_sigsuspend;