From: Tom Cosgrove Date: Fri, 1 Sep 2023 07:41:11 +0000 (+0100) Subject: Move ALIGN32 and ALIGN64 into common.h, and fix for clang-cl.exe X-Git-Tag: openssl-3.2.0-alpha1~32 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=12d08fe3a50f28fe80ff591e05d7f8253148afb4;p=thirdparty%2Fopenssl.git Move ALIGN32 and ALIGN64 into common.h, and fix for clang-cl.exe clang-cl.exe defines __clang__ and _MSC_VER but not __GNUC__, so a clang- specific guard is needed to get the correct ALIGNxx versions. Fixes #21914 Change-Id: Icdc047b182ad1ba61c7b1b06a1e951eda1a0c33d Reviewed-by: Hugo Landau Reviewed-by: Tomas Mraz Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/21921) --- diff --git a/crypto/bn/rsaz_exp.c b/crypto/bn/rsaz_exp.c index e44eae43be8..844140720cc 100644 --- a/crypto/bn/rsaz_exp.c +++ b/crypto/bn/rsaz_exp.c @@ -13,6 +13,7 @@ */ #include +#include "internal/common.h" #include "rsaz_exp.h" #ifndef RSAZ_ENABLED @@ -31,16 +32,8 @@ void rsaz_1024_scatter5_avx2(void *tbl, const void *val, int i); void rsaz_1024_gather5_avx2(void *val, const void *tbl, int i); void rsaz_1024_red2norm_avx2(void *norm, const void *red); -#if defined(__GNUC__) -# define ALIGN64 __attribute__((aligned(64))) -#elif defined(_MSC_VER) -# define ALIGN64 __declspec(align(64)) -#elif defined(__SUNPRO_C) -# define ALIGN64 +#if defined(__SUNPRO_C) # pragma align 64(one,two80) -#else -/* not fatal, might hurt performance a little */ -# define ALIGN64 #endif ALIGN64 static const BN_ULONG one[40] = { diff --git a/crypto/ec/ecp_nistz256.c b/crypto/ec/ecp_nistz256.c index 44d9054a171..8addb1e40c0 100644 --- a/crypto/ec/ecp_nistz256.c +++ b/crypto/ec/ecp_nistz256.c @@ -37,14 +37,6 @@ # define TOBN(hi,lo) ((BN_ULONG)hi<<32|lo) #endif -#if defined(__GNUC__) -# define ALIGN32 __attribute((aligned(32))) -#elif defined(_MSC_VER) -# define ALIGN32 __declspec(align(32)) -#else -# define ALIGN32 -#endif - #define ALIGNPTR(p,N) ((unsigned char *)p+N-(size_t)p%N) #define P256_LIMBS (256/BN_BITS2) diff --git a/crypto/ec/ecp_sm2p256.c b/crypto/ec/ecp_sm2p256.c index 49fab47187a..6ec42455299 100644 --- a/crypto/ec/ecp_sm2p256.c +++ b/crypto/ec/ecp_sm2p256.c @@ -18,19 +18,9 @@ #include #include "crypto/bn.h" #include "ec_local.h" +#include "internal/common.h" #include "internal/constant_time.h" -#if defined(__GNUC__) -# define ALIGN32 __attribute((aligned(32))) -# define ALIGN64 __attribute((aligned(64))) -#elif defined(_MSC_VER) -# define ALIGN32 __declspec(align(32)) -# define ALIGN64 __declspec(align(64)) -#else -# define ALIGN32 -# define ALIGN64 -#endif - #define P256_LIMBS (256 / BN_BITS2) #if !defined(OPENSSL_NO_SM2_PRECOMP) diff --git a/include/internal/common.h b/include/internal/common.h index 204e7c3eecd..ce4a4e30860 100644 --- a/include/internal/common.h +++ b/include/internal/common.h @@ -18,17 +18,28 @@ # include "internal/e_os.h" /* ossl_inline in many files */ # include "internal/nelem.h" -#if defined(__GNUC__) || defined(__clang__) - #define likely(x) __builtin_expect(!!(x), 1) - #define unlikely(x) __builtin_expect(!!(x), 0) -#else - #define likely(x) x - #define unlikely(x) x -#endif +# if defined(__GNUC__) || defined(__clang__) +# define likely(x) __builtin_expect(!!(x), 1) +# define unlikely(x) __builtin_expect(!!(x), 0) +# else +# define likely(x) x +# define unlikely(x) x +# endif -#ifdef NDEBUG -# define ossl_assert(x) ((x) != 0) -#else +# if defined(__GNUC__) || defined(__clang__) +# define ALIGN32 __attribute((aligned(32))) +# define ALIGN64 __attribute((aligned(64))) +# elif defined(_MSC_VER) +# define ALIGN32 __declspec(align(32)) +# define ALIGN64 __declspec(align(64)) +# else +# define ALIGN32 +# define ALIGN64 +# endif + +# ifdef NDEBUG +# define ossl_assert(x) ((x) != 0) +# else __owur static ossl_inline int ossl_assert_int(int expr, const char *exprstr, const char *file, int line) { @@ -38,10 +49,10 @@ __owur static ossl_inline int ossl_assert_int(int expr, const char *exprstr, return expr; } -# define ossl_assert(x) ossl_assert_int((x) != 0, "Assertion failed: "#x, \ +# define ossl_assert(x) ossl_assert_int((x) != 0, "Assertion failed: "#x, \ __FILE__, __LINE__) -#endif +# endif /* Check if |pre|, which must be a string literal, is a prefix of |str| */ #define HAS_PREFIX(str, pre) (strncmp(str, pre "", sizeof(pre) - 1) == 0)