Commit be44e76b authored by wolfgang.thaller@gmx.net's avatar wolfgang.thaller@gmx.net
Browse files

Deal with non-executable memory on Darwin (only an issue on Darwin/x86 so far)

parent 742aea2b
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
#include <pthread.h> #include <pthread.h>
#endif #endif
#if defined(openbsd_HOST_OS) || defined(linux_HOST_OS) #if defined(openbsd_HOST_OS) || defined(linux_HOST_OS) || defined(darwin_HOST_OS)
#include <unistd.h> #include <unistd.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/mman.h> #include <sys/mman.h>
...@@ -352,7 +352,7 @@ stgMallocBytesRWX(int len) ...@@ -352,7 +352,7 @@ stgMallocBytesRWX(int len)
barf("mallocBytesRWX: failed to protect 0x%p; error=%lu; old protection: %lu\n", barf("mallocBytesRWX: failed to protect 0x%p; error=%lu; old protection: %lu\n",
addr, (unsigned long)GetLastError(), (unsigned long)dwOldProtect); addr, (unsigned long)GetLastError(), (unsigned long)dwOldProtect);
} }
#elif defined(openbsd_HOST_OS) || defined(linux_HOST_OS) #elif defined(openbsd_HOST_OS) || defined(linux_HOST_OS) || defined(darwin_HOST_OS)
/* malloced memory isn't executable by default on OpenBSD */ /* malloced memory isn't executable by default on OpenBSD */
my_uintptr_t pageSize = sysconf(_SC_PAGESIZE); my_uintptr_t pageSize = sysconf(_SC_PAGESIZE);
my_uintptr_t mask = ~(pageSize - 1); my_uintptr_t mask = ~(pageSize - 1);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment