Fix preadv/pwritev offset decoding
* util.c (printllval): Add align argument.
* defs.h (printllval): Update prototype.
(printllval_aligned, printllval_unaligned): New macros.
* file.c (sys_readahead, sys_truncate64, sys_ftruncate64, sys_fadvise64,
sys_fadvise64_64, sys_sync_file_range, sys_sync_file_range2,
sys_fallocate): Replace printllval call with printllval_aligned.
* io.c (sys_pread, sys_pwrite): Likewise.
(sys_preadv, sys_pwritev): Replace printllval call with
printllval_unaligned.
* linux/arm/syscallent.h: Set the number of preadv and pwritev
arguments to 5.
* linux/mips/syscallent-o32.h: Likewise.
* linux/powerpc/syscallent.h: Likewise.
* linux/sh/syscallent.h: Likewise.
* linux/xtensa/syscallent.h: Likewise.
Reported-by: Dima Kogan <dima@secretsauce.net>
diff --git a/file.c b/file.c
index d82f4d1..b6cc135 100644
--- a/file.c
+++ b/file.c
@@ -619,7 +619,7 @@
if (entering(tcp)) {
int argn;
printfd(tcp, tcp->u_arg[0]);
- argn = printllval(tcp, ", %lld", 1);
+ argn = printllval_aligned(tcp, ", %lld", 1);
tprintf(", %ld", tcp->u_arg[argn]);
}
return 0;
@@ -640,7 +640,7 @@
{
if (entering(tcp)) {
printpath(tcp, tcp->u_arg[0]);
- printllval(tcp, ", %llu", 1);
+ printllval_aligned(tcp, ", %llu", 1);
}
return 0;
}
@@ -660,7 +660,7 @@
{
if (entering(tcp)) {
printfd(tcp, tcp->u_arg[0]);
- printllval(tcp, ", %llu", 1);
+ printllval_aligned(tcp, ", %llu", 1);
}
return 0;
}
@@ -2663,7 +2663,7 @@
if (entering(tcp)) {
int argn;
printfd(tcp, tcp->u_arg[0]);
- argn = printllval(tcp, ", %lld", 1);
+ argn = printllval_aligned(tcp, ", %lld", 1);
tprintf(", %ld, ", tcp->u_arg[argn++]);
printxval(advise, tcp->u_arg[argn], "POSIX_FADV_???");
}
@@ -2676,8 +2676,8 @@
if (entering(tcp)) {
int argn;
printfd(tcp, tcp->u_arg[0]);
- argn = printllval(tcp, ", %lld, ", 1);
- argn = printllval(tcp, "%lld, ", argn);
+ argn = printllval_aligned(tcp, ", %lld, ", 1);
+ argn = printllval_aligned(tcp, "%lld, ", argn);
#if defined __ARM_EABI__ || defined AARCH64 || defined POWERPC || defined XTENSA
printxval(advise, tcp->u_arg[1], "POSIX_FADV_???");
#else
@@ -2700,8 +2700,8 @@
if (entering(tcp)) {
int argn;
printfd(tcp, tcp->u_arg[0]);
- argn = printllval(tcp, ", %lld, ", 1);
- argn = printllval(tcp, "%lld, ", argn);
+ argn = printllval_aligned(tcp, ", %lld, ", 1);
+ argn = printllval_aligned(tcp, "%lld, ", argn);
printflags(sync_file_range_flags, tcp->u_arg[argn],
"SYNC_FILE_RANGE_???");
}
@@ -2716,8 +2716,8 @@
printfd(tcp, tcp->u_arg[0]);
printflags(sync_file_range_flags, 1,
"SYNC_FILE_RANGE_???");
- argn = printllval(tcp, ", %lld, ", 2);
- argn = printllval(tcp, "%lld, ", argn);
+ argn = printllval_aligned(tcp, ", %lld, ", 2);
+ argn = printllval_aligned(tcp, "%lld, ", argn);
}
return 0;
}
@@ -2729,8 +2729,8 @@
int argn;
printfd(tcp, tcp->u_arg[0]); /* fd */
tprintf(", %#lo, ", tcp->u_arg[1]); /* mode */
- argn = printllval(tcp, "%llu, ", 2); /* offset */
- printllval(tcp, "%llu", argn); /* len */
+ argn = printllval_aligned(tcp, "%llu, ", 2); /* offset */
+ printllval_aligned(tcp, "%llu", argn); /* len */
}
return 0;
}