From: Dmitry V. Levin Date: Wed, 4 Mar 2015 12:11:31 +0000 (+0000) Subject: ia64: fix sigreturn decoding X-Git-Tag: v4.10~21 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1e8a454474ac2bbaa14819d962c0c3a9f3ce097e;p=strace ia64: fix sigreturn decoding * signal.c (sys_sigreturn) [IA64]: Fix the address of signal mask. Use print_sigset_addr_len to print signal mask. --- diff --git a/signal.c b/signal.c index 7342bbc8..10bbd1e6 100644 --- a/signal.c +++ b/signal.c @@ -814,15 +814,15 @@ sys_sigreturn(struct tcb *tcp) } #elif defined(IA64) if (entering(tcp)) { - struct sigcontext sc; - long sp; - /* offset of sigcontext in the kernel's sigframe structure: */ -# define SIGFRAME_SC_OFFSET 0x90 - if (upeek(tcp->pid, PT_R12, &sp) < 0) + long addr; + if (upeek(tcp->pid, PT_R12, &addr) < 0) return 0; - if (umove(tcp, sp + 16 + SIGFRAME_SC_OFFSET, &sc) < 0) - return 0; - tprintsigmask_val(") (mask ", sc.sc_mask); + /* offsetof(struct sigframe, sc) */ +# define OFFSETOF_STRUCT_SIGFRAME_SC 0xA0 + addr += 16 + OFFSETOF_STRUCT_SIGFRAME_SC + + offsetof(struct sigcontext, sc_mask); + tprints(") (mask "); + print_sigset_addr_len(tcp, addr, NSIG / 8); } #elif defined(POWERPC) if (entering(tcp)) {