]> granicus.if.org Git - strace/commitdiff
sigreturn: make use of RVAL_DECODED
authorDmitry V. Levin <ldv@altlinux.org>
Mon, 20 Jul 2015 21:33:09 +0000 (21:33 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Mon, 20 Jul 2015 22:03:07 +0000 (22:03 +0000)
* sigreturn.c (arch_sigreturn): New function.
(sys_sigreturn): Use it.  Return RVAL_DECODED.
* linux/alpha/arch_sigreturn.c: Update.
* linux/crisv10/arch_sigreturn.c: Likewise.
* linux/m68k/arch_sigreturn.c: Likewise.
* linux/microblaze/arch_sigreturn.c: Likewise.
* linux/x86_64/arch_sigreturn.c: Likewise.

linux/alpha/arch_sigreturn.c
linux/crisv10/arch_sigreturn.c
linux/m68k/arch_sigreturn.c
linux/microblaze/arch_sigreturn.c
linux/x86_64/arch_sigreturn.c
sigreturn.c

index 278bae194937e6ba7b2ed537e9ced3a8b991380c..b70eb1d73527326c658c30a87d26dd89b81f522f 100644 (file)
@@ -1,7 +1,7 @@
 long addr;
 
 if (upeek(tcp->pid, REG_FP, &addr) < 0)
-       return 0;
+       return;
 addr += offsetof(struct sigcontext, sc_mask);
 
 tprints("{mask=");
index b9e6a2474d92088864798b82f6e398554ecff155..9dc09f344fbc41e02fdaf0ac571eeae845a26444 100644 (file)
@@ -2,7 +2,7 @@ long regs[PT_MAX + 1];
 
 if (ptrace(PTRACE_GETREGS, tcp->pid, NULL, (long)regs) < 0) {
        perror_msg("sigreturn: PTRACE_GETREGS");
-       return 0;
+       return;
 }
 const long addr = regs[PT_USP] + offsetof(struct sigcontext, oldmask);
 
index c3d3ea19a5ff441117525b9a9bde9fe079e1888e..a2ccac64e06e047e44247745087de965789a15e7 100644 (file)
@@ -1,20 +1,20 @@
 long addr;
 
 if (upeek(tcp->pid, 4*PT_USP, &addr) < 0)
-       return 0;
+       return;
 /* Fetch pointer to struct sigcontext.  */
 if (umove(tcp, addr + 2 * sizeof(int), &addr) < 0)
-       return 0;
+       return;
 
 unsigned long mask[NSIG / 8 / sizeof(long)];
 /* Fetch first word of signal mask.  */
 if (umove(tcp, addr, &mask[0]) < 0)
-       return 0;
+       return;
 
 /* Fetch remaining words of signal mask, located immediately before.  */
 addr -= sizeof(mask) - sizeof(long);
 if (umoven(tcp, addr, sizeof(mask) - sizeof(long), &mask[1]) < 0)
-       return 0;
+       return;
 
 tprintsigmask_addr("{mask=", mask);
 tprints("}");
index 8e2e7b8992989b24857c850541560f0e7b3ba265..0c7f99cd86a78198b5566c9a5fa2965c9fd7e765 100644 (file)
@@ -4,7 +4,7 @@ long addr;
 
 /* Read r1, the stack pointer.  */
 if (upeek(tcp->pid, 1 * 4, &addr) < 0)
-       return 0;
+       return;
 addr += offsetof(struct sigcontext, oldmask);
 
 tprints("{mask=");
index 62aeca5e84916e3db89da23c9ad79d28001c528e..af49778b3cc45f1ec2b7c3255638c24c2a8dd8b4 100644 (file)
@@ -5,6 +5,6 @@ if (current_personality != 1) {
        tprints("{mask=");
        print_sigset_addr_len(tcp, addr, NSIG / 8);
        tprints("}");
-       return 0;
+       return;
 }
 #include "i386/arch_sigreturn.c"
index 659d5af9ef353c603b2efce92455adfc87b93e4f..9f2e32de223d52a4592259d4a4322c96195ff0e0 100644 (file)
 # error NSIG < 32
 #endif
 
-SYS_FUNC(sigreturn)
+static void
+arch_sigreturn(struct tcb *tcp)
 {
-       if (entering(tcp)) {
 #include "arch_sigreturn.c"
-       }
-       return 0;
+}
+
+SYS_FUNC(sigreturn)
+{
+       arch_sigreturn(tcp);
+
+       return RVAL_DECODED;
 }