]> granicus.if.org Git - strace/commitdiff
aio: print aio_context_t as a pointer type
authorDmitry V. Levin <ldv@altlinux.org>
Wed, 7 Sep 2016 11:22:51 +0000 (11:22 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Wed, 7 Sep 2016 13:01:29 +0000 (13:01 +0000)
As aio_context_t is treated by the kernel as a pointer,
print it using printaddr.

* aio.c (SYS_FUNC(io_setup)): Print the pointer to aio_context_t
argument using printnum_ptr.
(SYS_FUNC(io_destroy), SYS_FUNC(io_submit), SYS_FUNC(io_cancel),
SYS_FUNC(io_getevents)): Print aio_context_t argument using printaddr.
* tests/aio.c (sprint_aio_context_t): Remove.
(main): Update expected output.

aio.c
tests/aio.c

diff --git a/aio.c b/aio.c
index 7b908d45bcf198b6ce551d6c7d8c4d89ec2e2f47..7caccddf128b51c4aea2f0bb304de1d6e7aa641f 100644 (file)
--- a/aio.c
+++ b/aio.c
@@ -36,13 +36,13 @@ SYS_FUNC(io_setup)
        if (entering(tcp))
                tprintf("%u, ", (unsigned int) tcp->u_arg[0]);
        else
-               printnum_ulong(tcp, tcp->u_arg[1]);
+               printnum_ptr(tcp, tcp->u_arg[1]);
        return 0;
 }
 
 SYS_FUNC(io_destroy)
 {
-       tprintf("%lu", tcp->u_arg[0]);
+       printaddr(tcp->u_arg[0]);
 
        return RVAL_DECODED;
 }
@@ -185,7 +185,8 @@ SYS_FUNC(io_submit)
        const unsigned long addr = tcp->u_arg[2];
        unsigned long iocbp;
 
-       tprintf("%lu, %ld, ", tcp->u_arg[0], nr);
+       printaddr(tcp->u_arg[0]);
+       tprintf(", %ld, ", nr);
 
        if (nr < 0)
                printaddr(addr);
