From: Elvira Khabirova Date: Mon, 3 Aug 2015 23:16:29 +0000 (+0300) Subject: Mpersify parser of sigaltstack syscall X-Git-Tag: v4.11~239 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=cbbc23a2a4fd4da37f7912450ef3f49d25a56717;p=strace Mpersify parser of sigaltstack syscall Fix multiple personalities support in parser of sigaltstack syscall by mpersifying stack_t typedef. * sigaltstack.c (stack_t): Mpersify. (print_stack_t): Use it. --- diff --git a/sigaltstack.c b/sigaltstack.c index 1a4a2295..cd02794d 100644 --- a/sigaltstack.c +++ b/sigaltstack.c @@ -1,7 +1,11 @@ #include "defs.h" +#include DEF_MPERS_TYPE(stack_t) + #include +#include MPERS_DEFS + #include "xlat/sigaltstack_flags.h" static void @@ -9,23 +13,6 @@ print_stack_t(struct tcb *tcp, unsigned long addr) { stack_t ss; -#if SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4 - if (current_wordsize != sizeof(ss.ss_sp) && current_wordsize == 4) { - struct { - uint32_t ss_sp; - int32_t ss_flags; - uint32_t ss_size; - } ss32; - - if (umove_or_printaddr(tcp, addr, &ss32)) - return; - - memset(&ss, 0, sizeof(ss)); - ss.ss_sp = (void*)(unsigned long) ss32.ss_sp; - ss.ss_flags = ss32.ss_flags; - ss.ss_size = (unsigned long) ss32.ss_size; - } else -#endif if (umove_or_printaddr(tcp, addr, &ss)) return;