diff --git a/src/mzscheme/gc/misc.c b/src/mzscheme/gc/misc.c index a7f91873c0..ec2e040e8a 100644 --- a/src/mzscheme/gc/misc.c +++ b/src/mzscheme/gc/misc.c @@ -660,7 +660,8 @@ void GC_init_inner() GC_init_linux_data_start(); # endif # if (defined(NETBSD) || defined(OPENBSD)) && defined(__ELF__) - GC_init_netbsd_elf(); + if (!GC_no_dls) /* PLTSCHEME: hack */ + GC_init_netbsd_elf(); # endif # if defined(GC_PTHREADS) || defined(GC_SOLARIS_THREADS) \ || defined(GC_WIN32_THREADS) diff --git a/src/mzscheme/sconfig.h b/src/mzscheme/sconfig.h index 990da1cf60..18e32225c7 100644 --- a/src/mzscheme/sconfig.h +++ b/src/mzscheme/sconfig.h @@ -136,6 +136,7 @@ #ifdef i386 # define MZ_USE_JIT_I386 +# define MZ_JIT_USE_MPROTECT #endif # define FLAGS_ALREADY_SET @@ -244,9 +245,11 @@ #if defined(i386) # define MZ_USE_JIT_I386 +# define MZ_JIT_USE_MPROTECT #endif #if defined(__x86_64__) # define MZ_USE_JIT_X86_64 +# define MZ_JIT_USE_MPROTECT #endif #if defined(powerpc) # define MZ_USE_JIT_PPC @@ -285,6 +288,7 @@ #if defined(i386) # define MZ_USE_JIT_I386 +# define MZ_JIT_USE_MPROTECT #endif #if defined(powerpc) # define MZ_USE_JIT_PPC @@ -324,6 +328,7 @@ # define USE_TM_GMTOFF_FIELD # define MZ_USE_JIT_I386 +# define MZ_JIT_USE_MPROTECT # define FLAGS_ALREADY_SET @@ -361,6 +366,7 @@ # define REGISTER_POOR_MACHINE # define MZ_USE_JIT_I386 +# define MZ_JIT_USE_MPROTECT # define FLAGS_ALREADY_SET @@ -1330,8 +1336,13 @@ /* MZ_USE_JIT_I386 enables the JIT for x86 */ + /* MZ_USE_JIT_X86_65 enables the JIT for x86_64 */ + /* MZ_USE_JIT_PPC enables the JIT for PowerPC */ + /* MZ_JIT_USE_MPROTECT uses mprotect on x86 platforms to make code + pages executable */ + /***********************/ /* Heap Images */ /***********************/ diff --git a/src/mzscheme/src/lightning/i386/funcs.h b/src/mzscheme/src/lightning/i386/funcs.h index ce792eadba..aad4f3494a 100644 --- a/src/mzscheme/src/lightning/i386/funcs.h +++ b/src/mzscheme/src/lightning/i386/funcs.h @@ -34,7 +34,7 @@ #ifndef __lightning_funcs_h #define __lightning_funcs_h -#ifdef __linux__ +#ifdef MZ_JIT_USE_MPROTECT #include #include #endif @@ -51,7 +51,7 @@ jit_flush_code(void *dest, void *end) execution of the data and stack segment are becoming more and more common (Fedora, for example), so we implement our jit_flush_code as an mprotect. */ -#ifdef __linux__ +#ifdef MZ_JIT_USE_MPROTECT static unsigned long prev_page = 0, prev_length = 0; long page, length; #ifdef PAGESIZE