Fix off_t args on FreeBSD
diff --git a/io.c b/io.c
index 0fe8c3d..6bb986c 100644
--- a/io.c
+++ b/io.c
@@ -130,7 +130,7 @@
return 0;
}
-#if defined(SVR4) || defined(FREEBSD)
+#if defined(SVR4)
int
sys_pread(tcp)
@@ -147,14 +147,9 @@
/* off_t is signed int */
tprintf(", %lu, %ld", tcp->u_arg[2], tcp->u_arg[3]);
#else
-#ifndef FREEBSD
tprintf(", %lu, %llu", tcp->u_arg[2],
(((unsigned long long) tcp->u_arg[4]) << 32
| tcp->u_arg[3]));
-#else
- tprintf(", %lu, %llu", tcp->u_arg[2],
- (((off_t) tcp->u_arg[3]) << 32) + tcp->u_arg[4]);
-#endif
#endif
}
return 0;
@@ -171,19 +166,14 @@
/* off_t is signed int */
tprintf(", %lu, %ld", tcp->u_arg[2], tcp->u_arg[3]);
#else
-#ifndef FREEBSD
tprintf(", %lu, %llu", tcp->u_arg[2],
(((unsigned long long) tcp->u_arg[4]) << 32
| tcp->u_arg[3]));
-#else
- tprintf(", %lu, %llu", tcp->u_arg[2],
- (((off_t) tcp->u_arg[3]) << 32) + tcp->u_arg[4]);
-#endif
#endif
}
return 0;
}
-#endif /* SVR4 || FREEBSD */
+#endif /* SVR4 */
#ifdef FREEBSD
#include <sys/types.h>
@@ -279,7 +269,7 @@
#endif /* LINUX */
-#if _LFS64_LARGEFILE
+#if _LFS64_LARGEFILE || FREEBSD
int
sys_pread64(tcp)
struct tcb *tcp;
@@ -287,11 +277,13 @@
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);
- tprintf(", %lu, %#llx", tcp->u_arg[2], get64(tcp->u_arg[3], tcp->u_arg[4]));
+ tprintf(", %lu, %#llx", tcp->u_arg[2],
+ get64(tcp->u_arg[3], tcp->u_arg[4]));
}
return 0;
}
@@ -301,9 +293,11 @@
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]);
- tprintf(", %lu, %#llx", tcp->u_arg[2], get64(tcp->u_arg[3], tcp->u_arg[4]));
+ tprintf(", %lu, %#llx", tcp->u_arg[2],
+ get64(tcp->u_arg[3], tcp->u_arg[4]));
}
return 0;
}