]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- detect endianness in lookup3 on BSD.
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Thu, 7 Feb 2013 08:18:33 +0000 (08:18 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Thu, 7 Feb 2013 08:18:33 +0000 (08:18 +0000)
git-svn-id: file:///svn/unbound/trunk@2833 be551aaa-1e26-0410-a405-d3ace91eadb9

doc/Changelog
util/storage/lookup3.c

index 3ffa4f7a704826de60c4b232f6961ce3c6e4b8af..9555e73295f3923a3759d6cf62a05bca9e102938 100644 (file)
@@ -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.
 
index 65e0ad2a57cb9c6c08db6946f6db0df2c86c87db..eb33413623d34510347d7abf0bd6e539ee2cd69b 100644 (file)
@@ -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 <endian.h>    /* attempt to define endianness */
 #endif
+#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__)
+#include <sys/endian.h> /* attempt to define endianness */
+#endif
+#ifdef __OpenBSD__
+#include <machine/endian.h> /* 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