aboutsummaryrefslogtreecommitdiff
path: root/libgo/runtime/mem.c
diff options
context:
space:
mode:
Diffstat (limited to 'libgo/runtime/mem.c')
-rw-r--r--libgo/runtime/mem.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/libgo/runtime/mem.c b/libgo/runtime/mem.c
index e606bdd..8481e95 100644
--- a/libgo/runtime/mem.c
+++ b/libgo/runtime/mem.c
@@ -78,7 +78,7 @@ runtime_SysAlloc(uintptr n)
fd = dev_zero;
#endif
- p = runtime_mmap(nil, n, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_ANON|MAP_PRIVATE, fd, 0);
+ p = runtime_mmap(nil, n, PROT_READ|PROT_WRITE, MAP_ANON|MAP_PRIVATE, fd, 0);
if (p == MAP_FAILED) {
if(errno == EACCES) {
runtime_printf("runtime: mmap: access denied\n");
@@ -169,7 +169,7 @@ runtime_SysMap(void *v, uintptr n)
// On 64-bit, we don't actually have v reserved, so tread carefully.
if(sizeof(void*) == 8 && (uintptr)v >= 0xffffffffU) {
- p = mmap_fixed(v, n, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_ANON|MAP_PRIVATE, fd, 0);
+ p = mmap_fixed(v, n, PROT_READ|PROT_WRITE, MAP_ANON|MAP_PRIVATE, fd, 0);
if(p == MAP_FAILED && errno == ENOMEM)
runtime_throw("runtime: out of memory");
if(p != v) {
@@ -179,7 +179,9 @@ runtime_SysMap(void *v, uintptr n)
return;
}
- p = runtime_mmap(v, n, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_ANON|MAP_FIXED|MAP_PRIVATE, fd, 0);
+ p = runtime_mmap(v, n, PROT_READ|PROT_WRITE, MAP_ANON|MAP_FIXED|MAP_PRIVATE, fd, 0);
+ if(p == MAP_FAILED && errno == ENOMEM)
+ runtime_throw("runtime: out of memory");
if(p != v)
runtime_throw("runtime: cannot map pages in arena address space");
}