diff options
author | Sean Callanan <scallanan@apple.com> | 2010-07-23 02:19:15 +0000 |
---|---|---|
committer | Sean Callanan <scallanan@apple.com> | 2010-07-23 02:19:15 +0000 |
commit | 6dde30e964aa65c5173c00dd72ae70c31d052ab6 (patch) | |
tree | 9633c6c7906bae41ac3cd340d8e4892871ada96f /lldb/source/Expression/RecordingMemoryManager.cpp | |
parent | 318e40360d7778c3cd2a4aa737bef9a08e62080e (diff) | |
download | bcm5719-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.cpp | 19 |
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) { |