mirror of
https://github.com/golang/go
synced 2024-11-26 11:38:01 -07:00
runtime: do not mark os memory as executable on windows
R=golang-dev, bradfitz, khr CC=golang-dev https://golang.org/cl/9235046
This commit is contained in:
parent
50ba6e13b4
commit
28f74608b5
@ -13,6 +13,7 @@ enum {
|
|||||||
MEM_RESERVE = 0x2000,
|
MEM_RESERVE = 0x2000,
|
||||||
MEM_RELEASE = 0x8000,
|
MEM_RELEASE = 0x8000,
|
||||||
|
|
||||||
|
PAGE_READWRITE = 0x0004,
|
||||||
PAGE_EXECUTE_READWRITE = 0x40,
|
PAGE_EXECUTE_READWRITE = 0x40,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -25,7 +26,7 @@ void*
|
|||||||
runtime·SysAlloc(uintptr n)
|
runtime·SysAlloc(uintptr n)
|
||||||
{
|
{
|
||||||
mstats.sys += n;
|
mstats.sys += n;
|
||||||
return runtime·stdcall(runtime·VirtualAlloc, 4, nil, n, (uintptr)(MEM_COMMIT|MEM_RESERVE), (uintptr)PAGE_EXECUTE_READWRITE);
|
return runtime·stdcall(runtime·VirtualAlloc, 4, nil, n, (uintptr)(MEM_COMMIT|MEM_RESERVE), (uintptr)PAGE_READWRITE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -51,12 +52,12 @@ runtime·SysReserve(void *v, uintptr n)
|
|||||||
{
|
{
|
||||||
// v is just a hint.
|
// v is just a hint.
|
||||||
// First try at v.
|
// First try at v.
|
||||||
v = runtime·stdcall(runtime·VirtualAlloc, 4, v, n, (uintptr)MEM_RESERVE, (uintptr)PAGE_EXECUTE_READWRITE);
|
v = runtime·stdcall(runtime·VirtualAlloc, 4, v, n, (uintptr)MEM_RESERVE, (uintptr)PAGE_READWRITE);
|
||||||
if(v != nil)
|
if(v != nil)
|
||||||
return v;
|
return v;
|
||||||
|
|
||||||
// Next let the kernel choose the address.
|
// Next let the kernel choose the address.
|
||||||
return runtime·stdcall(runtime·VirtualAlloc, 4, nil, n, (uintptr)MEM_RESERVE, (uintptr)PAGE_EXECUTE_READWRITE);
|
return runtime·stdcall(runtime·VirtualAlloc, 4, nil, n, (uintptr)MEM_RESERVE, (uintptr)PAGE_READWRITE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -65,7 +66,7 @@ runtime·SysMap(void *v, uintptr n)
|
|||||||
void *p;
|
void *p;
|
||||||
|
|
||||||
mstats.sys += n;
|
mstats.sys += n;
|
||||||
p = runtime·stdcall(runtime·VirtualAlloc, 4, v, n, (uintptr)MEM_COMMIT, (uintptr)PAGE_EXECUTE_READWRITE);
|
p = runtime·stdcall(runtime·VirtualAlloc, 4, v, n, (uintptr)MEM_COMMIT, (uintptr)PAGE_READWRITE);
|
||||||
if(p != v)
|
if(p != v)
|
||||||
runtime·throw("runtime: cannot map pages in arena address space");
|
runtime·throw("runtime: cannot map pages in arena address space");
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user