From 61c4cfa2a73b3d5d906eb127ec3b49444d15d0eb Mon Sep 17 00:00:00 2001 From: Jerry Yu Date: Wed, 26 Apr 2023 11:06:51 +0800 Subject: [PATCH] Add compiler version checks. When `MBEDTLS_AESCE_C` enabled and the compiler is not expected, we should raise error to user. Signed-off-by: Jerry Yu --- library/aesce.c | 21 +++++++++++++-------- library/aesce.h | 13 +------------ 2 files changed, 14 insertions(+), 20 deletions(-) diff --git a/library/aesce.c b/library/aesce.c index 4e4ed0619..4cbe8b022 100644 --- a/library/aesce.c +++ b/library/aesce.c @@ -48,23 +48,28 @@ #if defined(MBEDTLS_HAVE_ARM64) +/* Compiler version checks. */ +#if defined(__clang__) && (__clang_major__ < 4) +# error "Minimum version of Clang for MBEDTLS_AESCE_C is 4.0." +#elif defined(__GNUC__) && (__GNUC__ < 6) +# error "Minimum version of GCC for MBEDTLS_AESCE_C is 6.0." +#elif defined(_MSC_VER) && (_MSC_VER < 1929) +/* TODO: We haven't verified MSVC from 1920 to 1928. If someone verified that, + * please update this and document of `MBEDTLS_AESCE_C` in + * `mbedtls_config.h`. */ +# error "Minimum version of MSVC for MBEDTLS_AESCE_C is 2019 version 16.11.2." +#endif + #if !defined(__ARM_FEATURE_AES) || defined(MBEDTLS_ENABLE_ARM_CRYPTO_EXTENSIONS_COMPILER_FLAG) # if defined(__clang__) -# if __clang_major__ < 4 -# error "A more recent Clang is required for MBEDTLS_AESCE_C" -# endif # pragma clang attribute push (__attribute__((target("crypto"))), apply_to=function) # define MBEDTLS_POP_TARGET_PRAGMA # elif defined(__GNUC__) -# if __GNUC__ < 6 -# error "A more recent GCC is required for MBEDTLS_AESCE_C" -# endif # pragma GCC push_options # pragma GCC target ("arch=armv8-a+crypto") # define MBEDTLS_POP_TARGET_PRAGMA # elif defined(_MSC_VER) -# else -# error "Only MSVC, GCC and Clang supported for MBEDTLS_AESCE_C" +# error "Required feature(__ARM_FEATURE_AES) is not enabled." # endif #endif /* !__ARM_FEATURE_AES || MBEDTLS_ENABLE_ARM_CRYPTO_EXTENSIONS_COMPILER_FLAG */ diff --git a/library/aesce.h b/library/aesce.h index 7916e522c..7048d77c5 100644 --- a/library/aesce.h +++ b/library/aesce.h @@ -31,22 +31,11 @@ #include "mbedtls/aes.h" #if !defined(MBEDTLS_HAVE_ARM64) -#if defined(__GNUC__) && defined(__aarch64__) -#define MBEDTLS_HAVE_ARM64 -#endif - -/* MSVC - * TODO: We haven't verified msvc from 1920 to 1928. If someone verified that, - * please update this and document of `MBEDTLS_AESCE_C` in - * `mbedtls_config.h` - */ -#if defined(_MSC_VER) && _MSC_VER >=1929 && \ - (defined(_M_ARM64) || defined(_M_ARM64EC)) +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) #define MBEDTLS_HAVE_ARM64 #endif #endif - #if defined(MBEDTLS_HAVE_ARM64) #ifdef __cplusplus