Rather than cast every __u64 or __s64 before printing, we can define printing helpers for those types directly.
* defs.h: define PRI__[uxs]64. --- defs.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/defs.h b/defs.h index ead12dd..cc2a0d4 100644 --- a/defs.h +++ b/defs.h @@ -772,3 +772,23 @@ extern unsigned num_quals; #define SYS_FUNC(syscall_name) int SYS_FUNC_NAME(sys_ ## syscall_name)(struct tcb *tcp) #define MPERS_PRINTER_DECL(type, name) type MPERS_FUNC_NAME(name) + +/* + * The kernel used to define 64-bit types on 64-bit systems on a per-arch + * basis. Some architectures would use unsigned long and others would use + * unsigned long long. These types were exported as part of the + * kernel-userspace ABI and now must be maintained forever. This matches + * what the kernel exports for each architecture so we don't need to cast + * every printing of __u64 or __s64 to stdint types. + */ +#if SIZEOF_LONG == 4 +#define PRI__64 "ll" +#elif defined(__mips__) || defined(__powerpc__) || defined(__alpha__) || defined(__ia64__) +#define PRI__64 "l" +#else +#define PRI__64 "ll" +#endif + +#define PRI__u64 PRI__64"u" +#define PRI__s64 PRI__64"d" +#define PRI__x64 PRI__64"x" -- 2.7.1 ------------------------------------------------------------------------------ Transform Data into Opportunity. Accelerate data analysis in your applications with Intel Data Analytics Acceleration Library. Click to learn more. http://pubads.g.doubleclick.net/gampad/clk?id=278785471&iu=/4140 _______________________________________________ Strace-devel mailing list Strace-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/strace-devel