From 55cc4d5edef956c6542611958ebec1b36ef077f9 Mon Sep 17 00:00:00 2001 From: lizzie Date: Thu, 4 Dec 2025 07:32:40 +0100 Subject: [experiment] mbedtls force ARM64 Neon even when macros say otherwise (#2793) more of the mbedtls trying to make macro magic even through they do runtime checks Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2793 Reviewed-by: crueter Reviewed-by: CamilleLaVey Co-authored-by: lizzie Co-committed-by: lizzie --- .patch/mbedtls/0001-aesni-fix.patch | 35 +++++++++++++++++++++++++++++++++ .patch/mbedtls/0001-cmake-version.patch | 10 ---------- .patch/mbedtls/0002-aesni-fix.patch | 13 ------------ .patch/mbedtls/0002-arm64-aes-fix.patch | 20 +++++++++++++++++++ .patch/mbedtls/0003-aesni-fix.patch | 22 --------------------- 5 files changed, 55 insertions(+), 45 deletions(-) create mode 100644 .patch/mbedtls/0001-aesni-fix.patch delete mode 100644 .patch/mbedtls/0001-cmake-version.patch delete mode 100644 .patch/mbedtls/0002-aesni-fix.patch create mode 100644 .patch/mbedtls/0002-arm64-aes-fix.patch delete mode 100644 .patch/mbedtls/0003-aesni-fix.patch (limited to '.patch') diff --git a/.patch/mbedtls/0001-aesni-fix.patch b/.patch/mbedtls/0001-aesni-fix.patch new file mode 100644 index 0000000000..5587e4c22d --- /dev/null +++ b/.patch/mbedtls/0001-aesni-fix.patch @@ -0,0 +1,35 @@ +diff --git a/library/aesni.h b/library/aesni.h +index 754c984c79..59e27afd3e 100644 +--- a/library/aesni.h ++++ b/library/aesni.h +@@ -35,7 +35,7 @@ + /* GCC-like compilers: currently, we only support intrinsics if the requisite + * target flag is enabled when building the library (e.g. `gcc -mpclmul -msse2` + * or `clang -maes -mpclmul`). */ +-#if (defined(__GNUC__) || defined(__clang__)) && defined(__AES__) && defined(__PCLMUL__) ++#if defined(__GNUC__) || defined(__clang__) + #define MBEDTLS_AESNI_HAVE_INTRINSICS + #endif + /* For 32-bit, we only support intrinsics */ +diff --git a/library/aesni.c b/library/aesni.c +index 2857068..3e104ab 100644 +--- a/library/aesni.c ++++ b/library/aesni.c +@@ -31,16 +31,14 @@ + #include + #endif + +-#if defined(MBEDTLS_ARCH_IS_X86) + #if defined(MBEDTLS_COMPILER_IS_GCC) + #pragma GCC push_options + #pragma GCC target ("pclmul,sse2,aes") + #define MBEDTLS_POP_TARGET_PRAGMA +-#elif defined(__clang__) && (__clang_major__ >= 5) ++#elif defined(__clang__) + #pragma clang attribute push (__attribute__((target("pclmul,sse2,aes"))), apply_to=function) + #define MBEDTLS_POP_TARGET_PRAGMA + #endif +-#endif + + #if !defined(MBEDTLS_AES_USE_HARDWARE_ONLY) + /* diff --git a/.patch/mbedtls/0001-cmake-version.patch b/.patch/mbedtls/0001-cmake-version.patch deleted file mode 100644 index 2b78804884..0000000000 --- a/.patch/mbedtls/0001-cmake-version.patch +++ /dev/null @@ -1,10 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 1811c42..bac9098 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -1,4 +1,4 @@ --cmake_minimum_required(VERSION 2.6) -+cmake_minimum_required(VERSION 3.5) - if(TEST_CPP) - project("mbed TLS" C CXX) - else() diff --git a/.patch/mbedtls/0002-aesni-fix.patch b/.patch/mbedtls/0002-aesni-fix.patch deleted file mode 100644 index dc5d3153b7..0000000000 --- a/.patch/mbedtls/0002-aesni-fix.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/library/aesni.h b/library/aesni.h -index 754c984c79..59e27afd3e 100644 ---- a/library/aesni.h -+++ b/library/aesni.h -@@ -35,7 +35,7 @@ - /* GCC-like compilers: currently, we only support intrinsics if the requisite - * target flag is enabled when building the library (e.g. `gcc -mpclmul -msse2` - * or `clang -maes -mpclmul`). */ --#if (defined(__GNUC__) || defined(__clang__)) && defined(__AES__) && defined(__PCLMUL__) -+#if defined(__GNUC__) || defined(__clang__) - #define MBEDTLS_AESNI_HAVE_INTRINSICS - #endif - /* For 32-bit, we only support intrinsics */ diff --git a/.patch/mbedtls/0002-arm64-aes-fix.patch b/.patch/mbedtls/0002-arm64-aes-fix.patch new file mode 100644 index 0000000000..285cb75139 --- /dev/null +++ b/.patch/mbedtls/0002-arm64-aes-fix.patch @@ -0,0 +1,20 @@ +diff --git a/library/common.h b/library/common.h +index 50f2a29..c60d9dc 100644 +--- a/library/common.h ++++ b/library/common.h +@@ -19,11 +19,11 @@ + #include + #include + +-#if defined(__ARM_NEON) +-#include ++#if defined(MBEDTLS_PLATFORM_IS_WINDOWS_ON_ARM64) ++#include + #define MBEDTLS_HAVE_NEON_INTRINSICS +-#elif defined(MBEDTLS_PLATFORM_IS_WINDOWS_ON_ARM64) +-#include ++#elif defined(__ANDROID__) || defined(__ARM_NEON) ++#include + #define MBEDTLS_HAVE_NEON_INTRINSICS + #endif + diff --git a/.patch/mbedtls/0003-aesni-fix.patch b/.patch/mbedtls/0003-aesni-fix.patch deleted file mode 100644 index c620b42554..0000000000 --- a/.patch/mbedtls/0003-aesni-fix.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff --git a/library/aesni.c b/library/aesni.c -index 2857068..3e104ab 100644 ---- a/library/aesni.c -+++ b/library/aesni.c -@@ -31,16 +31,14 @@ - #include - #endif - --#if defined(MBEDTLS_ARCH_IS_X86) - #if defined(MBEDTLS_COMPILER_IS_GCC) - #pragma GCC push_options - #pragma GCC target ("pclmul,sse2,aes") - #define MBEDTLS_POP_TARGET_PRAGMA --#elif defined(__clang__) && (__clang_major__ >= 5) -+#elif defined(__clang__) - #pragma clang attribute push (__attribute__((target("pclmul,sse2,aes"))), apply_to=function) - #define MBEDTLS_POP_TARGET_PRAGMA - #endif --#endif - - #if !defined(MBEDTLS_AES_USE_HARDWARE_ONLY) - /* -- cgit v1.2.3