repairs to build and run on AArch64 Mac OS

This commit is contained in:
Matthew Flatt 2020-12-03 12:02:16 -07:00
parent 6201055c7a
commit 908156b92f
28 changed files with 250 additions and 40 deletions

View File

@ -561,6 +561,8 @@ static ptr bv_fasl_entry(ptr tc, ptr bv, int ty, uptr offset, uptr len, unbufFas
ptr x; ptr strbuf = S_G.null_string;
struct faslFileObj ffo;
S_thread_start_code_write();
if (ty == fasl_type_vfasl) {
x = S_vfasl(bv, NULL, offset, len);
} else if (ty == fasl_type_fasl) {
@ -575,6 +577,8 @@ static ptr bv_fasl_entry(ptr tc, ptr bv, int ty, uptr offset, uptr len, unbufFas
}
S_flush_instruction_cache(tc);
S_thread_end_code_write();
return x;
}
@ -606,6 +610,25 @@ static void bytesin(octet *s, iptr n, faslFile f) {
}
}
static void code_bytesin(octet *s, iptr n, faslFile f) {
#ifdef CANNOT_READ_DIRECTLY_INTO_CODE
while (1) {
iptr avail = f->end - f->next;
if (avail < n) {
bytesin(s, avail, f);
n -= avail;
s += avail;
fillFaslFile(f);
} else {
bytesin(s, n, f);
break;
}
}
#else
bytesin(s, n, f);
#endif
}
static void toolarge(ptr path) {
S_error1("", "fasl value too large for this machine type in ~a", path);
}
@ -1039,7 +1062,7 @@ static void faslin(ptr tc, ptr *x, ptr t, ptr *pstrbuf, faslFile f) {
if (pinfos != Snil) {
S_G.profile_counters = Scons(S_weak_cons(co, pinfos), S_G.profile_counters);
}
bytesin((octet *)&CODEIT(co, 0), n, f);
code_bytesin((octet *)&CODEIT(co, 0), n, f);
#ifdef PORTABLE_BYTECODE_BIGENDIAN
swap_code_endian((octet *)&CODEIT(co, 0), n);
#endif

View File

@ -288,6 +288,7 @@ static void s_instantiate_code_object() {
static void s_link_code_object(co, objs) ptr co, objs; {
ptr t; uptr a, m, n;
S_thread_start_code_write();
t = CODERELOC(co);
m = RELOCSIZE(t);
a = 0;
@ -306,6 +307,7 @@ static void s_link_code_object(co, objs) ptr co, objs; {
S_set_code_obj("gc", RELOC_TYPE(entry), co, a, Scar(objs), item_off);
objs = Scdr(objs);
}
S_thread_end_code_write();
}
static INT s_check_heap_enabledp(void) {

View File

@ -878,47 +878,64 @@ static char *s_getwd() {
static ptr s_set_code_byte(p, n, x) ptr p, n, x; {
I8 *a;
S_thread_start_code_write();
a = (I8 *)TO_VOIDP((uptr)p + UNFIX(n));
*a = (I8)UNFIX(x);
S_thread_end_code_write();
return Svoid;
}
static ptr s_set_code_word(p, n, x) ptr p, n, x; {
I16 *a;
S_thread_start_code_write();
a = (I16 *)TO_VOIDP((uptr)p + UNFIX(n));
*a = (I16)UNFIX(x);
S_thread_end_code_write();
return Svoid;
}
static ptr s_set_code_long(p, n, x) ptr p, n, x; {
I32 *a;
S_thread_start_code_write();
a = (I32 *)TO_VOIDP((uptr)p + UNFIX(n));
*a = (I32)(Sfixnump(x) ? UNFIX(x) : Sinteger_value(x));
S_thread_end_code_write();
return Svoid;
}
static void s_set_code_long2(p, n, h, l) ptr p, n, h, l; {
I32 *a;
S_thread_start_code_write();
a = (I32 *)TO_VOIDP((uptr)p + UNFIX(n));
*a = (I32)((UNFIX(h) << 16) + UNFIX(l));
S_thread_end_code_write();
}
static ptr s_set_code_quad(p, n, x) ptr p, n, x; {
I64 *a;
S_thread_start_code_write();
a = (I64 *)TO_VOIDP((uptr)p + UNFIX(n));
*a = Sfixnump(x) ? UNFIX(x) : S_int64_value("\\#set-code-quad!", x);
S_thread_end_code_write();
return Svoid;
}
static ptr s_set_reloc(p, n, e) ptr p, n, e; {
iptr *a;
S_thread_start_code_write();
a = (iptr *)(&RELOCIT(CODERELOC(p), UNFIX(n)));
*a = Sfixnump(e) ? UNFIX(e) : Sinteger_value(e);
S_thread_end_code_write();
return e;
}
@ -931,6 +948,8 @@ static ptr s_make_code(flags, free, name, arity_mark, n, info, pinfos)
iptr flags, free, n; ptr name, arity_mark, info, pinfos; {
ptr co;
S_thread_start_code_write();
co = S_code(get_thread_context(), type_code | (flags << code_flags_offset), n);
CODEFREE(co) = free;
CODENAME(co) = name;
@ -940,12 +959,17 @@ static ptr s_make_code(flags, free, name, arity_mark, n, info, pinfos)
if (pinfos != Snil) {
S_G.profile_counters = Scons(S_weak_cons(co, pinfos), S_G.profile_counters);
}
S_thread_end_code_write();
return co;
}
static ptr s_make_reloc_table(codeobj, n) ptr codeobj, n; {
S_thread_start_code_write();
CODERELOC(codeobj) = S_relocation_table(UNFIX(n));
RELOCCODE(CODERELOC(codeobj)) = codeobj;
S_thread_end_code_write();
return Svoid;
}

View File

@ -109,6 +109,7 @@ static void main_init() {
VIRTREG(tc, i) = FIX(0);
}
S_thread_start_code_write();
p = S_code(tc, type_code, size_rp_header);
CODERELOC(p) = S_relocation_table(0);
CODENAME(p) = Sfalse;
@ -122,6 +123,7 @@ static void main_init() {
(uptr)TO_PTR(&RPHEADERTOPLINK(TO_PTR(&CODEIT(p, 0)))) - (uptr)p;
S_protect(&S_G.dummy_code_object);
S_G.dummy_code_object = p;
S_thread_end_code_write();
S_protect(&S_G.error_invoke_code_object);
S_G.error_invoke_code_object = Snil;

View File

@ -783,6 +783,7 @@ void S_schsig_init() {
S_protect(&S_G.collect_request_pending_id);
S_G.collect_request_pending_id = S_intern((const unsigned char *)"$collect-request-pending");
S_thread_start_code_write();
p = S_code(get_thread_context(), type_code | (code_flag_continuation << code_flags_offset), 0);
CODERELOC(p) = S_relocation_table(0);
CODENAME(p) = Sfalse;
@ -790,6 +791,7 @@ void S_schsig_init() {
CODEFREE(p) = 0;
CODEINFO(p) = Sfalse;
CODEPINFOS(p) = Snil;
S_thread_end_code_write();
S_set_symbol_value(S_G.null_continuation_id,
S_mkcontinuation(space_new,

View File

@ -252,6 +252,7 @@ static IBOOL destroy_thread(tc) ptr tc; {
S_scan_dirty((ptr *)EAP(tc), (ptr *)REAL_EAP(tc));
/* close off thread-local allocation */
S_thread_start_code_write();
{
ISPC s; IGEN g;
thread_gc *tgc = THREAD_GC(tc);
@ -260,6 +261,7 @@ static IBOOL destroy_thread(tc) ptr tc; {
if (tgc->next_loc[g][s])
S_close_off_thread_local_segment(tc, s, g);
}
S_thread_end_code_write();
alloc_mutex_release();

View File

@ -83,8 +83,7 @@
# if (machine_type == machine_type_tarm64osx)
# define PTHREADS
# endif
# define S_MAP_CODE MAP_JIT
# define S_ENABLE_CODE_WRITE(on) pthread_jit_write_protect_np(!(on))
# define FLUSHCACHE
#endif
#if (machine_type == machine_type_ppc32osx || machine_type == machine_type_tppc32osx)
@ -325,6 +324,12 @@ typedef int tputsputcchar;
#if !defined(__POWERPC__)
# define LITTLE_ENDIAN_IEEE_DOUBLE
#endif
#if defined(__arm64__)
# define S_MAP_CODE MAP_JIT
# define S_ENABLE_CODE_WRITE(on) pthread_jit_write_protect_np(!(on))
# define CANNOT_READ_DIRECTLY_INTO_CODE
# include <pthread.h>
#endif
#define LDEXP
#define ARCHYPERBOLIC
#define GETPAGESIZE() getpagesize()

View File

@ -258,8 +258,21 @@ ptr S_vfasl(ptr bv, void *stream, iptr offset, iptr input_len)
memcpy(TO_VOIDP(vspaces[s]), bv_addr, sz);
bv_addr = TO_VOIDP(ptr_add(TO_PTR(bv_addr), sz));
} else {
if (S_fasl_stream_read(stream, TO_VOIDP(vspaces[s]), sz) < 0)
ptr dest;
#ifdef CANNOT_READ_DIRECTLY_INTO_CODE
if (s == vspace_code)
newspace_find_room(tc, typemod, sz, dest);
else
dest = vspaces[s];
#else
dest = vspaces[s];
#endif
if (S_fasl_stream_read(stream, TO_VOIDP(dest), sz) < 0)
S_error("fasl-read", "input truncated");
#ifdef CANNOT_READ_DIRECTLY_INTO_CODE
if (dest != vspaces[s])
memcpy(TO_VOIDP(vspaces[s]), TO_VOIDP(dest), sz);
#endif
}
} else
vspaces[s] = (ptr)0;

View File

@ -159,7 +159,7 @@ case "${CONFIG_UNAME}" in
tm64=ta6osx
elif uname -a | egrep 'arm|aarch' > /dev/null 2>&1 ; then
m64=arm64osx
tm64=tarm6osx
tm64=tarm64osx
elif uname -a | egrep 'Power' > /dev/null 2>&1 ; then
m64=ppc32osx
tm64=tppc32osx
@ -356,7 +356,7 @@ if [ "$m" = "pb" ] ; then
fi
if [ "$bits" = "" ] ; then
if uname -a | egrep 'amd64|x86_64|aarch64' > /dev/null 2>&1 ; then
if uname -a | egrep 'amd64|x86_64|aarch64|arm64' > /dev/null 2>&1 ; then
bits=64
else
bits=32
@ -522,7 +522,7 @@ if [ "$cflagsset" = "no" ] ; then
CFLAGS="-m64 ${optFlags}"
;;
arm64osx|tarm64osx)
CFLAGS="-arch arm ${optFlags}"
CFLAGS="-arch arm64 ${optFlags}"
;;
a6nt|ta6nt)
CFLAGS="${optFlags}"

View File

@ -0,0 +1,14 @@
# Mf-arm64osx
m ?= arm64osx
fsrc = foreign1.c foreign2.c foreign3.c foreign4.c
fobj = foreign1.so
include Mf-base
foreign1.so: ${fsrc} ../boot/$m/scheme.h
cc -dynamiclib -undefined dynamic_lookup -I${Include} -o foreign1.so ${fsrc}
cat_flush: cat_flush.c
cc -o cat_flush cat_flush.c

View File

@ -0,0 +1,5 @@
# Mf-tarm64osx
m = tarm64osx
include Mf-arm64osx

View File

@ -66,6 +66,8 @@ case "$Mhost" in
i3s2) ;;
ppc32le) ;;
ppc32osx) ;;
ppc32osx) ;;
arm64osx) ;;
ta6fb) Muni=a6fb ;;
ta6le) Muni=a6le ;;
ta6nb) Muni=a6nb ;;
@ -86,6 +88,7 @@ case "$Mhost" in
ti3s2) Muni=i3s2 ;;
tppc32le) Muni=ppc32le ;;
tppc32osx) Muni=ppc32osx ;;
tarm64osx) Muni=arm64osx ;;
*) echo "Unrecognized machine name $Mhost"; exit 1 ;;
esac

