]> granicus.if.org Git - strace/commitdiff
Mpersify parser of sigaltstack syscall
authorElvira Khabirova <lineprinter0@gmail.com>
Mon, 3 Aug 2015 23:16:29 +0000 (02:16 +0300)
committerDmitry V. Levin <ldv@altlinux.org>
Fri, 28 Aug 2015 08:46:23 +0000 (08:46 +0000)
Fix multiple personalities support in parser of sigaltstack syscall by
mpersifying stack_t typedef.

* sigaltstack.c (stack_t): Mpersify.
(print_stack_t): Use it.

sigaltstack.c

index 1a4a2295fd34c7d5c47796e3aa614b06690092a2..cd02794d03cb1be0989f4f829c0bf45730e5edee 100644 (file)
@@ -1,7 +1,11 @@
 #include "defs.h"
 
+#include DEF_MPERS_TYPE(stack_t)
+
 #include <signal.h>
 
+#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;