diff options
Diffstat (limited to 'elfcpp/elfcpp_swap.h')
-rw-r--r-- | elfcpp/elfcpp_swap.h | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/elfcpp/elfcpp_swap.h b/elfcpp/elfcpp_swap.h index 3c9d25997ba..61b3ba57520 100644 --- a/elfcpp/elfcpp_swap.h +++ b/elfcpp/elfcpp_swap.h @@ -46,15 +46,19 @@ #ifdef HAVE_BYTESWAP_H #include <byteswap.h> -#else +#endif // defined(HAVE_BYTESWAP_H) + // Provide our own versions of the byteswap functions. -inline uint16_t +#if !HAVE_DECL_BSWAP_16 +static inline uint16_t bswap_16(uint16_t v) { return ((v >> 8) & 0xff) | ((v & 0xff) << 8); } +#endif // !HAVE_DECL_BSWAP16 -inline uint32_t +#if !HAVE_DECL_BSWAP_32 +static inline uint32_t bswap_32(uint32_t v) { return ( ((v & 0xff000000) >> 24) @@ -62,8 +66,10 @@ bswap_32(uint32_t v) | ((v & 0x0000ff00) << 8) | ((v & 0x000000ff) << 24)); } +#endif // !HAVE_DECL_BSWAP32 -inline uint64_t +#if !HAVE_DECL_BSWAP_64 +static inline uint64_t bswap_64(uint64_t v) { return ( ((v & 0xff00000000000000ULL) >> 56) @@ -75,7 +81,7 @@ bswap_64(uint64_t v) | ((v & 0x000000000000ff00ULL) << 40) | ((v & 0x00000000000000ffULL) << 56)); } -#endif // !defined(HAVE_BYTESWAP_H) +#endif // !HAVE_DECL_BSWAP64 // gcc 4.3 and later provides __builtin_bswap32 and __builtin_bswap64. |