From ae939e9e6a0f0ad2e4fbe333edaa022157c017cf Mon Sep 17 00:00:00 2001 From: Bill Phipps Date: Tue, 3 Sep 2024 21:09:30 -0400 Subject: [PATCH] Modernized memory fence support for C11 and clang --- wolfssl/wolfcrypt/wc_port.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/wolfssl/wolfcrypt/wc_port.h b/wolfssl/wolfcrypt/wc_port.h index d07dbb1b3..0e5110ff3 100644 --- a/wolfssl/wolfcrypt/wc_port.h +++ b/wolfssl/wolfcrypt/wc_port.h @@ -1266,8 +1266,13 @@ WOLFSSL_ABI WOLFSSL_API int wolfCrypt_Cleanup(void); #ifndef WOLFSSL_NO_FENCE #ifdef XFENCE /* use user-supplied XFENCE definition. */ - #elif defined(__GNUC__) && (__GNUC__ >= 4) + #elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) + #include + #define XFENCE() atomic_thread_fence(__ATOMIC_SEQ_CST) + #elif defined(__GNUC__) && (__GNUC__ >= 4) && (__GNUC__ < 5) #define XFENCE() __sync_synchronize() + #elif (defined(__GNUC__) && (__GNUC__ >= 5)) || defined (__clang__) + #define XFENCE() __atomic_thread_fence(__ATOMIC_SEQ_CST) #elif defined (__i386__) || defined(__x86_64__) #define XFENCE() XASM_VOLATILE("lfence") #elif (defined (__arm__) && (__ARM_ARCH > 6)) || defined(__aarch64__)