diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2015-09-06 14:32:30 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2015-09-06 14:32:30 +0000 |
commit | 027f1c9655391dcb2b0117f931f720211ac933db (patch) | |
tree | 94980f450aa3daec3e1fec217374704ad62cfe45 /source/Expression/IRMemoryMap.cpp | |
parent | 5e95aa85bb660d45e9905ef1d7180b2678280660 (diff) |
Vendor import of (stripped) lldb trunk r242221:vendor/lldb/lldb-trunk-r242221
Notes
Notes:
svn path=/vendor/lldb/dist/; revision=287503
svn path=/vendor/lldb/lldb-trunk-r242221/; revision=287504; tag=vendor/lldb/lldb-trunk-r242221
Diffstat (limited to 'source/Expression/IRMemoryMap.cpp')
-rw-r--r-- | source/Expression/IRMemoryMap.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/source/Expression/IRMemoryMap.cpp b/source/Expression/IRMemoryMap.cpp index a4fe7a968379..4733b16d5f1c 100644 --- a/source/Expression/IRMemoryMap.cpp +++ b/source/Expression/IRMemoryMap.cpp @@ -418,6 +418,32 @@ IRMemoryMap::Free (lldb::addr_t process_address, Error &error) m_allocations.erase(iter); } +bool +IRMemoryMap::GetAllocSize(lldb::addr_t address, size_t &size) +{ + AllocationMap::iterator iter = FindAllocation(address, size); + if (iter == m_allocations.end()) + return false; + + Allocation &al = iter->second; + + if (address > (al.m_process_start + al.m_size)) + { + size = 0; + return false; + } + + if (address > al.m_process_start) + { + int dif = address - al.m_process_start; + size = al.m_size - dif; + return true; + } + + size = al.m_size; + return true; +} + void IRMemoryMap::WriteMemory (lldb::addr_t process_address, const uint8_t *bytes, size_t size, Error &error) { |