From: Wouter Wijngaards Date: Thu, 7 Feb 2013 08:18:33 +0000 (+0000) Subject: - detect endianness in lookup3 on BSD. X-Git-Tag: release-1.4.20rc1~17 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=20f4608728f2ba6ecdae1fa0da022444c1551942;p=thirdparty%2Funbound.git - detect endianness in lookup3 on BSD. git-svn-id: file:///svn/unbound/trunk@2833 be551aaa-1e26-0410-a405-d3ace91eadb9 --- diff --git a/doc/Changelog b/doc/Changelog index 3ffa4f7a7..9555e7329 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +7 February 2013: Wouter + - detect endianness in lookup3 on BSD. + 30 January 2013: Wouter - includes and have_ssl fixes for nss. diff --git a/util/storage/lookup3.c b/util/storage/lookup3.c index 65e0ad2a5..eb3341362 100644 --- a/util/storage/lookup3.c +++ b/util/storage/lookup3.c @@ -1,4 +1,5 @@ /* + February 2013(Wouter) patch defines for BSD endianness, from Brad Smith. January 2012(Wouter) added randomised initial value, fallout from 28c3. March 2007(Wouter) adapted from lookup3.c original, add config.h include. added #ifdef VALGRIND to remove 298,384,660 'unused variable k8' warnings. @@ -52,6 +53,12 @@ on 1 byte), but shoehorning those bytes into integers efficiently is messy. #ifdef linux # include /* attempt to define endianness */ #endif +#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) +#include /* attempt to define endianness */ +#endif +#ifdef __OpenBSD__ +#include /* attempt to define endianness */ +#endif /* random initial value */ static uint32_t raninit = 0xdeadbeef; @@ -68,12 +75,16 @@ hash_set_raninit(uint32_t v) */ #if (defined(__BYTE_ORDER) && defined(__LITTLE_ENDIAN) && \ __BYTE_ORDER == __LITTLE_ENDIAN) || \ + (defined(_BYTE_ORDER) && defined(_LITTLE_ENDIAN) && \ + _BYTE_ORDER == _LITTLE_ENDIAN) || \ (defined(i386) || defined(__i386__) || defined(__i486__) || \ defined(__i586__) || defined(__i686__) || defined(vax) || defined(MIPSEL)) # define HASH_LITTLE_ENDIAN 1 # define HASH_BIG_ENDIAN 0 #elif (defined(__BYTE_ORDER) && defined(__BIG_ENDIAN) && \ __BYTE_ORDER == __BIG_ENDIAN) || \ + (defined(_BYTE_ORDER) && defined(_BIG_ENDIAN) && \ + _BYTE_ORDER == _BIG_ENDIAN) || \ (defined(sparc) || defined(POWERPC) || defined(mc68000) || defined(sel)) # define HASH_LITTLE_ENDIAN 0 # define HASH_BIG_ENDIAN 1