Don't use mprotect on Cygwin as virtual memory is managed directly via WinAPI calls.
authorvegorov@chromium.org <vegorov@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Tue, 2 Aug 2011 16:16:32 +0000 (16:16 +0000)
committervegorov@chromium.org <vegorov@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Tue, 2 Aug 2011 16:16:32 +0000 (16:16 +0000)
Patch by Bert Belder.

Review URL: http://codereview.chromium.org/7549009

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8793 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

src/platform-cygwin.cc
src/platform-posix.cc

index 5f283c3..85a5e4f 100644 (file)
@@ -166,6 +166,18 @@ void OS::Free(void* address, const size_t size) {
 }
 
 
+void OS::ProtectCode(void* address, const size_t size) {
+  DWORD old_protect;
+  VirtualProtect(address, size, PAGE_EXECUTE_READ, &old_protect);
+}
+
+
+void OS::Guard(void* address, const size_t size) {
+  DWORD oldprotect;
+  VirtualProtect(address, size, PAGE_READONLY | PAGE_GUARD, &oldprotect);
+}
+
+
 void OS::Sleep(int milliseconds) {
   unsigned int ms = static_cast<unsigned int>(milliseconds);
   usleep(1000 * ms);
index 1ea53c8..52cf029 100644 (file)
@@ -70,6 +70,7 @@ intptr_t OS::MaxVirtualMemory() {
 }
 
 
+#ifndef __CYGWIN__
 // Get rid of writable permission on code allocations.
 void OS::ProtectCode(void* address, const size_t size) {
   mprotect(address, size, PROT_READ | PROT_EXEC);
@@ -80,6 +81,7 @@ void OS::ProtectCode(void* address, const size_t size) {
 void OS::Guard(void* address, const size_t size) {
   mprotect(address, size, PROT_NONE);
 }
+#endif  // __CYGWIN__
 
 
 // ----------------------------------------------------------------------------