From: Ondřej Surý Date: Mon, 3 Jun 2019 12:13:23 +0000 (+0200) Subject: Add fallback definitions to X-Git-Tag: v9.11.10~21^2~9 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=d3a8c162d8d114b01afb98411cdecb51df8cc9b5;p=thirdparty%2Fbind9.git Add fallback definitions to Since the hto[bl]e{16,32,64}() and [bl]e{16,32,64}toh() conversion functions are nonstandard, add fallback definitions of these functions to , so that their unavailability does not prevent compilation from succeeding. (cherry picked from commit 973d2991a0edbf88d1284525c5f919bd08b5a037) --- diff --git a/lib/isc/include/isc/endian.h b/lib/isc/include/isc/endian.h index f713cec0255..1e4433e4acc 100644 --- a/lib/isc/include/isc/endian.h +++ b/lib/isc/include/isc/endian.h @@ -85,6 +85,90 @@ #else -#error Platform not supported +#endif /* Specific platform support */ -#endif +/* + * Fallback definitions. + */ + +#include + +#ifndef bswap_16 +# define bswap_16(x) \ + ((uint16_t)((((uint16_t) (x) & 0xff00) >> 8) | \ + (((uint16_t) (x) & 0x00ff) << 8))) +#endif /* !bswap_16 */ + +#ifndef bswap_32 +# define bswap_32(x) \ + ((uint32_t)((((uint32_t) (x) & 0xff000000) >> 24) | \ + (((uint32_t) (x) & 0x00ff0000) >> 8) | \ + (((uint32_t) (x) & 0x0000ff00) << 8) | \ + (((uint32_t) (x) & 0x000000ff) << 24))) +#endif /* !bswap_32 */ + +#ifndef bswap_64 +# define bswap_64(x) \ + ((uint64_t)((((uint64_t) (x) & 0xff00000000000000ULL) >> 56) | \ + (((uint64_t) (x) & 0x00ff000000000000ULL) >> 40) | \ + (((uint64_t) (x) & 0x0000ff0000000000ULL) >> 24) | \ + (((uint64_t) (x) & 0x000000ff00000000ULL) >> 8) | \ + (((uint64_t) (x) & 0x00000000ff000000ULL) << 8) | \ + (((uint64_t) (x) & 0x0000000000ff0000ULL) << 24) | \ + (((uint64_t) (x) & 0x000000000000ff00ULL) << 40) | \ + (((uint64_t) (x) & 0x00000000000000ffULL) << 56))) +#endif /* !bswap_64 */ + +#ifndef htobe16 +# if WORDS_BIGENDIAN + +# define htobe16(x) (x) +# define htole16(x) bswap_16(x) +# define be16toh(x) (x) +# define le16toh(x) bswap_16(x) + +# else /* WORDS_BIGENDIAN */ + +# define htobe16(x) bswap_16(x) +# define htole16(x) (x) +# define be16toh(x) bswap_16(x) +# define le16toh(x) (x) + +# endif /* WORDS_BIGENDIAN */ +#endif /* !htobe16 */ + +#ifndef htobe32 +# if WORDS_BIGENDIAN + +# define htobe32(x) (x) +# define htole32(x) bswap_32(x) +# define be32toh(x) (x) +# define le32toh(x) bswap_32(x) + +# else /* WORDS_BIGENDIAN */ + +# define htobe32(x) bswap_32(x) +# define htole32(x) (x) +# define be32toh(x) bswap_32(x) +# define le32toh(x) (x) + +# endif /* WORDS_BIGENDIAN */ +#endif /* !htobe32 */ + +#ifndef htobe64 +# if WORDS_BIGENDIAN + +# define htobe64(x) (x) +# define htole64(x) bswap_64(x) +# define be64toh(x) (x) +# define le64toh(x) bswap_64(x) + +#else /* WORDS_BIGENDIAN */ + +# define htobe64(x) bswap_64(x) +# define htole64(x) (x) +# define be64toh(x) bswap_64(x) +# define le64toh(x) (x) + +# endif /* WORDS_BIGENDIAN */ +#endif /* !htobe64 */