Skip to content

Commit b60df00

Browse files
committed
Update endianness tests when building rngRbt.
Also warn if endianness is unknown.
1 parent f245192 commit b60df00

File tree

2 files changed

+26
-6
lines changed

2 files changed

+26
-6
lines changed

plugins/rngLibraries/rngRbt/ecrypt-config.h

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,27 @@
1313
#define ECRYPT_CONFIG
1414

1515
/* ------------------------------------------------------------------------- */
16+
/* Try standard-ish macros for endianness */
17+
#if defined (__LITTLE_ENDIAN__)
18+
#define ECRYPT_LITTLE_ENDIAN
19+
#elif defined (__BIG_ENDIAN__)
20+
#define ECRYPT_BIG_ENDIAN
21+
#elif defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
22+
#define ECRYPT_LITTLE_ENDIAN
23+
#elif defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
24+
#define ECRYPT_BIG_ENDIAN
25+
#elif defined(__FLOAT_WORD_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) && (__FLOAT_WORD_ORDER__ == __ORDER_LITTLE_ENDIAN__)
26+
#define ECRYPT_LITTLE_ENDIAN
27+
#elif defined(__FLOAT_WORD_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && (__FLOAT_WORD_ORDER__ == __ORDER_BIG_ENDIAN__)
28+
#define ECRYPT_BIG_ENDIAN
29+
#endif
1630

17-
/* Guess the endianness of the target architecture. */
18-
31+
/* Guess the endianness of the target architecture if not already determined. */
32+
#if !defined(ECRYPT_LITTLE_ENDIAN) && !defined(ECRYPT_BIG_ENDIAN)
1933
/*
2034
* The LITTLE endian machines:
2135
*/
22-
#if defined (__LITTLE_ENDIAN__)
23-
#define ECRYPT_LITTLE_ENDIAN
24-
#elif defined(__ultrix) /* Older MIPS */
36+
#if defined(__ultrix) /* Older MIPS */
2537
#define ECRYPT_LITTLE_ENDIAN
2638
#elif defined(__alpha) /* Alpha */
2739
#define ECRYPT_LITTLE_ENDIAN
@@ -44,6 +56,10 @@
4456
/*
4557
* The BIG endian machines:
4658
*/
59+
#elif defined(__ARMEB__)
60+
#define ECRYPT_BIG_ENDIAN
61+
#elif defined(__AARCH64EB__)
62+
#define ECRYPT_BIG_ENDIAN
4763
#elif defined(sun) /* Newer Sparc's */
4864
#define ECRYPT_BIG_ENDIAN
4965
#elif defined(__ppc__) /* PowerPC */
@@ -65,7 +81,7 @@
6581
#else /* Any other processor */
6682
#define ECRYPT_UNKNOWN
6783
#endif
68-
84+
#endif /* !defined(ECRYPT_LITTLE_ENDIAN) && !defined(ECRYPT_BIG_ENDIAN) */
6985
/* ------------------------------------------------------------------------- */
7086

7187
/*

plugins/rngLibraries/rngRbt/rabbit.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@
4141
#include "ecrypt-sync.h"
4242
#include "ecrypt-portable.h"
4343

44+
#ifdef ECRYPT_UNKNOWN
45+
#warning Neither ECRYPT_BIG_ENDIAN nor ECRYPT_LITTLE_ENDIAN is defined
46+
#endif
47+
4448
/* -------------------------------------------------------------------------- */
4549

4650
/* Square a 32-bit unsigned integer to obtain the 64-bit result and return */

0 commit comments

Comments
 (0)