diff options
author | Edward O'Callaghan <eocallaghan@auroraux.org> | 2009-08-08 02:31:50 +0000 |
---|---|---|
committer | Edward O'Callaghan <eocallaghan@auroraux.org> | 2009-08-08 02:31:50 +0000 |
commit | bb119a4fae90e73d48c078024e101bebfdfae5d8 (patch) | |
tree | a7fc871d9595c3f2ea98f872bd373a8886b9f6b0 /test | |
parent | 37a6a455466e5b197311771a777ab241e471ed8a (diff) | |
download | compiler-rt-bb119a4fae90e73d48c078024e101bebfdfae5d8.tar.gz compiler-rt-bb119a4fae90e73d48c078024e101bebfdfae5d8.tar.bz2 compiler-rt-bb119a4fae90e73d48c078024e101bebfdfae5d8.tar.xz |
Fix signedness warning in mprotect call, Clean up and improve endianness.h header.
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@78451 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r-- | test/Unit/endianness.h | 79 |
1 files changed, 54 insertions, 25 deletions
diff --git a/test/Unit/endianness.h b/test/Unit/endianness.h index 9e192c10..8069bacb 100644 --- a/test/Unit/endianness.h +++ b/test/Unit/endianness.h @@ -16,50 +16,79 @@ #ifndef ENDIANNESS_H #define ENDIANNESS_H -/* TODO: Improve this to minimal pre-processor hackish'ness. */ -/* config.h build via CMake. */ -/* #include <config.h> */ -/* Solaris header for endian and byte swap */ -/* #if defined HAVE_SYS_BYTEORDER_H */ +/* + * Known limitations: + * Middle endian systems are not handled currently. + */ -#if defined (__SVR4) && defined (__sun) +#if defined(__SVR4) && defined(__sun) #include <sys/byteorder.h> + #if _BYTE_ORDER == _BIG_ENDIAN -#define __BIG_ENDIAN__ 1 -#define __LITTLE_ENDIAN__ 0 -#else /* _BYTE_ORDER == _LITTLE_ENDIAN */ -#define __BIG_ENDIAN__ 0 -#define __LITTLE_ENDIAN__ 1 +#define _YUGA_LITTLE_ENDIAN 0 +#define _YUGA_BIG_ENDIAN 1 +#elif _BYTE_ORDER == _LITTLE_ENDIAN +#define _YUGA_LITTLE_ENDIAN 1 +#define _YUGA_BIG_ENDIAN 0 #endif /* _BYTE_ORDER */ + #endif /* Solaris and AuroraUX. */ -#if defined (__FreeBSD__) +/* .. */ + +#if defined(__FreeBSD__) && defined(__NetBSD__) && defined(__OpenBSD__) && defined(__DragonflyBSD__) #include <sys/endian.h> + #if _BYTE_ORDER == _BIG_ENDIAN -#define __BIG_ENDIAN__ 1 -#define __LITTLE_ENDIAN__ 0 -#else /* _BYTE_ORDER == _LITTLE_ENDIAN */ -#define __BIG_ENDIAN__ 0 -#define __LITTLE_ENDIAN__ 1 +#define _YUGA_LITTLE_ENDIAN 0 +#define _YUGA_BIG_ENDIAN 1 +#elif _BYTE_ORDER == _LITTLE_ENDIAN +#define _YUGA_LITTLE_ENDIAN 1 +#define _YUGA_BIG_ENDIAN 0 #endif /* _BYTE_ORDER */ -#endif /* FreeBSD */ + +#endif /* *BSD */ + +/* .. */ + +/* Mac OSX has __BIG_ENDIAN__ or __LITTLE_ENDIAN__ automatically set by the compiler (at least with GCC) */ +#if defined(__APPLE__) && defined(__MACH__) + +#ifdef __BIG_ENDIAN__ +#if __BIG_ENDIAN__ +#define _YUGA_LITTLE_ENDIAN 0 +#define _YUGA_BIG_ENDIAN 1 +#endif +#endif /* __BIG_ENDIAN__ */ #ifdef __LITTLE_ENDIAN__ #if __LITTLE_ENDIAN__ #define _YUGA_LITTLE_ENDIAN 1 #define _YUGA_BIG_ENDIAN 0 #endif -#endif +#endif /* __LITTLE_ENDIAN__ */ -#ifdef __BIG_ENDIAN__ -#if __BIG_ENDIAN__ +#endif /* Mac OSX */ + +/* .. */ + +#if defined(__Linux__) +#include <endian.h> + +#if __BYTE_ORDER == __BIG_ENDIAN #define _YUGA_LITTLE_ENDIAN 0 #define _YUGA_BIG_ENDIAN 1 -#endif -#endif +#elif __BYTE_ORDER == __LITTLE_ENDIAN +#define _YUGA_LITTLE_ENDIAN 1 +#define _YUGA_BIG_ENDIAN 0 +#endif /* __BYTE_ORDER */ + +#endif /* GNU/Linux */ + +/* . */ #if !defined(_YUGA_LITTLE_ENDIAN) || !defined(_YUGA_BIG_ENDIAN) -#error unable to determine endian -#endif +#error Unable to determine endian +#endif /* Check we found an endianness correctly. */ #endif /* ENDIANNESS_H */ |