sys_readahead(struct tcb *tcp)
{
if (entering(tcp)) {
- ALIGN64 (tcp, 1);
- tprintf("%ld, %lld, %ld", tcp->u_arg[0],
-# if defined LINUX_MIPSN32
- tcp->ext_arg[1], tcp->u_arg[2]
-# elif defined IA64 || defined X86_64 || defined ALPHA || defined LINUX_MIPSN64 || (defined POWERPC && defined __powerpc64__)
- (long long int) tcp->u_arg[1], tcp->u_arg[2]
-# else
- LONG_LONG(tcp->u_arg[1], tcp->u_arg[2]), tcp->u_arg[3]
-# endif
- );
+ int argn;
+ tprintf("%ld, ", tcp->u_arg[0]);
+ argn = printllval(tcp, "%lld", 1);
+ tprintf(", %ld", tcp->u_arg[argn]);
}
return 0;
}
sys_lseek64(struct tcb *tcp)
{
if (entering(tcp)) {
- long long offset;
- ALIGN64 (tcp, 1); /* FreeBSD aligns off_t args */
- offset = LONG_LONG(tcp->u_arg [1], tcp->u_arg[2]);
+ int argn;
+ tprintf("%ld, ", tcp->u_arg[0]);
if (tcp->u_arg[3] == SEEK_SET)
- tprintf("%ld, %llu, ", tcp->u_arg[0], offset);
+ argn = printllval(tcp, "%llu, ", 1);
else
- tprintf("%ld, %lld, ", tcp->u_arg[0], offset);
- printxval(whence, tcp->u_arg[3], "SEEK_???");
+ argn = printllval(tcp, "%lld, ", 1);
+ printxval(whence, tcp->u_arg[argn], "SEEK_???");
}
return RVAL_LUDECIMAL;
}
sys_truncate64(struct tcb *tcp)
{
if (entering(tcp)) {
- ALIGN64 (tcp, 1);
printpath(tcp, tcp->u_arg[0]);
- tprintf(", %llu", LONG_LONG(tcp->u_arg[1],tcp->u_arg[2]));
+ printllval(tcp, ", %llu", 1);
}
return 0;
}
sys_ftruncate64(struct tcb *tcp)
{
if (entering(tcp)) {
- ALIGN64 (tcp, 1);
- tprintf("%ld, %llu", tcp->u_arg[0],
- LONG_LONG(tcp->u_arg[1] ,tcp->u_arg[2]));
+ tprintf("%ld, ", tcp->u_arg[0]);
+ printllval(tcp, "%llu", 1);
}
return 0;
}
sys_fadvise64(struct tcb *tcp)
{
if (entering(tcp)) {
- ALIGN64(tcp, 1);
- tprintf("%ld, %lld, %ld, ",
- tcp->u_arg[0],
-# if defined IA64 || defined X86_64 || defined ALPHA || (defined POWERPC && defined __powerpc64__)
- (long long int) tcp->u_arg[1], tcp->u_arg[2]);
- printxval(advise, tcp->u_arg[3], "POSIX_FADV_???");
-#else
- LONG_LONG(tcp->u_arg[1], tcp->u_arg[2]), tcp->u_arg[3]);
- printxval(advise, tcp->u_arg[4], "POSIX_FADV_???");
-#endif
+ int argn;
+ tprintf("%ld, ", tcp->u_arg[0]);
+ argn = printllval(tcp, "%lld", 1);
+ tprintf(", %ld, ", tcp->u_arg[argn++]);
+ printxval(advise, tcp->u_arg[argn], "POSIX_FADV_???");
}
return 0;
}
sys_fadvise64_64(struct tcb *tcp)
{
if (entering(tcp)) {
- tprintf("%ld, %lld, %lld, ",
- tcp->u_arg[0],
-#if defined LINUX_MIPSN32
- tcp->ext_arg[1], tcp->ext_arg[2]);
- printxval(advise, tcp->u_arg[3], "POSIX_FADV_???");
-#elif defined IA64 || defined X86_64 || defined ALPHA || defined LINUX_MIPSN64
- (long long int) tcp->u_arg[1], (long long int) tcp->u_arg[2]);
- printxval(advise, tcp->u_arg[3], "POSIX_FADV_???");
-#elif defined ARM || defined POWERPC
- LONG_LONG(tcp->u_arg[2], tcp->u_arg[3]),
- LONG_LONG(tcp->u_arg[4], tcp->u_arg[5]));
+ int argn;
+ tprintf("%ld, ", tcp->u_arg[0]);
+#if defined ARM || defined POWERPC
+ argn = printllval(tcp, "%lld, ", 2);
+#else
+ argn = printllval(tcp, "%lld, ", 1);
+#endif
+ argn = printllval(tcp, "%lld, ", argn);
+#if defined ARM || defined POWERPC
printxval(advise, tcp->u_arg[1], "POSIX_FADV_???");
#else
- LONG_LONG(tcp->u_arg[1], tcp->u_arg[2]),
- LONG_LONG(tcp->u_arg[3], tcp->u_arg[4]));
- printxval(advise, tcp->u_arg[5], "POSIX_FADV_???");
+ printxval(advise, tcp->u_arg[argn], "POSIX_FADV_???");
#endif
}
return 0;
sys_fallocate(struct tcb *tcp)
{
if (entering(tcp)) {
+ int argn;
tprintf("%ld, ", tcp->u_arg[0]); /* fd */
tprintf("%#lo, ", tcp->u_arg[1]); /* mode */
- tprintf("%llu, ", LONG_LONG(tcp->u_arg[2],
- tcp->u_arg[3])); /* offset */
- tprintf("%llu", LONG_LONG(tcp->u_arg[4],
- tcp->u_arg[5])); /* len */
+ argn = printllval(tcp, "%llu, ", 2); /* offset */
+ printllval(tcp, "%llu", argn); /* len */
}
return 0;
}
tprintf("%#lx", tcp->u_arg[1]);
else
printstr(tcp, tcp->u_arg[1], tcp->u_rval);
- ALIGN64 (tcp, PREAD_OFFSET_ARG); /* PowerPC alignment restriction */
- tprintf(", %lu, %llu", tcp->u_arg[2],
- *(unsigned long long *)&tcp->u_arg[PREAD_OFFSET_ARG]);
+ tprintf(", %lu, ", tcp->u_arg[2]);
+ printllval(tcp, "%llu", PREAD_OFFSET_ARG);
}
return 0;
}
if (entering(tcp)) {
tprintf("%ld, ", tcp->u_arg[0]);
printstr(tcp, tcp->u_arg[1], tcp->u_arg[2]);
- ALIGN64 (tcp, PREAD_OFFSET_ARG); /* PowerPC alignment restriction */
- tprintf(", %lu, %llu", tcp->u_arg[2],
- *(unsigned long long *)&tcp->u_arg[PREAD_OFFSET_ARG]);
+ tprintf(", %lu, ", tcp->u_arg[2]);
+ printllval(tcp, "%llu", PREAD_OFFSET_ARG);
}
return 0;
}
if (entering(tcp)) {
tprintf("%ld, ", tcp->u_arg[0]);
} else {
- ALIGN64 (tcp, 3);
if (syserror(tcp))
tprintf("%#lx", tcp->u_arg[1]);
else
printstr(tcp, tcp->u_arg[1], tcp->u_rval);
-#ifdef MIPS_LINUXN32
- tprintf(", %lu, %#llx", tcp->u_arg[2], tcp->ext_arg[3]);
-#else
- tprintf(", %lu, %#llx", tcp->u_arg[2],
- LONG_LONG(tcp->u_arg[3], tcp->u_arg[4]));
-#endif
+ tprintf(", %lu, ", tcp->u_arg[2]);
+ printllval(tcp, "%#llx", 3);
}
return 0;
}
struct tcb *tcp;
{
if (entering(tcp)) {
- ALIGN64 (tcp, 3);
tprintf("%ld, ", tcp->u_arg[0]);
printstr(tcp, tcp->u_arg[1], tcp->u_arg[2]);
-#ifdef MIPS_LINUXN32
- tprintf(", %lu, %#llx", tcp->u_arg[2], tcp->ext_arg[3]);
-#else
- tprintf(", %lu, %#llx", tcp->u_arg[2],
- LONG_LONG(tcp->u_arg[3], tcp->u_arg[4]));
-#endif
+ tprintf(", %lu, ", tcp->u_arg[2]);
+ printllval(tcp, "%#llx", 3);
}
return 0;
}
tprintf("%#x /* %s */", val, dflt);
}
+#if HAVE_LONG_LONG
+/*
+ * Print 64bit argument at position llarg and return the index of the next
+ * argument.
+ */
+int
+printllval(struct tcb *tcp, const char *format, int llarg)
+{
+# if defined(FREEBSD) \
+ || (defined(LINUX) && defined(POWERPC) && !defined(__powerpc64__)) \
+ || defined (LINUX_MIPSO32)
+ /* Align 64bit argument to 64bit boundary. */
+ if (llarg % 2) llarg++;
+# endif
+# if defined LINUX && defined X86_64
+ if (current_personality == 0) {
+ tprintf(format, tcp->u_arg[llarg]);
+ llarg++;
+ } else {
+ tprintf(format, LONG_LONG(tcp->u_arg[llarg], tcp->u_arg[llarg + 1]));
+ llarg += 2;
+ }
+# elif defined IA64 || defined ALPHA || (defined POWERPC && defined __powerpc64__)
+ tprintf(format, tcp->u_arg[llarg]);
+ llarg++;
+# elif defined LINUX_MIPSN32
+ tprintf(format, tcp->ext_arg[llarg]);
+ llarg++;
+# else
+ tprintf(format, LONG_LONG(tcp->u_arg[llarg], tcp->u_arg[llarg + 1]));
+ llarg += 2;
+# endif
+ return llarg;
+}
+#endif
+
/*
* Interpret `xlat' as an array of flags
* print the entries whose bits are on in `flags'