From 7dd1073833e509db8ab6c7b0c1b5d4cce022ab57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Tue, 21 Apr 2015 00:11:41 +0200 Subject: [PATCH] ByteOrder.h: add explicit casts when using gcc builtins Those return uintNN_t types instead of our own types, but uint32 for example is long while uint32_t isn't, giving some trouble with the PRI* macros for example on PPC. --- headers/os/support/ByteOrder.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/headers/os/support/ByteOrder.h b/headers/os/support/ByteOrder.h index 39819d4c64..d02cba1ac6 100644 --- a/headers/os/support/ByteOrder.h +++ b/headers/os/support/ByteOrder.h @@ -121,9 +121,9 @@ extern bool is_type_swapped(type_code type); extern double __swap_double(double arg); extern float __swap_float(float arg); #if __GNUC__ >= 4 -#define __swap_int64(arg) __builtin_bswap64(arg) -#define __swap_int32(arg) __builtin_bswap32(arg) -#define __swap_int16(arg) __builtin_bswap16(arg) +#define __swap_int64(arg) (uint64)__builtin_bswap64(arg) +#define __swap_int32(arg) (uint32)__builtin_bswap32(arg) +#define __swap_int16(arg) (uint16)__builtin_bswap16(arg) #else extern uint64 __swap_int64(uint64 arg); extern uint32 __swap_int32(uint32 arg);