Line 0
Link Here
|
|
|
1 |
--- src/runtime/mem_freebsd.c.orig 2017-11-22 01:33:59 UTC |
2 |
+++ src/runtime/mem_freebsd.c |
3 |
@@ -73,6 +73,11 @@ runtime·SysReserve(void *v, uintptr n, bool *reserved |
4 |
return p; |
5 |
} |
6 |
|
7 |
+enum |
8 |
+{ |
9 |
+ MAP_EXCL = 0x4000 |
10 |
+}; |
11 |
+ |
12 |
void |
13 |
runtime·SysMap(void *v, uintptr n, bool reserved, uint64 *stat) |
14 |
{ |
15 |
@@ -82,7 +87,7 @@ runtime·SysMap(void *v, uintptr n, bool reserved, uin |
16 |
|
17 |
// On 64-bit, we don't actually have v reserved, so tread carefully. |
18 |
if(!reserved) { |
19 |
- p = runtime·mmap(v, n, PROT_READ|PROT_WRITE, MAP_ANON|MAP_PRIVATE, -1, 0); |
20 |
+ p = runtime·mmap(v, n, PROT_READ|PROT_WRITE, MAP_ANON|MAP_FIXED|MAP_EXCL|MAP_PRIVATE, -1, 0); |
21 |
if(p == (void*)ENOMEM) |
22 |
runtime·throw("runtime: out of memory"); |
23 |
if(p != v) { |