From: Dmitry V. Levin Date: Thu, 16 Jul 2015 18:18:09 +0000 (+0000) Subject: time.c: use printaddr, printnum_int, and umoven_or_printaddr X-Git-Tag: v4.11~440 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=71178358610ea6876001b3b81c96fd88dc5b0bb4;p=strace time.c: use printaddr, printnum_int, and umoven_or_printaddr * time.c (sys_nanosleep): Use printaddr. (printitv_bitness, tprint_timex32, tprint_timex, printsigevent32, printsigevent): Use umoven_or_printaddr. (sys_timer_create): Use printnum_int. (sys_getitimer, sys_osf_getitimer, sys_setitimer, sys_osf_setitimer, do_adjtimex, sys_timer_settime, sys_timer_gettime): Remove redundant checks for syserror. --- diff --git a/time.c b/time.c index 9864118e..fe516696 100644 --- a/time.c +++ b/time.c @@ -233,11 +233,8 @@ SYS_FUNC(nanosleep) switch (tcp->u_error) { default: /* Not interrupted (slept entire interval) */ - if (tcp->u_arg[1]) { - tprintf("%#lx", tcp->u_arg[1]); - break; - } - /* Fall through: print_timespec(NULL) prints "NULL" */ + printaddr(tcp->u_arg[1]); + break; case ERESTARTSYS: case ERESTARTNOINTR: case ERESTARTNOHAND: @@ -254,40 +251,28 @@ SYS_FUNC(nanosleep) static void printitv_bitness(struct tcb *tcp, long addr, enum bitness_t bitness) { - if (addr == 0) - tprints("NULL"); - else if (!verbose(tcp)) - tprintf("%#lx", addr); - else { - int rc; - - if (bitness == BITNESS_32 || current_time_t_is_compat) { - struct { - struct timeval32 it_interval, it_value; - } itv; - - rc = umove(tcp, addr, &itv); - if (rc >= 0) { - tprints("{it_interval="); - tprint_timeval32(tcp, &itv.it_interval); - tprints(", it_value="); - tprint_timeval32(tcp, &itv.it_value); - tprints("}"); - } - } else { - struct itimerval itv; - - rc = umove(tcp, addr, &itv); - if (rc >= 0) { - tprints("{it_interval="); - tprint_timeval(tcp, &itv.it_interval); - tprints(", it_value="); - tprint_timeval(tcp, &itv.it_value); - tprints("}"); - } + if (bitness == BITNESS_32 || current_time_t_is_compat) { + struct { + struct timeval32 it_interval, it_value; + } itv; + + if (!umove_or_printaddr(tcp, addr, &itv)) { + tprints("{it_interval="); + tprint_timeval32(tcp, &itv.it_interval); + tprints(", it_value="); + tprint_timeval32(tcp, &itv.it_value); + tprints("}"); + } + } else { + struct itimerval itv; + + if (!umove_or_printaddr(tcp, addr, &itv)) { + tprints("{it_interval="); + tprint_timeval(tcp, &itv.it_interval); + tprints(", it_value="); + tprint_timeval(tcp, &itv.it_value); + tprints("}"); } - if (rc < 0) - tprints("{...}"); } } @@ -300,10 +285,7 @@ SYS_FUNC(getitimer) printxval(itimer_which, tcp->u_arg[0], "ITIMER_???"); tprints(", "); } else { - if (syserror(tcp)) - tprintf("%#lx", tcp->u_arg[1]); - else - printitv(tcp, tcp->u_arg[1]); + printitv(tcp, tcp->u_arg[1]); } return 0; } @@ -315,10 +297,7 @@ SYS_FUNC(osf_getitimer) printxval(itimer_which, tcp->u_arg[0], "ITIMER_???"); tprints(", "); } else { - if (syserror(tcp)) - tprintf("%#lx", tcp->u_arg[1]); - else - printitv_bitness(tcp, tcp->u_arg[1], BITNESS_32); + printitv_bitness(tcp, tcp->u_arg[1], BITNESS_32); } return 0; } @@ -332,10 +311,7 @@ SYS_FUNC(setitimer) printitv(tcp, tcp->u_arg[1]); tprints(", "); } else { - if (syserror(tcp)) - tprintf("%#lx", tcp->u_arg[2]); - else - printitv(tcp, tcp->u_arg[2]); + printitv(tcp, tcp->u_arg[2]); } return 0; } @@ -349,10 +325,7 @@ SYS_FUNC(osf_setitimer) printitv_bitness(tcp, tcp->u_arg[1], BITNESS_32); tprints(", "); } else { - if (syserror(tcp)) - tprintf("%#lx", tcp->u_arg[2]); - else - printitv_bitness(tcp, tcp->u_arg[2], BITNESS_32); + printitv_bitness(tcp, tcp->u_arg[2], BITNESS_32); } return 0; } @@ -388,7 +361,7 @@ tprint_timex32(struct tcb *tcp, long addr) int stbcnt; } tx; - if (umove(tcp, addr, &tx) < 0) + if (umove_or_printaddr(tcp, addr, &tx)) return -1; tprints("{modes="); @@ -421,7 +394,7 @@ tprint_timex(struct tcb *tcp, long addr) if (current_time_t_is_compat) return tprint_timex32(tcp, addr); #endif - if (umove(tcp, addr, &tx) < 0) + if (umove_or_printaddr(tcp, addr, &tx)) return -1; #if LINUX_VERSION_CODE < 66332 @@ -458,13 +431,7 @@ tprint_timex(struct tcb *tcp, long addr) static int do_adjtimex(struct tcb *tcp, long addr) { - if (addr == 0) - tprints("NULL"); - else if (syserror(tcp) || !verbose(tcp)) - tprintf("%#lx", addr); - else if (tprint_timex(tcp, addr) < 0) - tprints("{...}"); - if (syserror(tcp)) + if (tprint_timex(tcp, addr)) return 0; tcp->auxstr = xlookup(adjtimex_state, tcp->u_rval); if (tcp->auxstr) @@ -572,9 +539,7 @@ printsigevent32(struct tcb *tcp, long arg) } un; } sev; - if (umove(tcp, arg, &sev) < 0) - tprints("{...}"); - else { + if (!umove_or_printaddr(tcp, arg, &sev)) { tprintf("{%#x, ", sev.sigev_value); if (sev.sigev_notify == SIGEV_SIGNAL) tprintf("%s, ", signame(sev.sigev_signo)); @@ -606,9 +571,7 @@ printsigevent(struct tcb *tcp, long arg) return; } #endif - if (umove(tcp, arg, &sev) < 0) - tprints("{...}"); - else { + if (!umove_or_printaddr(tcp, arg, &sev)) { tprintf("{%p, ", sev.sigev_value.sival_ptr); if (sev.sigev_notify == SIGEV_SIGNAL) tprintf("%s, ", signame(sev.sigev_signo)); @@ -645,12 +608,7 @@ SYS_FUNC(timer_create) printsigevent(tcp, tcp->u_arg[1]); tprints(", "); } else { - int timer_id; - - if (syserror(tcp) || umove(tcp, tcp->u_arg[2], &timer_id) < 0) - tprintf("%#lx", tcp->u_arg[2]); - else - tprintf("{%d}", timer_id); + printnum_int(tcp, tcp->u_arg[2], "%d"); } return 0; } @@ -658,16 +616,13 @@ SYS_FUNC(timer_create) SYS_FUNC(timer_settime) { if (entering(tcp)) { - tprintf("%#lx, ", tcp->u_arg[0]); + tprintf("%d, ", (int) tcp->u_arg[0]); printflags(clockflags, tcp->u_arg[1], "TIMER_???"); tprints(", "); printitv(tcp, tcp->u_arg[2]); tprints(", "); } else { - if (syserror(tcp)) - tprintf("%#lx", tcp->u_arg[3]); - else - printitv(tcp, tcp->u_arg[3]); + printitv(tcp, tcp->u_arg[3]); } return 0; } @@ -675,12 +630,9 @@ SYS_FUNC(timer_settime) SYS_FUNC(timer_gettime) { if (entering(tcp)) { - tprintf("%#lx, ", tcp->u_arg[0]); + tprintf("%d, ", (int) tcp->u_arg[0]); } else { - if (syserror(tcp)) - tprintf("%#lx", tcp->u_arg[1]); - else - printitv(tcp, tcp->u_arg[1]); + printitv(tcp, tcp->u_arg[1]); } return 0; }