From 3a59f8e5331bb6be5d298bc5c136a79102196c1d Mon Sep 17 00:00:00 2001 From: Frank Denis Date: Fri, 20 Oct 2023 13:47:57 +0200 Subject: [PATCH] aarch64: set compiler attributes *after* including Fixes #1321 Upstream-Status: Backport [https://github.com/jedisct1/libsodium/commit/8f453f41f8834e0fe47610f2a3e03e696ddb3450] Signed-off-by: Yi Zhao --- thirdparty/libsodium-stable/configure.ac | 11 ++++++----- .../crypto_aead/aegis128l/aegis128l_armcrypto.c | 12 ++++++------ .../crypto_aead/aegis256/aegis256_armcrypto.c | 12 ++++++------ .../aes256gcm/armcrypto/aead_aes256gcm_armcrypto.c | 12 ++++++------ 4 files changed, 24 insertions(+), 23 deletions(-) diff --git a/thirdparty/libsodium-stable/configure.ac b/thirdparty/libsodium-stable/configure.ac index df83ef512..be67d3417 100644 --- a/thirdparty/libsodium-stable/configure.ac +++ b/thirdparty/libsodium-stable/configure.ac @@ -398,11 +398,6 @@ AS_IF([test "x$EMSCRIPTEN" = "x"], [ have_armcrypto=no AC_MSG_CHECKING(for ARM crypto instructions set) AC_LINK_IFELSE([AC_LANG_PROGRAM([[ - #ifdef __clang__ - # pragma clang attribute push(__attribute__((target("neon,crypto,aes"))), apply_to = function) - #elif defined(__GNUC__) - # pragma GCC target("+simd+crypto") - #endif #ifndef __ARM_FEATURE_CRYPTO # define __ARM_FEATURE_CRYPTO 1 #endif @@ -411,6 +406,12 @@ AS_IF([test "x$EMSCRIPTEN" = "x"], [ #endif #include + + #ifdef __clang__ + # pragma clang attribute push(__attribute__((target("neon,crypto,aes"))), apply_to = function) + #elif defined(__GNUC__) + # pragma GCC target("+simd+crypto") + #endif ]], [[ vaeseq_u8(vmovq_n_u8(0), vmovq_n_u8(0)); diff --git a/thirdparty/libsodium-stable/src/libsodium/crypto_aead/aegis128l/aegis128l_armcrypto.c b/thirdparty/libsodium-stable/src/libsodium/crypto_aead/aegis128l/aegis128l_armcrypto.c index 825de8a1c..a01f60cbe 100644 --- a/thirdparty/libsodium-stable/src/libsodium/crypto_aead/aegis128l/aegis128l_armcrypto.c +++ b/thirdparty/libsodium-stable/src/libsodium/crypto_aead/aegis128l/aegis128l_armcrypto.c @@ -17,12 +17,6 @@ #include "aegis128l_armcrypto.h" -#ifdef __clang__ -#pragma clang attribute push(__attribute__((target("neon,crypto,aes"))), apply_to = function) -#elif defined(__GNUC__) -#pragma GCC target("+simd+crypto") -#endif - #ifndef __ARM_FEATURE_CRYPTO #define __ARM_FEATURE_CRYPTO 1 #endif @@ -32,6 +26,12 @@ #include +#ifdef __clang__ +#pragma clang attribute push(__attribute__((target("neon,crypto,aes"))), apply_to = function) +#elif defined(__GNUC__) +#pragma GCC target("+simd+crypto") +#endif + #define AES_BLOCK_LENGTH 16 typedef uint8x16_t aes_block_t; diff --git a/thirdparty/libsodium-stable/src/libsodium/crypto_aead/aegis256/aegis256_armcrypto.c b/thirdparty/libsodium-stable/src/libsodium/crypto_aead/aegis256/aegis256_armcrypto.c index e1ebd577a..058e2072b 100644 --- a/thirdparty/libsodium-stable/src/libsodium/crypto_aead/aegis256/aegis256_armcrypto.c +++ b/thirdparty/libsodium-stable/src/libsodium/crypto_aead/aegis256/aegis256_armcrypto.c @@ -17,12 +17,6 @@ #include "aegis256_armcrypto.h" -#ifdef __clang__ -#pragma clang attribute push(__attribute__((target("neon,crypto,aes"))), apply_to = function) -#elif defined(__GNUC__) -#pragma GCC target("+simd+crypto") -#endif - #ifndef __ARM_FEATURE_CRYPTO #define __ARM_FEATURE_CRYPTO 1 #endif @@ -32,6 +26,12 @@ #include +#ifdef __clang__ +#pragma clang attribute push(__attribute__((target("neon,crypto,aes"))), apply_to = function) +#elif defined(__GNUC__) +#pragma GCC target("+simd+crypto") +#endif + #define AES_BLOCK_LENGTH 16 typedef uint8x16_t aes_block_t; diff --git a/thirdparty/libsodium-stable/src/libsodium/crypto_aead/aes256gcm/armcrypto/aead_aes256gcm_armcrypto.c b/thirdparty/libsodium-stable/src/libsodium/crypto_aead/aes256gcm/armcrypto/aead_aes256gcm_armcrypto.c index 0a5a12811..aa76f5cd1 100644 --- a/thirdparty/libsodium-stable/src/libsodium/crypto_aead/aes256gcm/armcrypto/aead_aes256gcm_armcrypto.c +++ b/thirdparty/libsodium-stable/src/libsodium/crypto_aead/aes256gcm/armcrypto/aead_aes256gcm_armcrypto.c @@ -19,12 +19,6 @@ #define __vectorcall #endif -#ifdef __clang__ -#pragma clang attribute push(__attribute__((target("neon,crypto,aes"))), apply_to = function) -#elif defined(__GNUC__) -#pragma GCC target("+simd+crypto") -#endif - #ifndef __ARM_FEATURE_CRYPTO #define __ARM_FEATURE_CRYPTO 1 #endif @@ -34,6 +28,12 @@ #include +#ifdef __clang__ +#pragma clang attribute push(__attribute__((target("neon,crypto,aes"))), apply_to = function) +#elif defined(__GNUC__) +#pragma GCC target("+simd+crypto") +#endif + #define ABYTES crypto_aead_aes256gcm_ABYTES #define NPUBBYTES crypto_aead_aes256gcm_NPUBBYTES #define KEYBYTES crypto_aead_aes256gcm_KEYBYTES -- 2.34.1