strace/strace-pselect6.patch

66 lines
1.8 KiB
Diff

Extracted changelog (to only include the pselect6 changes):
2006-01-22 Ulrich Drepper <drepper@redhat.com>
* 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