diff options
Diffstat (limited to 'libgo/runtime/mem.c')
-rw-r--r-- | libgo/runtime/mem.c | 8 |
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"); } |