diff options
-rw-r--r-- | aio.c | 6 | ||||
-rw-r--r-- | block.c | 4 | ||||
-rw-r--r-- | defs.h | 37 | ||||
-rw-r--r-- | get_robust_list.c | 4 | ||||
-rw-r--r-- | io.c | 11 | ||||
-rw-r--r-- | ipc.c | 5 | ||||
-rw-r--r-- | prctl.c | 4 | ||||
-rw-r--r-- | process.c | 2 | ||||
-rw-r--r-- | rtc.c | 2 | ||||
-rw-r--r-- | util.c | 15 |
10 files changed, 49 insertions, 41 deletions
@@ -43,11 +43,7 @@ SYS_FUNC(io_setup) if (entering(tcp)) tprintf("%ld, ", tcp->u_arg[0]); else -#ifdef X32 - printnum_int64(tcp, tcp->u_arg[1], "%" PRIu64); -#else - printnum_long(tcp, tcp->u_arg[1], "%lu"); -#endif + printnum_ulong(tcp, tcp->u_arg[1]); return 0; } @@ -165,7 +165,7 @@ block_ioctl(struct tcb *tcp, const unsigned int code, const long arg) if (entering(tcp)) return 0; tprints(", "); - printnum_long(tcp, arg, "%ld"); + printnum_slong(tcp, arg); break; /* returns an unsigned long */ @@ -173,7 +173,7 @@ block_ioctl(struct tcb *tcp, const unsigned int code, const long arg) if (entering(tcp)) return 0; tprints(", "); - printnum_long(tcp, arg, "%lu"); + printnum_ulong(tcp, arg); break; #ifdef HAVE_BLKGETSIZE64 @@ -534,24 +534,39 @@ extern void printnum_short(struct tcb *, long, const char *) ATTRIBUTE_FORMAT((printf, 3, 0)); extern void printnum_int(struct tcb *, long, const char *) ATTRIBUTE_FORMAT((printf, 3, 0)); -extern void printnum_long(struct tcb *, long, const char *) - ATTRIBUTE_FORMAT((printf, 3, 0)); -#if SIZEOF_LONG == 8 -# define printnum_int64 printnum_long -#else extern void printnum_int64(struct tcb *, long, const char *) ATTRIBUTE_FORMAT((printf, 3, 0)); + +#if SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4 +extern void printnum_long_int(struct tcb *, long, const char *, const char *) + ATTRIBUTE_FORMAT((printf, 3, 0)) + ATTRIBUTE_FORMAT((printf, 4, 0)); +# define printnum_slong(tcp, addr) \ + printnum_long_int((tcp), (addr), "%" PRId64, "%d") +# define printnum_ulong(tcp, addr) \ + printnum_long_int((tcp), (addr), "%" PRIu64, "%u") +# define printnum_ptr(tcp, addr) \ + printnum_long_int((tcp), (addr), "%#" PRIx64, "%#x") +#elif SIZEOF_LONG > 4 +# define printnum_slong(tcp, addr) \ + printnum_int64((tcp), (addr), "%" PRId64) +# define printnum_ulong(tcp, addr) \ + printnum_int64((tcp), (addr), "%" PRIu64) +# define printnum_ptr(tcp, addr) \ + printnum_int64((tcp), (addr), "%#" PRIx64) +#else +# define printnum_slong(tcp, addr) \ + printnum_int((tcp), (addr), "%d") +# define printnum_ulong(tcp, addr) \ + printnum_int((tcp), (addr), "%u") +# define printnum_ptr(tcp, addr) \ + printnum_int((tcp), (addr), "%#x") #endif + extern void printpair_int(struct tcb *, long, const char *) ATTRIBUTE_FORMAT((printf, 3, 0)); -extern void printpair_long(struct tcb *, long, const char *) - ATTRIBUTE_FORMAT((printf, 3, 0)); -#if SIZEOF_LONG == 8 -# define printpair_int64 printpair_long -#else extern void printpair_int64(struct tcb *, long, const char *) ATTRIBUTE_FORMAT((printf, 3, 0)); -#endif extern void printpath(struct tcb *, long); extern void printpathn(struct tcb *, long, unsigned int); #define TIMESPEC_TEXT_BUFSIZE (sizeof(long)*3 * 2 + sizeof("{%u, %u}")) diff --git a/get_robust_list.c b/get_robust_list.c index 02f814827..beec52b38 100644 --- a/get_robust_list.c +++ b/get_robust_list.c @@ -5,9 +5,9 @@ SYS_FUNC(get_robust_list) if (entering(tcp)) { tprintf("%ld, ", (long) (pid_t) tcp->u_arg[0]); } else { - printnum_long(tcp, tcp->u_arg[1], "%#lx"); + printnum_ptr(tcp, tcp->u_arg[1]); tprints(", "); - printnum_long(tcp, tcp->u_arg[2], "%lu"); + printnum_ulong(tcp, tcp->u_arg[2]); } return 0; } @@ -244,22 +244,13 @@ SYS_FUNC(pwritev) return RVAL_DECODED; } -static void -print_off_t(struct tcb *tcp, long addr) -{ - if (current_wordsize == sizeof(int)) - printnum_int(tcp, addr, "%u"); - else - printnum_long(tcp, addr, "%lu"); -} - SYS_FUNC(sendfile) { printfd(tcp, tcp->u_arg[0]); tprints(", "); printfd(tcp, tcp->u_arg[1]); tprints(", "); - print_off_t(tcp, tcp->u_arg[2]); + printnum_ulong(tcp, tcp->u_arg[2]); tprintf(", %lu", tcp->u_arg[3]); return RVAL_DECODED; @@ -244,10 +244,7 @@ SYS_FUNC(semctl) PRINTCTL(semctl_flags, tcp->u_arg[2], "SEM_???"); tprints(", "); if (indirect_ipccall(tcp)) { - if (current_wordsize == sizeof(int)) - printnum_int(tcp, tcp->u_arg[3], "%#x"); - else - printnum_long(tcp, tcp->u_arg[3], "%#lx"); + printnum_ptr(tcp, tcp->u_arg[3]); } else { tprintf("%#lx", tcp->u_arg[3]); } @@ -100,7 +100,7 @@ SYS_FUNC(prctl) if (entering(tcp)) tprints(", "); else - printnum_long(tcp, tcp->u_arg[1], "%#lx"); + printnum_ptr(tcp, tcp->u_arg[1]); break; case PR_GET_TSC: @@ -292,7 +292,7 @@ SYS_FUNC(arch_prctl) if (entering(tcp)) tprints(", "); else - printnum_long(tcp, tcp->u_arg[1], "%#lx"); + printnum_ptr(tcp, tcp->u_arg[1]); return 0; } @@ -127,7 +127,7 @@ SYS_FUNC(ptrace) #ifdef IA64 return RVAL_HEX; #else - printnum_long(tcp, tcp->u_arg[3], "%#lx"); + printnum_ptr(tcp, tcp->u_arg[3]); break; #endif case PTRACE_GETSIGINFO: { @@ -90,7 +90,7 @@ rtc_ioctl(struct tcb *tcp, const unsigned int code, const long arg) if (entering(tcp)) return 0; tprints(", "); - printnum_long(tcp, arg, "%lu"); + printnum_ulong(tcp, arg); break; case RTC_WKALM_SET: decode_rtc_wkalrm(tcp, arg); @@ -410,14 +410,23 @@ printpair_ ## name(struct tcb *tcp, const long addr, const char *fmt) \ } \ } -DEF_PRINTNUM(long, long) -DEF_PRINTPAIR(long, long) DEF_PRINTNUM(int, int) DEF_PRINTPAIR(int, int) DEF_PRINTNUM(short, short) -#if SIZEOF_LONG != 8 DEF_PRINTNUM(int64, uint64_t) DEF_PRINTPAIR(int64, uint64_t) + +#if SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4 +void +printnum_long_int(struct tcb *tcp, const long addr, + const char *fmt_long, const char *fmt_int) +{ + if (current_wordsize > sizeof(int)) { + printnum_int64(tcp, addr, fmt_long); + } else { + printnum_int(tcp, addr, fmt_int); + } +} #endif const char * |