From: Dmitry V. Levin Date: Fri, 17 Jul 2015 01:05:46 +0000 (+0000) Subject: sigaltstack.c: use printaddr and umove_or_printaddr X-Git-Tag: v4.11~424 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=401295ea320c2d1dc3998ad1331b1753a629cc28;p=strace sigaltstack.c: use printaddr and umove_or_printaddr * sigaltstack.c (print_stack_t): Use umove_or_printaddr and printaddr. --- diff --git a/sigaltstack.c b/sigaltstack.c index b3b834f1..f59643d5 100644 --- a/sigaltstack.c +++ b/sigaltstack.c @@ -5,12 +5,6 @@ static void print_stack_t(struct tcb *tcp, unsigned long addr) { stack_t ss; - int r; - - if (!addr) { - tprints("NULL"); - return; - } #if SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4 if (current_wordsize != sizeof(ss.ss_sp) && current_wordsize == 4) { @@ -19,33 +13,32 @@ print_stack_t(struct tcb *tcp, unsigned long addr) int32_t ss_flags; uint32_t ss_size; } ss32; - r = umove(tcp, addr, &ss32); - if (r >= 0) { - 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; - } + + 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 - { - r = umove(tcp, addr, &ss); - } - if (r < 0) { - tprintf("%#lx", addr); - } else { - tprintf("{ss_sp=%#lx, ss_flags=", (unsigned long) ss.ss_sp); - printflags(sigaltstack_flags, ss.ss_flags, "SS_???"); - tprintf(", ss_size=%lu}", (unsigned long) ss.ss_size); - } + if (umove_or_printaddr(tcp, addr, &ss)) + return; + + tprints("{ss_sp="); + printaddr((unsigned long) ss.ss_sp); + tprints(", ss_flags="); + printflags(sigaltstack_flags, ss.ss_flags, "SS_???"); + tprintf(", ss_size=%lu}", (unsigned long) ss.ss_size); } SYS_FUNC(sigaltstack) { if (entering(tcp)) { print_stack_t(tcp, tcp->u_arg[0]); - } else { tprints(", "); + } else { print_stack_t(tcp, tcp->u_arg[1]); } return 0;