X-Git-Url: https://granicus.if.org/sourcecode?a=blobdiff_plain;f=io.c;h=dbef2e65b83eb2f9bb28ed6d789f032136c92070;hb=a1e94e9c7af845c06cd447ca12eec2641ceb4e7c;hp=d225eb6bd6481c47b83c7a700bac210fc1fc54b6;hpb=5c252f970dfe14f2b3bb6908b23e6825dab8863c;p=strace diff --git a/io.c b/io.c index d225eb6b..dbef2e65 100644 --- a/io.c +++ b/io.c @@ -41,8 +41,8 @@ SYS_FUNC(read) if (syserror(tcp)) printaddr(tcp->u_arg[1]); else - printstr(tcp, tcp->u_arg[1], tcp->u_rval); - tprintf(", %lu", tcp->u_arg[2]); + printstrn(tcp, tcp->u_arg[1], tcp->u_rval); + tprintf(", %" PRI_klu, tcp->u_arg[2]); } return 0; } @@ -51,22 +51,22 @@ SYS_FUNC(write) { printfd(tcp, tcp->u_arg[0]); tprints(", "); - printstr(tcp, tcp->u_arg[1], tcp->u_arg[2]); - tprintf(", %lu", tcp->u_arg[2]); + printstrn(tcp, tcp->u_arg[1], tcp->u_arg[2]); + tprintf(", %" PRI_klu, tcp->u_arg[2]); return RVAL_DECODED; } struct print_iovec_config { enum iov_decode decode_iov; - unsigned long data_size; + kernel_ulong_t data_size; }; static bool print_iovec(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data) { - const unsigned long *iov; - unsigned long iov_buf[2], len; + const kernel_ulong_t *iov; + kernel_ulong_t iov_buf[2], len; struct print_iovec_config *c = data; if (elem_size < sizeof(iov_buf)) { @@ -85,14 +85,14 @@ print_iovec(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data) case IOV_DECODE_STR: if (len > c->data_size) len = c->data_size; - if (c->data_size != -1UL) + if (c->data_size != (kernel_ulong_t) -1) c->data_size -= len; - printstr(tcp, iov[0], len); + printstrn(tcp, iov[0], len); break; case IOV_DECODE_NETLINK: if (len > c->data_size) len = c->data_size; - if (c->data_size != -1UL) + if (c->data_size != (kernel_ulong_t) -1) c->data_size -= len; decode_netlink(tcp, iov[0], iov[1]); break; @@ -101,7 +101,7 @@ print_iovec(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data) break; } - tprintf(", iov_len=%lu}", iov[1]); + tprintf(", iov_len=%" PRI_klu "}", iov[1]); return true; } @@ -111,11 +111,11 @@ print_iovec(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data) * Example: recvmsg returing a short read. */ void -tprint_iov_upto(struct tcb *const tcp, const unsigned long len, - const kernel_ureg_t addr, const enum iov_decode decode_iov, - const unsigned long data_size) +tprint_iov_upto(struct tcb *const tcp, const kernel_ulong_t len, + const kernel_ulong_t addr, const enum iov_decode decode_iov, + const kernel_ulong_t data_size) { - unsigned long iov[2]; + kernel_ulong_t iov[2]; struct print_iovec_config config = { .decode_iov = decode_iov, .data_size = data_size }; @@ -132,7 +132,7 @@ SYS_FUNC(readv) tprint_iov_upto(tcp, tcp->u_arg[2], tcp->u_arg[1], syserror(tcp) ? IOV_DECODE_ADDR : IOV_DECODE_STR, tcp->u_rval); - tprintf(", %lu", tcp->u_arg[2]); + tprintf(", %" PRI_klu, tcp->u_arg[2]); } return 0; } @@ -142,7 +142,7 @@ SYS_FUNC(writev) printfd(tcp, tcp->u_arg[0]); tprints(", "); tprint_iov(tcp, tcp->u_arg[2], tcp->u_arg[1], IOV_DECODE_STR); - tprintf(", %lu", tcp->u_arg[2]); + tprintf(", %" PRI_klu, tcp->u_arg[2]); return RVAL_DECODED; } @@ -156,8 +156,8 @@ SYS_FUNC(pread) if (syserror(tcp)) printaddr(tcp->u_arg[1]); else - printstr(tcp, tcp->u_arg[1], tcp->u_rval); - tprintf(", %lu, ", tcp->u_arg[2]); + printstrn(tcp, tcp->u_arg[1], tcp->u_rval); + tprintf(", %" PRI_klu ", ", tcp->u_arg[2]); printllval(tcp, "%lld", 3); } return 0; @@ -167,8 +167,8 @@ SYS_FUNC(pwrite) { printfd(tcp, tcp->u_arg[0]); tprints(", "); - printstr(tcp, tcp->u_arg[1], tcp->u_arg[2]); - tprintf(", %lu, ", tcp->u_arg[2]); + printstrn(tcp, tcp->u_arg[1], tcp->u_arg[2]); + tprintf(", %" PRI_klu ", ", tcp->u_arg[2]); printllval(tcp, "%lld", 3); return RVAL_DECODED; @@ -180,16 +180,16 @@ print_lld_from_low_high_val(struct tcb *tcp, int arg) #if SIZEOF_LONG > 4 && SIZEOF_LONG == SIZEOF_LONG_LONG # ifndef current_klongsize if (current_klongsize < SIZEOF_LONG) { - tprintf("%ld", (tcp->u_arg[arg + 1] << current_wordsize * 8) + tprintf("%" PRI_kld, (tcp->u_arg[arg + 1] << current_wordsize * 8) | tcp->u_arg[arg]); } else # endif /* !current_klongsize */ { - tprintf("%ld", tcp->u_arg[arg]); + tprintf("%" PRI_kld, tcp->u_arg[arg]); } #elif SIZEOF_LONG > 4 # error Unsupported configuration: SIZEOF_LONG > 4 && SIZEOF_LONG_LONG > SIZEOF_LONG -#elif HAVE_STRUCT_TCB_EXT_ARG +#elif SIZEOF_KERNEL_LONG_T > SIZEOF_LONG # ifndef current_klongsize if (current_klongsize < SIZEOF_LONG_LONG) { tprintf("%lld", @@ -198,9 +198,9 @@ print_lld_from_low_high_val(struct tcb *tcp, int arg) } else # endif /* !current_klongsize */ { - tprintf("%lld", tcp->ext_arg[arg]); + tprintf("%" PRI_kld, tcp->u_arg[arg]); } -#else /* SIZEOF_LONG_LONG > SIZEOF_LONG && !HAVE_STRUCT_TCB_EXT_ARG */ +#else /* SIZEOF_LONG_LONG > SIZEOF_LONG && SIZEOF_KERNEL_LONG_T == SIZEOF_LONG */ tprintf("%lld", (zero_extend_signed_to_ull(tcp->u_arg[arg + 1]) << sizeof(long) * 8) | zero_extend_signed_to_ull(tcp->u_arg[arg])); @@ -280,7 +280,7 @@ SYS_FUNC(tee) printfd(tcp, tcp->u_arg[1]); tprints(", "); /* size_t len */ - tprintf("%lu, ", tcp->u_arg[2]); + tprintf("%" PRI_klu ", ", tcp->u_arg[2]); /* unsigned int flags */ printflags(splice_flags, tcp->u_arg[3], "SPLICE_F_???"); @@ -302,7 +302,7 @@ SYS_FUNC(splice) printnum_int64(tcp, tcp->u_arg[3], "%" PRId64); tprints(", "); /* size_t len */ - tprintf("%lu, ", tcp->u_arg[4]); + tprintf("%" PRI_klu ", ", tcp->u_arg[4]); /* unsigned int flags */ printflags(splice_flags, tcp->u_arg[5], "SPLICE_F_???"); @@ -316,7 +316,7 @@ SYS_FUNC(vmsplice) tprints(", "); /* const struct iovec *iov, unsigned long nr_segs */ tprint_iov(tcp, tcp->u_arg[2], tcp->u_arg[1], IOV_DECODE_STR); - tprintf(", %lu, ", tcp->u_arg[2]); + tprintf(", %" PRI_klu ", ", tcp->u_arg[2]); /* unsigned int flags */ printflags(splice_flags, tcp->u_arg[3], "SPLICE_F_???");