From e38ba073dbe776bfcfa0fa5299c1b78e9798a8ee Mon Sep 17 00:00:00 2001 From: Clemens Lang Date: Sun, 12 Apr 2026 13:47:55 +0200 Subject: [PATCH] configure: Disable trace mode on arm64 macOS <= 14 /bin/ln on macOS 14 is built with a set of relocations that break when binary-patching the architecture from arm64e to arm64, leading to 'dyld: bad bind opcode 0x19'. Newer versions don't seem to ship such binaries, so until somebody comes along to find a solution for these few binaries, let's just disable tracemode support on macOS <= 14. --- aclocal.m4 | 10 ++++++++++ configure | 11 +++++++++++ 2 files changed, 21 insertions(+) diff --git a/aclocal.m4 b/aclocal.m4 index 985e7848c..5b4061b0a 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1185,6 +1185,16 @@ AC_DEFUN([MP_TRACEMODE_SUPPORT],[ elif test x"${ac_cv_func_kevent}" != "xyes"; then AC_MSG_RESULT([kevent() not available, no]) TRACEMODE_SUPPORT=0 + elif test x"$(arch)" == "xarm64" && test "$(sw_vers --productVersion | cut -d. -f1)" -le 14; then + # /bin/ln on macOS 14 is built with a set of relocations that break + # when binary-patching the architecture from arm64e to arm64, + # leading to 'dyld: bad bind opcode 0x19'. + # + # Newer versions don't seem to ship such binaries, so until + # somebody comes along to find a solution for these few binaries, + # let's just disable tracemode support on macOS <= 14. + AC_MSG_RESULT([arm64 on macOS <= 14, no]) + TRACEMODE_SUPPORT=0 else AC_EGREP_CPP(yes_have_ev_receipt, [ #include diff --git a/configure b/configure index dd358acb3..511fe9b59 100755 --- a/configure +++ b/configure @@ -9069,6 +9069,17 @@ printf '%s\n' "kqueue() not available, no" >&6; } { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: kevent() not available, no" >&5 printf '%s\n' "kevent() not available, no" >&6; } TRACEMODE_SUPPORT=0 + elif test x"$(arch)" == "xarm64" && test "$(sw_vers --productVersion | cut -d. -f1)" -le 14; then + # /bin/ln on macOS 14 is built with a set of relocations that break + # when binary-patching the architecture from arm64e to arm64, + # leading to 'dyld: bad bind opcode 0x19'. + # + # Newer versions don't seem to ship such binaries, so until + # somebody comes along to find a solution for these few binaries, + # let's just disable tracemode support on macOS <= 14. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: arm64 on macOS <= 14, no" >&5 +printf '%s\n' "arm64 on macOS <= 14, no" >&6; } + TRACEMODE_SUPPORT=0 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */