From 4358d21a06087c1763997487678364302f6a009b Mon Sep 17 00:00:00 2001 From: Akiyama Kohane Date: Sun, 14 Sep 2025 00:57:53 +0800 Subject: [PATCH] fix(mbedtls): prevent vectorization fault in clang O2 optimization Closes https://github.com/espressif/esp-idf/pull/17582 --- components/mbedtls/port/esp_ds/esp_rsa_dec_alt.c | 3 +++ .../clang_build_test/sdkconfig.ci.clang_libclang_rt_perf | 2 ++ 2 files changed, 5 insertions(+) create mode 100644 tools/test_apps/system/clang_build_test/sdkconfig.ci.clang_libclang_rt_perf diff --git a/components/mbedtls/port/esp_ds/esp_rsa_dec_alt.c b/components/mbedtls/port/esp_ds/esp_rsa_dec_alt.c index 9fea5655cb..9ef5071a75 100644 --- a/components/mbedtls/port/esp_ds/esp_rsa_dec_alt.c +++ b/components/mbedtls/port/esp_ds/esp_rsa_dec_alt.c @@ -62,6 +62,9 @@ static int esp_ds_rsaes_pkcs1_v15_unpadding(unsigned char *input, } /* Verify padding bytes are non-zero in constant time */ +#if defined(__clang__) && defined(__xtensa__) + #pragma clang loop vectorize(disable) +#endif for (size_t i = 2; i < ilen; i++) { unsigned char in_padding = (i < pad_count + 2); unsigned char is_zero = (input[i] == 0x00); diff --git a/tools/test_apps/system/clang_build_test/sdkconfig.ci.clang_libclang_rt_perf b/tools/test_apps/system/clang_build_test/sdkconfig.ci.clang_libclang_rt_perf new file mode 100644 index 0000000000..aabe834d36 --- /dev/null +++ b/tools/test_apps/system/clang_build_test/sdkconfig.ci.clang_libclang_rt_perf @@ -0,0 +1,2 @@ +CONFIG_COMPILER_RT_LIB_CLANGRT=y +CONFIG_COMPILER_OPTIMIZATION_PERF=y