Package: strace
Version: 4.5.15-1
Severity: important
Tags: patch

Strace currently fails to build on Linux/MIPS because sigcontext
has changed (sc_sigset is gone). The appended patch fixes it.


Thiemo


--- signal.c.orig       2007-10-31 02:18:25.000000000 +0000
+++ signal.c    2007-11-01 01:48:41.000000000 +0000
@@ -97,6 +97,11 @@ typedef struct {
        struct regs             si_regs;
        int                     si_mask;
 } m_siginfo_t;
+#elif defined (MIPS)
+typedef struct {
+       struct pt_regs          si_regs;
+       int                     si_mask;
+} m_siginfo_t;
 #elif defined HAVE_ASM_SIGCONTEXT_H
 #if !defined(IA64) && !defined(X86_64)
 #include <asm/sigcontext.h>
@@ -1426,21 +1431,27 @@ struct tcb *tcp;
 #else
 #ifdef MIPS
        long sp;
-       struct sigcontext sc;
+       struct pt_regs regs;
+       m_siginfo_t si;
 
+       if(ptrace(PTRACE_GETREGS, tcp->pid, (char *)&regs, 0) < 0) {
+               perror("sigreturn: PTRACE_GETREGS ");
+               return 0;
+       }
        if(entering(tcp)) {
                tcp->u_arg[0] = 0;
-               if (upeek(tcp->pid, REG_SP, &sp) < 0)
-                       return 0;
-               if (umove(tcp, sp, &sc) < 0)
+               sp = regs.regs[29];
+               if (umove(tcp, sp, &si) < 0)
                        return 0;
                tcp->u_arg[0] = 1;
-               tcp->u_arg[1] = sc.sc_sigset;
+               tcp->u_arg[1] = si.si_mask;
        } else {
-               tcp->u_rval = tcp->u_error = 0;
+               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 ", tcp->u_arg[1]);
+                       return 0;
+               tcp->auxstr = sprintsigmask("mask now ", &sigm, 0);
                return RVAL_NONE | RVAL_STR;
        }
        return 0;



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to