Index: lib/direct/signals.c =================================================================== --- lib/direct/signals.c.orig 2005-12-23 04:47:58.000000000 +0200 +++ lib/direct/signals.c 2006-10-16 12:25:57.000000000 +0300 @@ -310,7 +310,11 @@ show_any( const siginfo_t *info ) } static void +#ifdef SA_SIGINFO signal_handler( int num, siginfo_t *info, void *foo ) +#else +signal_handler( int num ) +#endif { DirectLink *l, *n; void *addr = NULL; @@ -320,6 +324,7 @@ signal_handler( int num, siginfo_t *info direct_log_printf( NULL, "(!) [%5d: %4lld.%03lld] --> Caught signal %d", pid, millis/1000, millis%1000, num ); +#ifdef SA_SIGINFO if (info && info > (siginfo_t*) 0x100) { bool shown = false; @@ -357,6 +362,7 @@ signal_handler( int num, siginfo_t *info direct_log_printf( NULL, " (unknown origin) <--\n" ); } else +#endif direct_log_printf( NULL, ", no siginfo available <--\n" ); direct_trace_print_stacks(); @@ -418,8 +424,13 @@ install_handlers() struct sigaction action; int signum = sigs_to_handle[i]; +#ifdef SA_SIGINFO action.sa_sigaction = signal_handler; action.sa_flags = SA_RESTART | SA_SIGINFO; +#else + action.sa_handler = signal_handler; + action.sa_flags = SA_RESTART; +#endif if (signum != SIGSEGV) action.sa_flags |= SA_RESETHAND;