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.
This commit is contained in:
Clemens Lang
2026-04-12 13:47:55 +02:00
committed by Clemens Lang
parent 51e37f5506
commit e38ba073db
2 changed files with 21 additions and 0 deletions
Vendored
+10
View File
@@ -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 <sys/types.h>
Vendored
+11
View File
@@ -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. */