Extracted changelog (to only include the pselect6 changes): 2006-01-22 Ulrich Drepper * defs.h: Declare sprintsigmask. * desc.c (sys_pselect): New function. * signal.c: Export sprintsigmask. Hooking up the new function is done in the syscalls.diff Origin: pselect6 syscall from attachment https://bugzilla.redhat.com/bugzilla/attachment.cgi?id=123547 of bug: https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=178633 --- strace-4.5.14-old/signal.c 2006-01-12 14:34:50.000000000 -0800 +++ strace-4.5.14/signal.c 2006-01-20 22:03:27.000000000 -0800 @@ -313,7 +313,7 @@ int len; #define copy_sigset(tcp, addr, s) copy_sigset_len(tcp, addr, s, sizeof(sigset_t)) #endif -static char * +char * sprintsigmask(s, mask, rt) char *s; sigset_t *mask; --- strace-4.5.14-old/defs.h 2006-01-12 02:18:53.000000000 -0800 +++ strace-4.5.14/defs.h 2006-01-20 22:01:25.000000000 -0800 @@ -462,6 +462,7 @@ extern int sigishandled P((struct tcb *, extern void printcall P((struct tcb *)); extern const char *signame P((int)); extern void printsignal P((int)); +extern char *sprintsigmask P((char *, sigset_t *, int)); extern void printleader P((struct tcb *)); extern void printtrailer P((struct tcb *)); extern void tabto P((int)); --- strace-4.5.14-old/desc.c 2005-06-01 12:22:07.000000000 -0700 +++ strace-4.5.14/desc.c 2006-01-20 22:09:31.000000000 -0800 @@ -871,3 +871,25 @@ int long *args = tcp->u_arg; return decode_select(tcp, args, 0); } + +#ifdef LINUX +int +sys_pselect6(tcp) +struct tcb *tcp; +{ + int rc = decode_select(tcp, tcp->u_arg, 0); + if (exiting(tcp)) { + struct { + void *ss; + size_t len; + } data; + sigset_t ss; + if (umove(tcp, tcp->u_arg[5], &data) < 0 + || umoven(tcp, data.ss, data.len, &ss) < 0) + tprintf("{?}, ?"); + else + tprintf(", %s, %zu", sprintsigmask("", &ss, 1), data.len); + } + return rc; +} +#endif