From daee6485d249f1706f34dcadb7234894b02f87e7 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sat, 5 Dec 2020 12:43:45 -0700 Subject: [PATCH] bc: repairs for AArch64 Mac OS --- racket/src/bc/foreign/README | 3 +++ racket/src/bc/foreign/libffi/configure | 2 +- racket/src/bc/foreign/libffi/configure.ac | 2 +- racket/src/bc/sconfig.h | 1 + 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/racket/src/bc/foreign/README b/racket/src/bc/foreign/README index 749439607d..0de1fe115c 100644 --- a/racket/src/bc/foreign/README +++ b/racket/src/bc/foreign/README @@ -11,3 +11,6 @@ Changes to the source in this copy: * Added preprocessor conditionals for Go closures in "ffi_darwin.c" * Adjusted "config.guess" to detect Mac OS AArch64 + + * Disable FFI_EXEC_TRAMPOLINE_TABLE for Mac OS AArch64, since + we use pthread_jit_write_protect_np() in the Racket wrapper diff --git a/racket/src/bc/foreign/libffi/configure b/racket/src/bc/foreign/libffi/configure index 823f5bcfff..cbd0857437 100755 --- a/racket/src/bc/foreign/libffi/configure +++ b/racket/src/bc/foreign/libffi/configure @@ -18477,7 +18477,7 @@ fi FFI_EXEC_TRAMPOLINE_TABLE=0 case "$target" in - *arm*-apple-* | aarch64-apple-*) + DISABLED*arm*-apple-* | DISABLEDaarch64-apple-*) FFI_EXEC_TRAMPOLINE_TABLE=1 $as_echo "#define FFI_EXEC_TRAMPOLINE_TABLE 1" >>confdefs.h diff --git a/racket/src/bc/foreign/libffi/configure.ac b/racket/src/bc/foreign/libffi/configure.ac index b764368d6a..6f1ab1c2c0 100644 --- a/racket/src/bc/foreign/libffi/configure.ac +++ b/racket/src/bc/foreign/libffi/configure.ac @@ -191,7 +191,7 @@ fi FFI_EXEC_TRAMPOLINE_TABLE=0 case "$target" in - *arm*-apple-* | aarch64-apple-*) + DISABLED*arm*-apple-* | DISABLEDaarch64-apple-*) FFI_EXEC_TRAMPOLINE_TABLE=1 AC_DEFINE(FFI_EXEC_TRAMPOLINE_TABLE, 1, [Cannot use PROT_EXEC on this target, so, we revert to diff --git a/racket/src/bc/sconfig.h b/racket/src/bc/sconfig.h index 5b88d82233..4b9169f09d 100644 --- a/racket/src/bc/sconfig.h +++ b/racket/src/bc/sconfig.h @@ -655,6 +655,7 @@ # elif defined(__arm64__) # define SCHEME_ARCH "aarch64" # define MZ_USE_MAP_JIT +# define USE_DLOPEN_GLOBAL_BY_DEFAULT # elif defined(__x86_64__) # define SCHEME_ARCH "x86_64" # else