View File

@ -37,3 +37,21 @@ if test "${enable_strip}" = "yes" ; then
fi
fi
fi
case "$host_os" in
darwin*)
case "$host_cpu" in
aarch64)
STRIP_SIGNATURE="codesign --remove-signature"
RESTORE_SIGNATURE="codesign -s - --entitlements"
;;
*)
# Check whether `codesign` can remove signatures
touch sig-test-file
if `codesign --remove-signature sig-test-file > /dev/null 2>&1` ; then
STRIP_SIGNATURE="codesign --remove-signature"
fi
rm sig-test-file
;;
esac
esac

View File

@ -5,3 +5,6 @@ STRIP_LIB_DEBUG=":"
strip_debug_flags=""
enable_strip_by_default=yes
strip_needs_dash_s=no
STRIP_SIGNATURE=":"
RESTORE_SIGNATURE=":"

View File

@ -40,6 +40,9 @@ RANLIB = @RANLIB@
STRIP_DEBUG = @STRIP_DEBUG@
STRIP_LIB_DEBUG = @STRIP_LIB_DEBUG@
STRIP_SIGNATURE = @STRIP_SIGNATURE@
RESTORE_SIGNATURE = @RESTORE_SIGNATURE@ "${srcdir}/../mac/entitlements.plist"
ARLIBFLAGS = @LDFLAGS@ @LIBS@
RACKET = racket
@ -50,7 +53,7 @@ RUN_THIS_RACKET_CGC = ./racket@CGC@
RUN_THIS_RACKET_MMM = ./racket@MMM@
SETUP_BOOT = -O "info@compiler/cm" -l- setup @BOOT_MODE@ $(srcdir)/../setup-go.rkt ../compiled
SETUP_BOOT_COLLECTS_PATH = $(SETUP_BOOT) collpath.inc collpath.d "$(srcdir)/../start/collects-path.rkt"
SETUP_BOOT_COLLECTS_PATH = $(SETUP_BOOT) collpath.inc collpath.d "$(srcdir)/../start/collects-path.rkt" "${srcdir}/.."
MZSRC = $(srcdir)/src
@ -479,6 +482,7 @@ unix-install:
cd ..; cp bc/starter@EXE_SUFFIX@ "$(DESTDIR)$(libpltdir)/starter@EXE_SUFFIX@"
cp $(srcdir)/../start/starter-sh .
cd ..; cp bc/starter-sh "$(DESTDIR)$(libpltdir)/starter-sh"
cd ..; $(STRIP_SIGNATURE) "$(DESTDIR)$(libpltdir)/starter@EXE_SUFFIX@"
cd ..; $(STRIP_DEBUG) "$(DESTDIR)$(libpltdir)/starter@EXE_SUFFIX@"
@RUN_RACKET_CGC@ $(SETUP_BOOT_COLLECTS_PATH) "$(DESTDIR)$(libpltdir)/starter@EXE_SUFFIX@" $(DESTDIR)@COLLECTS_PATH@ $(DESTDIR)@CONFIG_PATH@
cd ..; echo 'CC=@CC@' > "$(BUILDINFO)"
@ -491,6 +495,7 @@ unix-install:
unix-install-cgc:
$(MAKE) unix-@INSTALL_LIBS_ENABLE@-libs-cgc
cd ..; $(ICP) bc/racket@CGC@ "$(DESTDIR)$(bindir)/racket@CGC_INSTALLED@"
cd ..; $(STRIP_SIGNATURE) "$(DESTDIR)$(bindir)/racket@CGC_INSTALLED@"
cd ..; $(STRIP_DEBUG) "$(DESTDIR)$(bindir)/racket@CGC_INSTALLED@"
cd ..; cp bc/mzdyn.o "$(DESTDIR)$(libpltdir)/mzdyn.o"
@RUN_RACKET_CGC@ $(SETUP_BOOT_COLLECTS_PATH) "$(DESTDIR)$(bindir)/racket@CGC_INSTALLED@@EXE_SUFFIX@" $(DESTDIR)@COLLECTS_PATH@ $(DESTDIR)@CONFIG_PATH@
@ -510,6 +515,7 @@ unix-install-cgc-final:
unix-install-3m:
cd ..; $(ICP) bc/racket@MMM@ "$(DESTDIR)$(bindir)/racket@MMM_INSTALLED@"
cd ..; $(STRIP_SIGNATURE) "$(DESTDIR)$(bindir)/racket@MMM_INSTALLED@"
cd ..; $(STRIP_DEBUG) "$(DESTDIR)$(bindir)/racket@MMM_INSTALLED@"
$(MAKE) unix-@INSTALL_LIBS_ENABLE@-libs-3m
cd ..; $(ICP) bc/mzdyn3m.o "$(DESTDIR)$(libpltdir)/mzdyn3m.o"
@ -599,7 +605,7 @@ osx-install-cgc:
mkdir -p $(DESTDIR)$(MZFWDIR)/Versions/$(FWVERSION)
cp $(MZFW) $(DESTDIR)$(MZFWDIR)/Versions/$(FWVERSION)/
/usr/bin/install_name_tool -change "@executable_path/Racket.framework/Versions/$(FWVERSION)/Racket" "@FRAMEWORK_PREFIX@Racket.framework/Versions/$(FWVERSION)/Racket" $(DESTDIR)"$(bindir)/racket@CGC_INSTALLED@"
$(STRIP_DEBUG) $(DESTDIR)"$(bindir)/racket@CGC_INSTALLED@"
$(RESTORE_SIGNATURE) $(DESTDIR)"$(bindir)/racket@CGC_INSTALLED@"
osx-install-cgc-final:
$(MAKE) unix-install-cgc-final
@ -610,7 +616,7 @@ osx-install-3m:
mkdir -p $(DESTDIR)"$(MZFWDIR)/Versions/$(FWVERSION)_3m"
cp $(MZFWMMM) $(DESTDIR)$(MZFWDIR)/Versions/$(FWVERSION)_3m/
/usr/bin/install_name_tool -change "@executable_path/Racket.framework/Versions/$(FWVERSION)_3m/Racket" "@FRAMEWORK_PREFIX@Racket.framework/Versions/$(FWVERSION)_3m/Racket" $(DESTDIR)"$(bindir)/racket@MMM_INSTALLED@"
$(STRIP_DEBUG) $(DESTDIR)"$(bindir)/racket@MMM_INSTALLED@"
$(RESTORE_SIGNATURE) $(DESTDIR)"$(bindir)/racket@MMM_INSTALLED@"
osx-install-3m-final:
$(MAKE) unix-install-3m-final

View File

@ -695,6 +695,8 @@ PLAIN_CC
POST_LINKER
MZLINKER
REZ
RESTORE_SIGNATURE
STRIP_SIGNATURE
STRIP_LIB_DEBUG
STRIP_DEBUG
ARFLAGS
@ -2907,6 +2909,9 @@ strip_debug_flags=""
enable_strip_by_default=yes
strip_needs_dash_s=no
STRIP_SIGNATURE=":"
RESTORE_SIGNATURE=":"
# Check whether --enable-noopt was given.
if test "${enable_noopt+set}" = set; then :
enableval=$enable_noopt;
@ -5379,6 +5384,24 @@ $as_echo "$set_strip_lib" >&6; }
fi
fi
case "$host_os" in
darwin*)
case "$host_cpu" in
aarch64)
STRIP_SIGNATURE="codesign --remove-signature"
RESTORE_SIGNATURE="codesign -s - --entitlements"
;;
*)
# Check whether `codesign` can remove signatures
touch sig-test-file
if `codesign --remove-signature sig-test-file > /dev/null 2>&1` ; then
STRIP_SIGNATURE="codesign --remove-signature"
fi
rm sig-test-file
;;
esac
esac
############## C flags ################
@ -7164,6 +7187,8 @@ LIBS="$LIBS $EXTRALIBS"