@@ -212,7 +213,9 @@ print_io_event(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data)
 SYS_FUNC(io_cancel)
 {
        if (entering(tcp)) {
-               tprintf("%lu, ", tcp->u_arg[0]);
+               printaddr(tcp->u_arg[0]);
+               tprints(", ");
+
                struct iocb cb;
 
                if (!umove_or_printaddr(tcp, tcp->u_arg[1], &cb)) {
@@ -233,8 +236,8 @@ SYS_FUNC(io_cancel)
 SYS_FUNC(io_getevents)
 {
        if (entering(tcp)) {
-               tprintf("%lu, %ld, %ld, ",
-                       tcp->u_arg[0],
+               printaddr(tcp->u_arg[0]);
+               tprintf(", %ld, %ld, ",
                        widen_to_long(tcp->u_arg[1]),
                        widen_to_long(tcp->u_arg[2]));
        } else {
index 891f6dd536ec9063a614a84deec1c1e9010bd939..b4ce9754803c00c0e80338ab8dfa3a6039407ea0 100644 (file)
  && defined __NR_io_destroy
 # include <linux/aio_abi.h>
 
-const char *
-sprint_aio_context_t(aio_context_t ctx)
-{
-       static char buf[sizeof("") + sizeof(aio_context_t) * 3];
-
-       if (sizeof(aio_context_t) > sizeof(long))
-               snprintf(buf, sizeof(buf), "%llu", (unsigned long long)ctx);
-       else
-               snprintf(buf, sizeof(buf), "%lu", (unsigned long)ctx);
-
-       return buf;
-}
 int
 main(void)
 {
@@ -229,26 +217,26 @@ main(void)
 
        if (syscall(__NR_io_setup, lnr, ctx))
                perror_msg_and_skip("io_setup");
-       printf("io_setup(%u, [%lu]) = 0\n", nr, *ctx);
+       printf("io_setup(%u, [%#lx]) = 0\n", nr, *ctx);
 
        rc = syscall(__NR_io_submit, (aio_context_t) 0xface1e55deadbeefLL,
                     (long) 0xca7faceddeadf00dLL, NULL);
-       printf("io_submit(%s, %ld, NULL) = %s\n",
-              sprint_aio_context_t((aio_context_t) 0xface1e55deadbeefLL),
+       printf("io_submit(%#lx, %ld, NULL) = %s\n",
+              (long) 0xface1e55deadbeefLL,
               (long) 0xca7faceddeadf00dLL, sprintrc(rc));
 
        rc = syscall(__NR_io_submit, *ctx, nr, cbs + nr);
-       printf("io_submit(%lu, %ld, %p) = %s\n",
-              *ctx, (long)nr, cbs + nr, sprintrc(rc));
+       printf("io_submit(%#lx, %ld, %p) = %s\n",
+              *ctx, (long) nr, cbs + nr, sprintrc(rc));
 
        rc = syscall(__NR_io_submit, *ctx, -1L, cbs);
-       printf("io_submit(%lu, -1, %p) = %s\n",
+       printf("io_submit(%#lx, -1, %p) = %s\n",
               *ctx, cbs, sprintrc(rc));
 
        rc = syscall(__NR_io_submit, *ctx, nr, cbs);
        if (rc != (long) nr)
                perror_msg_and_skip("io_submit");
-       printf("io_submit(%lu, %u, ["
+       printf("io_submit(%#lx, %u, ["
                "{data=%#llx, pread, reqprio=11, fildes=0, "
                        "buf=%p, nbytes=%u, offset=%lld}, "
                "{data=%#llx, pread, reqprio=22, fildes=0, "
@@ -264,21 +252,21 @@ main(void)
        rc = syscall(__NR_io_getevents, (aio_context_t) 0xface1e55deadbeefLL,
                     (long) 0xca7faceddeadf00dLL, (long) 0xba5e1e505ca571e0LL,
                     ev + 1, NULL);
-       printf("io_getevents(%s, %ld, %ld, %p, NULL) = %s\n",
-              sprint_aio_context_t((aio_context_t) 0xface1e55deadbeefLL),
+       printf("io_getevents(%#lx, %ld, %ld, %p, NULL) = %s\n",
+              (long) 0xface1e55deadbeefLL,
               (long) 0xca7faceddeadf00dLL, (long) 0xba5e1e505ca571e0LL,
               ev + 1, sprintrc(rc));
 
        rc = syscall(__NR_io_getevents, (aio_context_t) 0xface1e55deadbeefLL,
                     (long) 0xca7faceddeadf00dLL, (long) 0xba5e1e505ca571e0LL,
                     NULL, ts + 1);
-       printf("io_getevents(%s, %ld, %ld, NULL, %p) = %s\n",
-              sprint_aio_context_t((aio_context_t) 0xface1e55deadbeefLL),
+       printf("io_getevents(%#lx, %ld, %ld, NULL, %p) = %s\n",
+              (long) 0xface1e55deadbeefLL,
               (long) 0xca7faceddeadf00dLL, (long) 0xba5e1e505ca571e0LL,
               ts + 1, sprintrc(rc));
 
        rc = syscall(__NR_io_getevents, *ctx, nr, nr + 1, ev, ts);
-       printf("io_getevents(%lu, %ld, %ld, ["
+       printf("io_getevents(%#lx, %ld, %ld, ["
                "{data=%#llx, obj=%p, res=%u, res2=0}, "
                "{data=%#llx, obj=%p, res=%u, res2=0}"
                "], {0, 123456789}) = %s\n",
@@ -288,29 +276,29 @@ main(void)
               sprintrc(rc));
 
        rc = syscall(__NR_io_cancel, *ctx, NULL, NULL);
-       printf("io_cancel(%lu, NULL, NULL) = %s\n", *ctx, sprintrc(rc));
+       printf("io_cancel(%#lx, NULL, NULL) = %s\n", *ctx, sprintrc(rc));
 
        rc = syscall(__NR_io_cancel, *ctx, cbc + 1, ev);
-       printf("io_cancel(%lu, %p, %p) = %s\n", *ctx, cbc + 1, ev,
+       printf("io_cancel(%#lx, %p, %p) = %s\n", *ctx, cbc + 1, ev,
               sprintrc(rc));
 
        rc = syscall(__NR_io_cancel, *ctx, cbc, ev);
-       printf("io_cancel(%lu, {data=%#llx, pread, reqprio=99, fildes=-42}, %p) "
-              "= %s\n",
+       printf("io_cancel(%#lx, {data=%#llx, pread, reqprio=99, fildes=-42}"
+              ", %p) = %s\n",
               *ctx, (unsigned long long) cbc->aio_data, ev, sprintrc(rc));
 
        rc = syscall(__NR_io_submit, (unsigned long) 0xfacef157beeff00dULL,
                     (long) 0xdeadc0defacefeedLL, NULL);
-       printf("io_submit(%lu, %ld, NULL) = %s\n",
-              (unsigned long) 0xfacef157beeff00dULL,
+       printf("io_submit(%#lx, %ld, NULL) = %s\n",
+              (long) 0xfacef157beeff00dULL,
               (long) 0xdeadc0defacefeedLL, sprintrc(rc));
 
        rc = syscall(__NR_io_submit, *ctx, -1L, cbvs + nr);
-       printf("io_submit(%lu, %ld, %p) = %s\n",
+       printf("io_submit(%#lx, %ld, %p) = %s\n",
                *ctx, -1L, cbvs + nr, sprintrc(rc));
 
        rc = syscall(__NR_io_submit, *ctx, 1057L, cbvs2);
-       printf("io_submit(%lu, %ld, ["
+       printf("io_submit(%#lx, %ld, ["
                "{data=%#llx, key=%u, %hu /* SUB_??? */, fildes=%d}, "
                "{key=%u, pwrite, reqprio=%hd, fildes=%d, str=NULL"
                        ", nbytes=%llu, offset=%lld"
@@ -345,7 +333,7 @@ main(void)
        rc = syscall(__NR_io_submit, *ctx, nr, cbvs);
        if (rc != (long) nr)
                perror_msg_and_skip("io_submit");
-       printf("io_submit(%lu, %u, ["
+       printf("io_submit(%#lx, %u, ["
                "{data=%#llx, preadv, reqprio=%hd, fildes=0, "
                        "iovec=[{iov_base=%p, iov_len=%u}"
                        ", {iov_base=%p, iov_len=%u}], offset=%lld}, "
@@ -365,11 +353,11 @@ main(void)
               sprintrc(rc));
 
        rc = syscall(__NR_io_destroy, (unsigned long) 0xfacefeedb000b1e5ULL);
-       printf("io_destroy(%lu) = %s\n",
+       printf("io_destroy(%#lx) = %s\n",
               (unsigned long) 0xfacefeedb000b1e5ULL, sprintrc(rc));
 
        rc = syscall(__NR_io_destroy, *ctx);
-       printf("io_destroy(%lu) = %s\n", *ctx, sprintrc(rc));
+       printf("io_destroy(%#lx) = %s\n", *ctx, sprintrc(rc));
 
        puts("+++ exited with 0 +++");
        return 0;