diff --git a/IDE/LINUX-SGX/build.sh b/IDE/LINUX-SGX/build.sh index 8e98b002b..317765529 100755 --- a/IDE/LINUX-SGX/build.sh +++ b/IDE/LINUX-SGX/build.sh @@ -5,6 +5,11 @@ CFLAGS_NEW="-DDEBUG_WOLFSSL -I/usr/lib/gcc/x86_64-linux-gnu/$(gcc -dumpversion)/ export CFLAGS="${CFLAGS} ${CFLAGS_NEW}" echo ${CFLAGS} +# create an empty options.h file if none exist +if [ ! -f ../../wolfssl/options.h ]; then + touch ../../wolfssl/options.h +fi + NEW_INCLUDE_PATH="$C_INCLUDE_PATH:/usr/lib/gcc/x86_64-linux-gnu/$(gcc -dumpversion)/include" export C_INCLUDE_PATH="$NEW_INCLUDE_PATH" diff --git a/wolfcrypt/src/cpuid.c b/wolfcrypt/src/cpuid.c index 73b3a2925..5c3e333ff 100644 --- a/wolfcrypt/src/cpuid.c +++ b/wolfcrypt/src/cpuid.c @@ -41,17 +41,21 @@ */ void cpuid_set_flags(void) { - if (!cpuid_check) { - cpuid_flags |= CPUID_AVX1; - cpuid_flags |= CPUID_AVX2; - cpuid_flags |= CPUID_BMI2; - cpuid_flags |= CPUID_RDSEED; - cpuid_flags |= CPUID_AESNI; - cpuid_flags |= CPUID_ADX; - cpuid_flags |= CPUID_MOVBE; - cpuid_flags |= CPUID_BMI1; + if (WOLFSSL_ATOMIC_LOAD(cpuid_flags) == WC_CPUID_INITIALIZER) { + cpuid_flags_t new_cpuid_flags = 0, + old_cpuid_flags = WC_CPUID_INITIALIZER; - cpuid_check = 1; + new_cpuid_flags |= CPUID_AVX1; + new_cpuid_flags |= CPUID_AVX2; + new_cpuid_flags |= CPUID_BMI2; + new_cpuid_flags |= CPUID_RDSEED; + new_cpuid_flags |= CPUID_AESNI; + new_cpuid_flags |= CPUID_ADX; + new_cpuid_flags |= CPUID_MOVBE; + new_cpuid_flags |= CPUID_BMI1; + + (void)wolfSSL_Atomic_Uint_CompareExchange + (&cpuid_flags, &old_cpuid_flags, new_cpuid_flags); } }