View File

@ -1409,6 +1409,8 @@ AC_SUBST(STATIC_AR)
AC_SUBST(ARFLAGS)
AC_SUBST(STRIP_DEBUG)
AC_SUBST(STRIP_LIB_DEBUG)
AC_SUBST(STRIP_SIGNATURE)
AC_SUBST(RESTORE_SIGNATURE)
AC_SUBST(REZ)
AC_SUBST(MZLINKER)
AC_SUBST(POST_LINKER)

View File

@ -9,3 +9,5 @@ Changes to the source in this copy:
* Added $CPPFLAGS to use of $CC in "configure.host"
* Added preprocessor conditionals for Go closures in "ffi_darwin.c"
* Adjusted "config.guess" to detect Mac OS AArch64

View File

@ -2,7 +2,7 @@
# Attempt to guess a canonical system name.
# Copyright 1992-2017 Free Software Foundation, Inc.
timestamp='2017-05-11'
timestamp='2020-12-03'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@ -1321,6 +1321,8 @@ EOF
# processor. This is not true of the ARM version of Darwin
# that Apple uses in portable devices.
UNAME_PROCESSOR=x86_64
elif test "$UNAME_PROCESSOR" = arm ; then
UNAME_PROCESSOR=aarch64
fi
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
exit ;;

