diff --git a/build_files/build_environment/cmake/ffi.cmake b/build_files/build_environment/cmake/ffi.cmake index aac186af961..24c62be7c5a 100644 --- a/build_files/build_environment/cmake/ffi.cmake +++ b/build_files/build_environment/cmake/ffi.cmake @@ -26,7 +26,11 @@ ExternalProject_Add(external_ffi PATCH_COMMAND ${PATCH_CMD} -p 0 -d ${BUILD_DIR}/ffi/src/external_ffi < - ${PATCH_DIR}/ffi.diff + ${PATCH_DIR}/ffi.diff && + # Fix compilation errors on Apple Clang >= 17, remove when FFI is updated beyond 3.4.7, see PR #136934 for details. + ${PATCH_CMD} -p 1 -d + ${BUILD_DIR}/ffi/src/external_ffi < + ${PATCH_DIR}/ffi_apple_clang_17.diff INSTALL_DIR ${LIBDIR}/ffi ) diff --git a/build_files/build_environment/patches/ffi_apple_clang_17.diff b/build_files/build_environment/patches/ffi_apple_clang_17.diff new file mode 100644 index 00000000000..a264d7b76d1 --- /dev/null +++ b/build_files/build_environment/patches/ffi_apple_clang_17.diff @@ -0,0 +1,34 @@ +diff --git a/src/aarch64/sysv.S b/src/aarch64/sysv.S +index eeaf3f8..329889c 100644 +--- a/src/aarch64/sysv.S ++++ b/src/aarch64/sysv.S +@@ -76,8 +76,8 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ + x5 closure + */ + +- cfi_startproc + CNAME(ffi_call_SYSV): ++ cfi_startproc + /* Sign the lr with x1 since that is where it will be stored */ + SIGN_LR_WITH_REG(x1) + +@@ -268,8 +268,8 @@ CNAME(ffi_closure_SYSV_V): + #endif + + .align 4 +- cfi_startproc + CNAME(ffi_closure_SYSV): ++ cfi_startproc + SIGN_LR + stp x29, x30, [sp, #-ffi_closure_SYSV_FS]! + cfi_adjust_cfa_offset (ffi_closure_SYSV_FS) +@@ -500,8 +500,8 @@ CNAME(ffi_go_closure_SYSV_V): + #endif + + .align 4 +- cfi_startproc + CNAME(ffi_go_closure_SYSV): ++ cfi_startproc + stp x29, x30, [sp, #-ffi_closure_SYSV_FS]! + cfi_adjust_cfa_offset (ffi_closure_SYSV_FS) + cfi_rel_offset (x29, 0)