66 lines
1.8 KiB
Diff
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
|