mirror of
https://github.com/golang/go
synced 2024-11-26 18:06:55 -07:00
runtime: do not mark os memory as executable on windows
Resubmit 3c2cddfbdaec now that windows callbacks are not generated during runtime. Fixes #5494 R=golang-dev, minux.ma, rsc CC=golang-dev https://golang.org/cl/10487043
This commit is contained in:
parent
05cf6fe0c1
commit
3d513faa6f
@ -13,7 +13,7 @@ enum {
|
||||
MEM_RESERVE = 0x2000,
|
||||
MEM_RELEASE = 0x8000,
|
||||
|
||||
PAGE_EXECUTE_READWRITE = 0x40,
|
||||
PAGE_READWRITE = 0x0004,
|
||||
};
|
||||
|
||||
#pragma dynimport runtime·VirtualAlloc VirtualAlloc "kernel32.dll"
|
||||
@ -25,7 +25,7 @@ void*
|
||||
runtime·SysAlloc(uintptr 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
|
||||
@ -51,12 +51,12 @@ runtime·SysReserve(void *v, uintptr n)
|
||||
{
|
||||
// v is just a hint.
|
||||
// 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)
|
||||
return v;
|
||||
|
||||
// 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
|
||||
@ -65,7 +65,7 @@ runtime·SysMap(void *v, uintptr n)
|
||||
void *p;
|
||||
|
||||
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)
|
||||
runtime·throw("runtime: cannot map pages in arena address space");
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user