byteorder: Provide a fallback for le32toh/htole32()

Some older toolchains don't provide these macros, so implement them using
the gcc builtins. We also provide 64-bit variants as used by chapoly.
This commit is contained in:
Martin Willi
2015-12-04 10:29:09 +01:00
parent 8fa0c7bc77
commit 057e6cc524
+20
View File
@@ -158,6 +158,26 @@ static inline u_int64_t untoh64(void *network)
#endif
}
#ifndef le32toh
# if BYTE_ORDER == BIG_ENDIAN
# define le32toh(x) __builtin_bswap32(x)
# define htole32(x) __builtin_bswap32(x)
# else
# define le32toh(x) (x)
# define htole32(x) (x)
# endif
#endif
#ifndef le64toh
# if BYTE_ORDER == BIG_ENDIAN
# define le64toh(x) __builtin_bswap64(x)
# define htole64(x) __builtin_bswap64(x)
# else
# define le64toh(x) (x)
# define htole64(x) (x)
# endif
#endif
/**
* Read a 32-bit value in little-endian order from unaligned address.
*