summaryrefslogtreecommitdiffstats
path: root/lldb/source/Expression/RecordingMemoryManager.cpp
diff options
context:
space:
mode:
authorSean Callanan <scallanan@apple.com>2010-07-23 02:19:15 +0000
committerSean Callanan <scallanan@apple.com>2010-07-23 02:19:15 +0000
commit6dde30e964aa65c5173c00dd72ae70c31d052ab6 (patch)
tree9633c6c7906bae41ac3cd340d8e4892871ada96f /lldb/source/Expression/RecordingMemoryManager.cpp
parent318e40360d7778c3cd2a4aa737bef9a08e62080e (diff)
downloadbcm5719-llvm-6dde30e964aa65c5173c00dd72ae70c31d052ab6.tar.gz
bcm5719-llvm-6dde30e964aa65c5173c00dd72ae70c31d052ab6.zip
Added extensive logging of the code that is actually going
to be executed by the inferior. This required explicit support from RecordingMemoryManager for finding the address range belonging to a particular function. Also fixed a bug in DisassemblerLLVM where the disassembler assumed there was an AddressRange available even when it was NULL. llvm-svn: 109209
Diffstat (limited to 'lldb/source/Expression/RecordingMemoryManager.cpp')
-rw-r--r--lldb/source/Expression/RecordingMemoryManager.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/lldb/source/Expression/RecordingMemoryManager.cpp b/lldb/source/Expression/RecordingMemoryManager.cpp
index e1ccdbe7267..08d315de779 100644
--- a/lldb/source/Expression/RecordingMemoryManager.cpp
+++ b/lldb/source/Expression/RecordingMemoryManager.cpp
@@ -122,6 +122,25 @@ RecordingMemoryManager::GetRemoteAddressForLocal (lldb::addr_t local_address)
return LLDB_INVALID_ADDRESS;
}
+std::pair <lldb::addr_t, lldb::addr_t>
+RecordingMemoryManager::GetRemoteRangeForLocal (lldb::addr_t local_address)
+{
+ std::vector<LocalToRemoteAddressRange>::iterator pos, end = m_address_map.end();
+
+ for (pos = m_address_map.begin(); pos < end; ++pos)
+ {
+ lldb::addr_t lstart = pos->m_local_start;
+ lldb::addr_t lend = lstart + pos->m_size;
+
+ if (local_address >= lstart && local_address < lend)
+ {
+ return std::pair <lldb::addr_t, lldb::addr_t> (pos->m_remote_start, pos->m_remote_start + pos->m_size);
+ }
+ }
+
+ return std::pair <lldb::addr_t, lldb::addr_t> (0, 0);
+}
+
void
RecordingMemoryManager::AddToLocalToRemoteMap (lldb::addr_t lstart, size_t size, lldb::addr_t rstart)
{
OpenPOWER on IntegriCloud