From cda7d4264790915e3adfddbc9cfa0dee2e669de2 Mon Sep 17 00:00:00 2001 From: Steffen Jaeckel Date: Mon, 17 Feb 2025 15:12:53 +0100 Subject: [PATCH] Improve ILP32 detection This should fix https://github.com/DCIT/perl-CryptX/issues/117 Signed-off-by: Steffen Jaeckel --- src/headers/tomcrypt_cfg.h | 8 +++++--- src/headers/tomcrypt_private.h | 4 ++-- tests/multi_test.c | 2 +- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/headers/tomcrypt_cfg.h b/src/headers/tomcrypt_cfg.h index c6c1fe13..38eca370 100644 --- a/src/headers/tomcrypt_cfg.h +++ b/src/headers/tomcrypt_cfg.h @@ -91,9 +91,6 @@ LTC_EXPORT int LTC_CALL XSTRCMP(const char *s1, const char *s2); #define ENDIAN_LITTLE #define ENDIAN_64BITWORD #define LTC_FAST - #if defined(_ILP32) || defined(__ILP32__) - #define ENDIAN_64BITWORD_X32 - #endif #endif /* detect PPC32 */ @@ -178,6 +175,11 @@ LTC_EXPORT int LTC_CALL XSTRCMP(const char *s1, const char *s2); #define LTC_FAST #endif +/* Detect ILP32, commonly known as x32 on Linux and also possible on AIX */ +#if defined(_ILP32) || defined(__ILP32__) + #define ENDIAN_64BITWORD_ILP32 +#endif + /* endianness fallback */ #if !defined(ENDIAN_BIG) && !defined(ENDIAN_LITTLE) #if defined(_BYTE_ORDER) && _BYTE_ORDER == _BIG_ENDIAN || \ diff --git a/src/headers/tomcrypt_private.h b/src/headers/tomcrypt_private.h index 677081b2..1751d3b7 100644 --- a/src/headers/tomcrypt_private.h +++ b/src/headers/tomcrypt_private.h @@ -12,8 +12,8 @@ #define LTC_PAD_MASK (0xF000U) -/* only real 64bit, not x32 */ -#if defined(ENDIAN_64BITWORD) && !defined(ENDIAN_64BITWORD_X32) +/* only real 64bit, not ILP32 */ +#if defined(ENDIAN_64BITWORD) && !defined(ENDIAN_64BITWORD_ILP32) #define CONSTPTR(n) CONST64(n) #else #define CONSTPTR(n) n ## uL diff --git a/tests/multi_test.c b/tests/multi_test.c index 99b055a5..e0294055 100644 --- a/tests/multi_test.c +++ b/tests/multi_test.c @@ -15,7 +15,7 @@ int multi_test(void) /* HASH testing */ len = sizeof(buf[0]); -#if defined(ENDIAN_32BITWORD) || defined(_WIN32) || defined(ENDIAN_64BITWORD_X32) +#if defined(ENDIAN_32BITWORD) || defined(_WIN32) || defined(ENDIAN_64BITWORD_ILP32) len2 = 0x80000000UL; #else /* Check against the max. input limit of SHA-1 as of RFC8017 */