diff options
author | wbx <wbx@hydrogenium.(none)> | 2009-05-17 14:41:34 +0200 |
---|---|---|
committer | wbx <wbx@hydrogenium.(none)> | 2009-05-17 14:41:34 +0200 |
commit | 219a6dab8995aad9ac4860cc1a84d6f3509a03a4 (patch) | |
tree | b9c0f3c43aebba2fcfef777592d0add39f2072f4 /package/strace/patches/patch-signal_c |
Initial import
Diffstat (limited to 'package/strace/patches/patch-signal_c')
-rw-r--r-- | package/strace/patches/patch-signal_c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/package/strace/patches/patch-signal_c b/package/strace/patches/patch-signal_c new file mode 100644 index 000000000..76795fbf6 --- /dev/null +++ b/package/strace/patches/patch-signal_c @@ -0,0 +1,42 @@ +$Id: update-patches 24 2008-08-31 14:56:13Z wbx $ +--- strace-4.5.18.orig/signal.c 2008-08-20 03:59:40.000000000 +0200 ++++ strace-4.5.18/signal.c 2009-01-02 21:24:05.502094888 +0100 +@@ -1485,9 +1485,38 @@ struct tcb *tcp; + } + return 0; + #else ++#if defined(CRISV10) || defined(CRISV32) ++ struct sigcontext sc; ++ ++ if (entering(tcp)) { ++ long regs[PT_MAX+1]; ++ ++ tcp->u_arg[0] = 0; ++ ++ if (ptrace(PTRACE_GETREGS, tcp->pid, NULL, (long)regs) < 0) { ++ perror("sigreturn: PTRACE_GETREGS"); ++ return 0; ++ } ++ if (umove(tcp, regs[PT_USP], &sc) < 0) ++ return 0; ++ tcp->u_arg[0] = 1; ++ tcp->u_arg[1] = sc.oldmask; ++ } else { ++ sigset_t sigm; ++ ++ long_to_sigset(tcp->u_arg[1], &sigm); ++ tcp->u_rval = tcp->u_error = 0; ++ if (tcp->u_arg[0] == 0) ++ return 0; ++ tcp->auxstr = sprintsigmask("mask now ", &sigm, 0); ++ return RVAL_NONE | RVAL_STR; ++ } ++ return 0; ++#else + #warning No sys_sigreturn() for this architecture + #warning (no problem, just a reminder :-) + return 0; ++#endif /* !CRISV10/!CRISV32 */ + #endif /* MIPS */ + #endif /* LINUX_MIPSN32 || LINUX_MIPSN64 */ + #endif /* SPARC || SPARC64 */ |