From: Jeff Mahoney Date: Wed, 18 May 2016 22:09:41 +0000 (-0400) Subject: tests: define PRI__[dux]64 macros to print __s64 and __u64 values X-Git-Tag: v4.12~107 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f21a2f4119bdbfb6dcc04bcbd7445de60658c3f5;p=strace tests: define PRI__[dux]64 macros to print __s64 and __u64 values Rather than cast every __u64 or __s64 before printing, define printing helpers for those types directly. This complements commit 1f3482bedad505a41caf1d61b3a4e7e09a2f4330. * tests/tests.h (PRI__d64, PRI__u64, PRI__x64): New macros. --- diff --git a/tests/tests.h b/tests/tests.h index 9909222f..0205ea03 100644 --- a/tests/tests.h +++ b/tests/tests.h @@ -107,4 +107,24 @@ int printxval(const struct xlat *, const unsigned long long, const char *); # define SKIP_MAIN_UNDEFINED(arg) \ int main(void) { error_msg_and_skip("undefined: %s", arg); } +/* + * 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 ALPHA || defined IA64 || defined MIPS || defined POWERPC +# define PRI__64 "l" +# else +# define PRI__64 "ll" +# endif + +# define PRI__d64 PRI__64"d" +# define PRI__u64 PRI__64"u" +# define PRI__x64 PRI__64"x" + #endif