]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: do not mark os memory as executable on windows
authorAlex Brainman <alex.brainman@gmail.com>
Tue, 25 Jun 2013 07:20:14 +0000 (17:20 +1000)
committerAlex Brainman <alex.brainman@gmail.com>
Tue, 25 Jun 2013 07:20:14 +0000 (17:20 +1000)
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

src/pkg/runtime/mem_windows.c

index 7840daa22c379c28ccbe75023805997ea0c1e0b4..1a778b77527c1977a53129c3d77a6f93414c33fe 100644 (file)
@@ -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");
 }