diff options
| author | Jim Ingham <jingham@apple.com> | 2011-01-22 01:22:51 +0000 |
|---|---|---|
| committer | Jim Ingham <jingham@apple.com> | 2011-01-22 01:22:51 +0000 |
| commit | 50646ab3e1e2fb7b31df5d8dbaa339ad7742345f (patch) | |
| tree | 397c67495c2934d0cadbb60b718966fefb44c4f7 /lldb | |
| parent | e02657b181312a05c91cad59eb83cb74cd4fcd0a (diff) | |
| download | bcm5719-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.cpp | 11 |
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; } } |

