Hi Wichert, Somebody made their own "struct new_sigaction". God knows why. It should be #ifdef'd if it's actually useful to someone (right?), but it's incompatible with linux-mips. My patch... using the struct sigaction out of the standard #includes... Works For Me TM. Cheers, Andrew diff -rpu strace-4.4/signal.c strace-4.4-fixed/signal.c --- strace-4.4/signal.c Sun Aug 19 22:06:50 2001 +++ strace-4.4-fixed/signal.c Thu Jan 23 23:30:59 2003 @@ -1363,26 +1363,11 @@ typedef struct siginfo } siginfo_t; #endif -/* Structure describing the action to be taken when a signal arrives. */ -struct new_sigaction -{ - union - { - __sighandler_t __sa_handler; - void (*__sa_sigaction) (int, siginfo_t *, void *); - } - __sigaction_handler; - unsigned long sa_flags; - void (*sa_restorer) (void); - unsigned long int sa_mask[2]; -}; - - int sys_rt_sigaction(tcp) struct tcb *tcp; { - struct new_sigaction sa; + struct sigaction sa; sigset_t sigset; long addr; @@ -1399,7 +1384,7 @@ sys_rt_sigaction(tcp) else if (umove(tcp, addr, &sa) < 0) tprintf("{...}"); else { - switch ((long) sa.__sigaction_handler.__sa_handler) { + switch ((long) sa.sa_handler) { case (long) SIG_ERR: tprintf("{SIG_ERR}"); break; @@ -1410,8 +1395,7 @@ sys_rt_sigaction(tcp) tprintf("{SIG_IGN}"); break; default: - tprintf("{%#lx, ", - (long) sa.__sigaction_handler.__sa_handler); + tprintf("{%#lx, ", (long) sa.sa_handler); sigemptyset(&sigset); #ifdef LINUXSPARC if (tcp->u_arg[4] <= sizeof(sigset))