if (entering(tcp))
tprintf("%ld, ", tcp->u_arg[0]);
else
-#ifdef X32
- printnum_int64(tcp, tcp->u_arg[1], "%" PRIu64);
-#else
- printnum_long(tcp, tcp->u_arg[1], "%lu");
-#endif
+ printnum_ulong(tcp, tcp->u_arg[1]);
return 0;
}
if (entering(tcp))
return 0;
tprints(", ");
- printnum_long(tcp, arg, "%ld");
+ printnum_slong(tcp, arg);
break;
/* returns an unsigned long */
if (entering(tcp))
return 0;
tprints(", ");
- printnum_long(tcp, arg, "%lu");
+ printnum_ulong(tcp, arg);
break;
#ifdef HAVE_BLKGETSIZE64
ATTRIBUTE_FORMAT((printf, 3, 0));
extern void printnum_int(struct tcb *, long, const char *)
ATTRIBUTE_FORMAT((printf, 3, 0));
-extern void printnum_long(struct tcb *, long, const char *)
- ATTRIBUTE_FORMAT((printf, 3, 0));
-#if SIZEOF_LONG == 8
-# define printnum_int64 printnum_long
-#else
extern void printnum_int64(struct tcb *, long, const char *)
ATTRIBUTE_FORMAT((printf, 3, 0));
+
+#if SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4
+extern void printnum_long_int(struct tcb *, long, const char *, const char *)
+ ATTRIBUTE_FORMAT((printf, 3, 0))
+ ATTRIBUTE_FORMAT((printf, 4, 0));
+# define printnum_slong(tcp, addr) \
+ printnum_long_int((tcp), (addr), "%" PRId64, "%d")
+# define printnum_ulong(tcp, addr) \
+ printnum_long_int((tcp), (addr), "%" PRIu64, "%u")
+# define printnum_ptr(tcp, addr) \
+ printnum_long_int((tcp), (addr), "%#" PRIx64, "%#x")
+#elif SIZEOF_LONG > 4
+# define printnum_slong(tcp, addr) \
+ printnum_int64((tcp), (addr), "%" PRId64)
+# define printnum_ulong(tcp, addr) \
+ printnum_int64((tcp), (addr), "%" PRIu64)
+# define printnum_ptr(tcp, addr) \
+ printnum_int64((tcp), (addr), "%#" PRIx64)
+#else
+# define printnum_slong(tcp, addr) \
+ printnum_int((tcp), (addr), "%d")
+# define printnum_ulong(tcp, addr) \
+ printnum_int((tcp), (addr), "%u")
+# define printnum_ptr(tcp, addr) \
+ printnum_int((tcp), (addr), "%#x")
#endif
+
extern void printpair_int(struct tcb *, long, const char *)
ATTRIBUTE_FORMAT((printf, 3, 0));
-extern void printpair_long(struct tcb *, long, const char *)
- ATTRIBUTE_FORMAT((printf, 3, 0));
-#if SIZEOF_LONG == 8
-# define printpair_int64 printpair_long
-#else
extern void printpair_int64(struct tcb *, long, const char *)
ATTRIBUTE_FORMAT((printf, 3, 0));
-#endif
extern void printpath(struct tcb *, long);
extern void printpathn(struct tcb *, long, unsigned int);
#define TIMESPEC_TEXT_BUFSIZE (sizeof(long)*3 * 2 + sizeof("{%u, %u}"))
if (entering(tcp)) {
tprintf("%ld, ", (long) (pid_t) tcp->u_arg[0]);
} else {
- printnum_long(tcp, tcp->u_arg[1], "%#lx");
+ printnum_ptr(tcp, tcp->u_arg[1]);
tprints(", ");
- printnum_long(tcp, tcp->u_arg[2], "%lu");
+ printnum_ulong(tcp, tcp->u_arg[2]);
}
return 0;
}
return RVAL_DECODED;
}
-static void
-print_off_t(struct tcb *tcp, long addr)
-{
- if (current_wordsize == sizeof(int))
- printnum_int(tcp, addr, "%u");
- else
- printnum_long(tcp, addr, "%lu");
-}
-
SYS_FUNC(sendfile)
{
printfd(tcp, tcp->u_arg[0]);
tprints(", ");
printfd(tcp, tcp->u_arg[1]);
tprints(", ");
- print_off_t(tcp, tcp->u_arg[2]);
+ printnum_ulong(tcp, tcp->u_arg[2]);
tprintf(", %lu", tcp->u_arg[3]);
return RVAL_DECODED;
PRINTCTL(semctl_flags, tcp->u_arg[2], "SEM_???");
tprints(", ");
if (indirect_ipccall(tcp)) {
- if (current_wordsize == sizeof(int))
- printnum_int(tcp, tcp->u_arg[3], "%#x");
- else
- printnum_long(tcp, tcp->u_arg[3], "%#lx");
+ printnum_ptr(tcp, tcp->u_arg[3]);
} else {
tprintf("%#lx", tcp->u_arg[3]);
}
if (entering(tcp))
tprints(", ");
else
- printnum_long(tcp, tcp->u_arg[1], "%#lx");
+ printnum_ptr(tcp, tcp->u_arg[1]);
break;
case PR_GET_TSC:
if (entering(tcp))
tprints(", ");
else
- printnum_long(tcp, tcp->u_arg[1], "%#lx");
+ printnum_ptr(tcp, tcp->u_arg[1]);
return 0;
}
#ifdef IA64
return RVAL_HEX;
#else
- printnum_long(tcp, tcp->u_arg[3], "%#lx");
+ printnum_ptr(tcp, tcp->u_arg[3]);
break;
#endif
case PTRACE_GETSIGINFO: {
if (entering(tcp))
return 0;
tprints(", ");
- printnum_long(tcp, arg, "%lu");
+ printnum_ulong(tcp, arg);
break;
case RTC_WKALM_SET:
decode_rtc_wkalrm(tcp, arg);
} \
}
-DEF_PRINTNUM(long, long)
-DEF_PRINTPAIR(long, long)
DEF_PRINTNUM(int, int)
DEF_PRINTPAIR(int, int)
DEF_PRINTNUM(short, short)
-#if SIZEOF_LONG != 8
DEF_PRINTNUM(int64, uint64_t)
DEF_PRINTPAIR(int64, uint64_t)
+
+#if SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4
+void
+printnum_long_int(struct tcb *tcp, const long addr,
+ const char *fmt_long, const char *fmt_int)
+{
+ if (current_wordsize > sizeof(int)) {
+ printnum_int64(tcp, addr, fmt_long);
+ } else {
+ printnum_int(tcp, addr, fmt_int);
+ }
+}
#endif
const char *