diff --git a/BasiliskII/src/Unix/Darwin/lowmem.c b/BasiliskII/src/Unix/Darwin/lowmem.c index 8db1f74e..297f52f7 100644 --- a/BasiliskII/src/Unix/Darwin/lowmem.c +++ b/BasiliskII/src/Unix/Darwin/lowmem.c @@ -72,6 +72,11 @@ void pagezero_32(struct mach_header *machhead) /* change the permissions */ sc_cmd->maxprot = target_uint32(VM_PROT_ALL); sc_cmd->initprot = target_uint32(VM_PROT_ALL); + +#ifdef MH_PIE + /* disable pie in header */ + machhead->flags = target_uint32(target_uint32(machhead->flags) & ~MH_PIE); +#endif } #if defined(MH_MAGIC_64) diff --git a/SheepShaver/src/Unix/configure.ac b/SheepShaver/src/Unix/configure.ac index 0e279a30..11e4c10a 100644 --- a/SheepShaver/src/Unix/configure.ac +++ b/SheepShaver/src/Unix/configure.ac @@ -936,6 +936,18 @@ AC_TRANSLATE_DEFINE(HAVE_MMAP_VM, $have_mmap_vm, fi dnl HAVE_MMAP_VM +dnl Check if we can disable position-independent code +AC_CACHE_CHECK([how to disable position-independent code], + ac_cv_no_pie, [ + ac_cv_no_pie='-Wl,-no_pie' + saved_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $ac_cv_no_pie" + AC_TRY_LINK(,,,[ac_cv_no_pie="cannot"]) + if [[ "$ac_cv_no_pie" = "cannot" ]]; then + LDFLAGS="$saved_LDFLAGS" + fi +]) + dnl Check if we can modify the __PAGEZERO segment for use as Low Memory AC_CACHE_CHECK([whether __PAGEZERO can be Low Memory area 0x0000-0x3000], ac_cv_pagezero_hack, [