On Tue, Apr 21, 2020 at 10:56 AM Havard Eidnes <h...@netbsd.org> wrote: > > > Does anybody think that the bind bits in netbsd-8 are ok, even before we > > talk about compilation? > > I'm about halfway through the diff between what's in-tree in > netbsd-8 and what's in ISC BIND 9.10.5-P1, and all I find so far > are > ... > Hmm, wait a bit... One commonality between sparc, sparc64 and > macppc is that they're all big-endian. ... and in > external/bsd/bind/include/config.h (which is "pre-cooked" in > NetBSD, but the corresponding file is generated by configure by > the ISC build setup) we find this part: > > /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most > significant byte first (like Motorola and SPARC, unlike Intel). */ > #ifndef __NetBSD__ > /* Defined by the build process */ > #if defined AC_APPLE_UNIVERSAL_BUILD > # if defined __BIG_ENDIAN__ > # define WORDS_BIGENDIAN 1 > # endif > #else > # ifndef WORDS_BIGENDIAN > /* # undef WORDS_BIGENDIAN */ > # endif > #endif > #endif > > which on NetBSD ends up not defining WORDS_BIGENDIAN ever, which > is OK for little-endian platforms, but not quite for the others. > Let's see... > > Index: include/config.h > =================================================================== > RCS file: /cvsroot/src/external/bsd/bind/include/Attic/config.h,v > retrieving revision 1.20.8.1 > diff -u -r1.20.8.1 config.h > --- include/config.h 21 Jun 2017 18:03:51 -0000 1.20.8.1 > +++ include/config.h 21 Apr 2020 14:26:04 -0000 > @@ -594,6 +594,11 @@ > /* # undef WORDS_BIGENDIAN */ > # endif > #endif > +#else /* __NetBSD__ */ > +# include <endian.h> > +# if _BYTE_ORDER == _BIG_ENDIAN > +# define WORDS_BIGENDIAN 1 > +# endif > #endif > > /* Define to empty if `const' does not conform to ANSI C. */ > > fixes it! After re-building libs and reinstalling them:
Yeah, it looks like the preprocessor test is not correct. To test for endianess using modern compilers, like GCC, Clang, XLC and SunCC, you have to test for __LITTLE_ENDIAN__ and __BIG_ENDIAN__. Other tests are unreliable. Jeff