View File

@ -611,7 +611,7 @@ $(MZFWMMM): ../libracket3m.@LIBSFX@ $(LIBRKTIO)
rm -f Racket.framework/Racket
ln -s Versions/$(FWVERSION)_3m/Racket Racket.framework/Racket
mkdir -p "../Racket.framework/Versions/$(FWVERSION)_3m"
cp "Racket.framework/Versions/$(FWVERSION)_3m/Racket" "../Racket.framework/Versions/$(FWVERSION)_3m/Racket"
cp "Racket.framework/Racket" "../Racket.framework/Versions/$(FWVERSION)_3m/Racket"
# Depending on MACLIBRKT_LINK_MODE, use Framework or statically link the framework's code:
MACLIBRKT_LINK_fw = -F. -framework Racket
@ -619,7 +619,9 @@ MACLIBRKT_LINK_static = $(MACLIBRKT_LIBS)
../racket@MMM@@OSX@: $(MZFWMMM) main.@LTO@
@MZLINKER@ -o ../racket@MMM@ @PROFFLAGS@ @LDFLAGS@ main.@LTO@ -Wl,-headerpad_max_install_names $(MACLIBRKT_LINK_@MACLIBRKT_LINK_MODE@) @LIBS@
@STRIP_SIGNATURE@ "../racket@MMM@"
/usr/bin/install_name_tool -change "Racket.framework/Versions/$(FWVERSION)_3m/Racket" "@executable_path/Racket.framework/Versions/$(FWVERSION)_3m/Racket" "../racket@MMM@"
@RESTORE_SIGNATURE@ "${srcdir}/../../mac/entitlements.plist" "../racket@MMM@"
../lib/libracket3mxxxxxxx.dll: ../libracket3m.@LIBSFX@ ../mzsj86g.o $(LIBRKTIO)
mkdir -p ../lib

View File

@ -90,7 +90,7 @@ LINKRESULT_wx_mac = GRacket@CGC@.app/Contents/MacOS/GRacket@CGC@
LINKRESULT = $(LINKRESULT_@WXVARIANT@)
SETUP_BOOT = -O "info@compiler/cm" -l- setup @BOOT_MODE@ $(srcdir)/../../setup-go.rkt ../../compiled
SETUP_BOOT_COLLECTS_PATH = $(SETUP_BOOT) collpath.inc collpath.d "$(srcdir)/../../start/collects-path.rkt"
SETUP_BOOT_COLLECTS_PATH = $(SETUP_BOOT) collpath.inc collpath.d "$(srcdir)/../../start/collects-path.rkt" "${srcdir}/../.."
# Incremented each time the binaries change:
DOWNLOAD_BIN_VERSION = 1

View File

@ -30,6 +30,9 @@ WINDRES = @WINDRES@
STRIP_DEBUG = @STRIP_DEBUG@
STRIP_LIB_DEBUG = @STRIP_LIB_DEBUG@
STRIP_SIGNATURE = @STRIP_SIGNATURE@
RESTORE_SIGNATURE = @RESTORE_SIGNATURE@ "${srcdir}/../../mac/entitlements.plist"
ICP=@ICP@
ICP_LIB=@ICP_LIB@
@ -68,6 +71,8 @@ ALLDIRINFO = "$(DESTDIR)$(bindir)" \
"$(DESTDIR)$(libpltdir)" \
"$(DESTDIR)$(includepltdir)"
START_COLLECTS_PATH = "$(srcdir)/../../start/collects-path.rkt" "${srcdir}/../.."
# Defines FWVERSION:
mainsrcdir = @srcdir@/../..
@INCLUDEDEP@ @srcdir@/../../version/version.mak
@ -240,7 +245,9 @@ racketcs@OSX@: main.o $(RKTFW)
$(MAKE) raw_racketcs
$(MAKE) adjust-framework-boot-compress
$(MAKE) mac-embed-boot-@MACLIBRKT_LINK_MODE@ EMBED_DEST=racketcs
$(STRIP_SIGNATURE) racketcs
/usr/bin/install_name_tool -change "Racket.framework/Versions/$(FWVERSION)_CS/Racket" "@executable_path/Racket.framework/Versions/$(FWVERSION)_CS/Racket" racketcs
$(RESTORE_SIGNATURE) racketcs
raw_racketcs@OSX@:
ln -s racketcs raw_racketcs
@ -253,7 +260,9 @@ gracketcs@OSX@:
$(GRACKET_BIN): grmain.o $(RKTFW) $(GRAPPSKEL)
$(CC) $(CFLAGS) -o $(GRACKET_BIN) grmain.o $(MACLIBRKT_LINK_@MACLIBRKT_LINK_MODE@)
$(MAKE) mac-embed-boot-@MACLIBRKT_LINK_MODE@ EMBED_DEST=$(GRACKET_BIN)
$(STRIP_SIGNATURE) $(GRACKET_BIN)
/usr/bin/install_name_tool -change "Racket.framework/Versions/$(FWVERSION)_CS/Racket" "@executable_path/../../../Racket.framework/Versions/$(FWVERSION)_CS/Racket" $(GRACKET_BIN)
$(RESTORE_SIGNATURE) $(GRACKET_BIN)
$(GRAPPSKEL): $(srcdir)/../../mac/osx_appl.rkt $(srcdir)/../../version/racket_version.h $(srcdir)/../../mac/icon/GRacket.icns
$(BOOTSTRAP_RACKET) $(srcdir)/../../mac/osx_appl.rkt $(srcdir)/../.. "CS"
@ -468,11 +477,15 @@ common-install:
rm -f "$(DESTDIR)$(libpltdir)/starter"
rm -f "$(DESTDIR)$(libpltdir)/starter-sh"
$(ICP) racketcs "$(DESTDIR)$(bindir)/racket$(CS_INSTALLED)"
$(STRIP_SIGNATURE) "$(DESTDIR)$(bindir)/racket$(CS_INSTALLED)"
$(STRIP_DEBUG) "$(DESTDIR)$(bindir)/racket$(CS_INSTALLED)"
$(ICP) starter "$(DESTDIR)$(libpltdir)/starter"
$(STRIP_DEBUG) "$(DESTDIR)$(libpltdir)/starter"
$(RESTORE_SIGNATURE) "$(DESTDIR)$(bindir)/racket$(CS_INSTALLED)"
$(ICP) $(srcdir)/../../start/starter-sh "$(DESTDIR)$(libpltdir)/starter-sh"
$(BOOTSTRAP_RACKET) "$(srcdir)/../../start/collects-path.rkt" "$(DESTDIR)$(libpltdir)/starter" $(DESTDIR)@COLLECTS_PATH@ $(DESTDIR)@CONFIG_PATH@
$(ICP) starter "$(DESTDIR)$(libpltdir)/starter"
$(STRIP_SIGNATURE) "$(DESTDIR)$(libpltdir)/starter"
$(STRIP_DEBUG) "$(DESTDIR)$(libpltdir)/starter"
$(BOOTSTRAP_RACKET) $(START_COLLECTS_PATH) "$(DESTDIR)$(libpltdir)/starter" $(DESTDIR)@COLLECTS_PATH@ $(DESTDIR)@CONFIG_PATH@
$(RESTORE_SIGNATURE) "$(DESTDIR)$(libpltdir)/starter"
$(MAKE) system-install
$(MAKE) include-install
$(MAKE) common-@INSTALL_LIBS_ENABLE@-libs
@ -498,8 +511,12 @@ unix-install:
$(MAKE) common-install
rm -f "$(DESTDIR)$(libpltdir)/gracket$(CS_INSTALLED)"
$(ICP) gracketcs "$(DESTDIR)$(libpltdir)/gracket$(CS_INSTALLED)"
$(BOOTSTRAP_RACKET) "$(srcdir)/../../start/collects-path.rkt" "$(DESTDIR)$(bindir)/racket$(CS_INSTALLED)" $(DESTDIR)@COLLECTS_PATH@ $(DESTDIR)@CONFIG_PATH@
$(BOOTSTRAP_RACKET) "$(srcdir)/../../start/collects-path.rkt" "$(DESTDIR)$(libpltdir)/gracket$(CS_INSTALLED)" $(DESTDIR)@COLLECTS_PATH@ $(DESTDIR)@CONFIG_PATH@
$(STRIP_SIGNATURE) "$(DESTDIR)$(bindir)/racket$(CS_INSTALLED)"
$(STRIP_SIGNATURE) "$(DESTDIR)$(libpltdir)/gracket$(CS_INSTALLED)"
$(BOOTSTRAP_RACKET) $(START_COLLECTS_PATH) "$(DESTDIR)$(bindir)/racket$(CS_INSTALLED)" $(DESTDIR)@COLLECTS_PATH@ $(DESTDIR)@CONFIG_PATH@
$(BOOTSTRAP_RACKET) $(START_COLLECTS_PATH) "$(DESTDIR)$(libpltdir)/gracket$(CS_INSTALLED)" $(DESTDIR)@COLLECTS_PATH@ $(DESTDIR)@CONFIG_PATH@
$(RESTORE_SIGNATURE) "$(DESTDIR)$(bindir)/racket$(CS_INSTALLED)"
$(RESTORE_SIGNATURE) "$(DESTDIR)$(libpltdir)/gracket$(CS_INSTALLED)"
$(MAKE) unix-@INSTALL_LIBS_ENABLE@-libs
unix-install-cross:
@ -535,18 +552,24 @@ macos-install:
cp $(RKTFWDIR)/boot/petite.boot $(DESTDIR)$(RKTFWDEST)/Versions/$(FWVERSION)_CS/boot/
cp $(RKTFWDIR)/boot/scheme.boot $(DESTDIR)$(RKTFWDEST)/Versions/$(FWVERSION)_CS/boot/
cp $(RKTFWDIR)/boot/racket.boot $(DESTDIR)$(RKTFWDEST)/Versions/$(FWVERSION)_CS/boot/
$(BOOTSTRAP_RACKET) "$(srcdir)/../../start/collects-path.rkt" "$(DESTDIR)$(bindir)/racket$(CS_INSTALLED)" $(DESTDIR)@COLLECTS_PATH@ $(DESTDIR)@CONFIG_PATH@
$(STRIP_SIGNATURE) "$(DESTDIR)$(bindir)/racket$(CS_INSTALLED)"
$(BOOTSTRAP_RACKET) $(START_COLLECTS_PATH) "$(DESTDIR)$(bindir)/racket$(CS_INSTALLED)" $(DESTDIR)@COLLECTS_PATH@ $(DESTDIR)@CONFIG_PATH@
/usr/bin/install_name_tool -change "@executable_path/Racket.framework/Versions/$(FWVERSION)_CS/Racket" "@FRAMEWORK_PREFIX@Racket.framework/Versions/$(FWVERSION)_CS/Racket" $(DESTDIR)"$(bindir)/racket$(CS_INSTALLED)"
$(RESTORE_SIGNATURE) "$(DESTDIR)$(bindir)/racket$(CS_INSTALLED)"
$(MAKE) macos-install-gracket CS_GR_INSTALLED="`echo $(CS_INSTALLED) | tr a-z A-Z`"
$(MAKE) macos-@INSTALL_LIBS_ENABLE@-libs
GRACKET_INSTALLED = $(DESTDIR)"$(libpltdir)/GRacket$(CS_GR_INSTALLED).app/Contents/MacOS/GRacket$(CS_GR_INSTALLED)"
macos-install-gracket:
/usr/bin/install_name_tool -change "@executable_path/Racket.framework/Versions/$(FWVERSION)_CS/Racket" "@FRAMEWORK_PREFIX@Racket.framework/Versions/$(FWVERSION)_CS/Racket" $(DESTDIR)"$(bindir)/racket$(CS_INSTALLED)"
rm -rf $(DESTDIR)"$(libpltdir)/GRacket$(CS_GR_INSTALLED).app"
$(ICP) -r "GRacketCS.app" $(DESTDIR)"$(libpltdir)/GRacket$(CS_GR_INSTALLED).app"
$(BOOTSTRAP_RACKET) "$(srcdir)/../../mac/rename-app.rkt" $(DESTDIR)"$(libpltdir)/GRacket$(CS_GR_INSTALLED).app" "GRacketCS" "GRacket$(CS_GR_INSTALLED)" no-up
/usr/bin/install_name_tool -change "@executable_path/../../../../bc/Racket.framework/Versions/$(FWVERSION)_CS/Racket" "@FRAMEWORK_PREFIX@Racket.framework/Versions/$(FWVERSION)_CS/Racket" $(DESTDIR)"$(libpltdir)/GRacket$(CS_GR_INSTALLED).app/Contents/MacOS/GRacket$(CS_GR_INSTALLED)"
$(BOOTSTRAP_RACKET) "$(srcdir)/../../start/collects-path.rkt" $(DESTDIR)"$(libpltdir)/GRacket$(CS_GR_INSTALLED).app/Contents/MacOS/GRacket$(CS_GR_INSTALLED)" ../../../../collects ../../../../etc
$(STRIP_DEBUG) $(DESTDIR)"$(libpltdir)/GRacket$(CS_GR_INSTALLED).app/Contents/MacOS/GRacket$(CS_GR_INSTALLED)"
/usr/bin/install_name_tool -change "@executable_path/../../../../bc/Racket.framework/Versions/$(FWVERSION)_CS/Racket" "@FRAMEWORK_PREFIX@Racket.framework/Versions/$(FWVERSION)_CS/Racket" $(GRACKET_INSTALLED)
$(STRIP_SIGNATURE) $(GRACKET_INSTALLED)
$(BOOTSTRAP_RACKET) $(START_COLLECTS_PATH) $(GRACKET_INSTALLED) ../../../../collects ../../../../etc
$(STRIP_DEBUG) $(GRACKET_INSTALLED)
$(RESTORE_SIGNATURE) $(GRACKET_INSTALLED)
rm -rf $(DESTDIR)"$(libpltdir)/Starter.app"
$(ICP) -r Starter.app $(DESTDIR)"$(libpltdir)/."

View File

@ -668,6 +668,8 @@ RKTL_PRE
INCLUDEDEP
POST_LINKER
RKTLINKER
RESTORE_SIGNATURE
STRIP_SIGNATURE
STRIP_LIB_DEBUG
STRIP_DEBUG
ICP_LIB
@ -2685,6 +2687,9 @@ strip_debug_flags=""
enable_strip_by_default=yes
strip_needs_dash_s=no
STRIP_SIGNATURE=":"
RESTORE_SIGNATURE=":"
# Check whether --enable-ubsan was given.
if test "${enable_ubsan+set}" = set; then :
enableval=$enable_ubsan;
@ -4762,6 +4767,24 @@ $as_echo "$set_strip_lib" >&6; }
fi
fi
case "$host_os" in
darwin*)
case "$host_cpu" in
aarch64)
STRIP_SIGNATURE="codesign --remove-signature"
RESTORE_SIGNATURE="codesign -s - --entitlements"
;;
*)
# Check whether `codesign` can remove signatures
touch sig-test-file
if `codesign --remove-signature sig-test-file > /dev/null 2>&1` ; then
STRIP_SIGNATURE="codesign --remove-signature"
fi
rm sig-test-file
;;
esac
esac
############## natipkg ################
@ -5652,6 +5675,8 @@ SCHEME_CROSS_CONFIG_ARGS="--machine=${TARGET_MACH} --disable-x11 ${cs_auto_flags

