summaryrefslogtreecommitdiffstats
path: root/lldb
diff options
context:
space:
mode:
authorJim Ingham <jingham@apple.com>2011-01-22 01:22:51 +0000
committerJim Ingham <jingham@apple.com>2011-01-22 01:22:51 +0000
commit50646ab3e1e2fb7b31df5d8dbaa339ad7742345f (patch)
tree397c67495c2934d0cadbb60b718966fefb44c4f7 /lldb
parente02657b181312a05c91cad59eb83cb74cd4fcd0a (diff)
downloadbcm5719-llvm-50646ab3e1e2fb7b31df5d8dbaa339ad7742345f.tar.gz
bcm5719-llvm-50646ab3e1e2fb7b31df5d8dbaa339ad7742345f.zip
Add a (currently disabled) bear trap where instead of deallocating pages, we remove all permissions.
llvm-svn: 124012
Diffstat (limited to 'lldb')
-rw-r--r--lldb/tools/debugserver/source/MacOSX/MachTask.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/lldb/tools/debugserver/source/MacOSX/MachTask.cpp b/lldb/tools/debugserver/source/MacOSX/MachTask.cpp
index 62ebac294b6..316540f9de5 100644
--- a/lldb/tools/debugserver/source/MacOSX/MachTask.cpp
+++ b/lldb/tools/debugserver/source/MacOSX/MachTask.cpp
@@ -626,7 +626,7 @@ MachTask::AllocateMemory (size_t size, uint32_t permissions)
if (err.Error() == KERN_SUCCESS)
{
// Set the protections:
- vm_prot_t mach_prot = 0;
+ vm_prot_t mach_prot = VM_PROT_NONE;
if (permissions & eMemoryPermissionsReadable)
mach_prot |= VM_PROT_READ;
if (permissions & eMemoryPermissionsWritable)
@@ -663,7 +663,14 @@ MachTask::DeallocateMemory (nub_addr_t addr)
if ((*pos).first == addr)
{
m_allocations.erase(pos);
- return ::mach_vm_deallocate (task, (*pos).first, (*pos).second) == KERN_SUCCESS;
+#define ALWAYS_ZOMBIE_ALLOCATIONS 0
+ if (ALWAYS_ZOMBIE_ALLOCATIONS || getenv ("DEBUGSERVER_ZOMBIE_ALLOCATIONS"))
+ {
+ ::mach_vm_protect (task, (*pos).first, (*pos).second, 0, VM_PROT_NONE);
+ return true;
+ }
+ else
+ return ::mach_vm_deallocate (task, (*pos).first, (*pos).second) == KERN_SUCCESS;
}
}
OpenPOWER on IntegriCloud