]> granicus.if.org Git - strace/commitdiff
sparc: enhance decoding of signal number argument of sigaction syscall
authorDmitry V. Levin <ldv@altlinux.org>
Sun, 28 May 2017 17:13:29 +0000 (17:13 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Sun, 28 May 2017 17:13:29 +0000 (17:13 +0000)
On sparc, unlike all other architectures, old sigaction syscall takes
a negated signal number.

* signal.c (SYS_FUNC(sigaction)) [SPARC || SPARC64]: Enhance printing
of negative signal number argument.

signal.c

index 2e90bd03904aafd15d9d94ec1fb8ccd353a46826..79054c709e44ced129c49f32417f9c97ff9fc4f5 100644 (file)
--- a/signal.c
+++ b/signal.c
@@ -365,7 +365,14 @@ decode_old_sigaction(struct tcb *const tcp, const kernel_ulong_t addr)
 SYS_FUNC(sigaction)
 {
        if (entering(tcp)) {
-               printsignal(tcp->u_arg[0]);
+               int signo = tcp->u_arg[0];
+#if defined SPARC || defined SPARC64
+               if (signo < 0) {
+                       tprints("-");
+                       signo = -signo;
+               }
+#endif
+               printsignal(signo);
                tprints(", ");
                decode_old_sigaction(tcp, tcp->u_arg[1]);
                tprints(", ");