View File

@ -731,6 +731,8 @@ AC_SUBST(ICP)
AC_SUBST(ICP_LIB)
AC_SUBST(STRIP_DEBUG)
AC_SUBST(STRIP_LIB_DEBUG)
AC_SUBST(STRIP_SIGNATURE)
AC_SUBST(RESTORE_SIGNATURE)
AC_SUBST(RKTLINKER)
AC_SUBST(POST_LINKER)
AC_SUBST(INCLUDEDEP)

View File

@ -2,7 +2,7 @@
# Attempt to guess a canonical system name.
# Copyright 1992-2014 Free Software Foundation, Inc.
timestamp='2014-11-04'
timestamp='2020-12-03'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@ -1281,6 +1281,8 @@ EOF
# processor. This is not true of the ARM version of Darwin
# that Apple uses in portable devices.
UNAME_PROCESSOR=x86_64
elif test "$UNAME_PROCESSOR" = arm ; then
UNAME_PROCESSOR=aarch64
fi
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
exit ;;

View File

@ -2,7 +2,7 @@
# Configuration validation subroutine script.
# Copyright 1992-2014 Free Software Foundation, Inc.
timestamp='2014-12-03'
timestamp='2020-12-03'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@ -253,7 +253,7 @@ case $basic_machine in
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
| am33_2.0 \
| arc | arceb \
| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] | arm64 \
| avr | avr32 \
| be32 | be64 \
| bfin \

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
<key>com.apple.security.inherit</key>
<true/>
<key>com.apple.security.cs.allow-dyld-environment-variables</key>
<true/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
</dict>
</plist>

View File

@ -6,20 +6,7 @@
;; the embedded path to "collects" and "lib" in an executable.
(command-line
#:args (dest dir-path config-path)
;; For a Mac OS executable, first strip any signature that the
;; compiler may have added
(when (call-with-input-file*
dest
(lambda (i)
(define bstr (read-bytes 4 i))
(and (= 4 (bytes-length bstr))
(member (integer-bytes->integer bstr #f)
'(#xFeedFace #xFeedFacf)))))
(define codesign (find-executable-path "codesign"))
(when codesign
(system* codesign "--remove-signature" dest)))
#:args (srcdir dest dir-path config-path)
(define (fix-one label path-in)
(define-values (i o) (open-input-output-file dest #:exists 'update))