summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVM.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/Plugins/Disassembler/llvm/DisassemblerLLVM.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/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp')
-rw-r--r--lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp22
1 files changed, 13 insertions, 9 deletions
diff --git a/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp b/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp
index 945ef871d68..ba98cb5a450 100644
--- a/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp
+++ b/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp
@@ -140,14 +140,18 @@ DisassemblerLLVM::Instruction::Dump
int currentOpIndex = -1;
lldb_private::Process *process = exe_ctx.process;
- addr_t base_addr = LLDB_INVALID_ADDRESS;
- if (process && process->IsAlive())
- base_addr = inst_addr_ptr->GetLoadAddress (process);
- if (base_addr == LLDB_INVALID_ADDRESS)
- base_addr = inst_addr_ptr->GetFileAddress ();
-
- RegisterReaderArg rra(base_addr + EDInstByteSize(m_inst), m_disassembler);
-
+ std::auto_ptr<RegisterReaderArg> rra;
+
+ if (!raw)
+ {
+ addr_t base_addr = LLDB_INVALID_ADDRESS;
+ if (process && process->IsAlive())
+ base_addr = inst_addr_ptr->GetLoadAddress (process);
+ if (base_addr == LLDB_INVALID_ADDRESS)
+ base_addr = inst_addr_ptr->GetFileAddress ();
+
+ rra.reset(new RegisterReaderArg(base_addr + EDInstByteSize(m_inst), m_disassembler));
+ }
bool printTokenized = false;
@@ -228,7 +232,7 @@ DisassemblerLLVM::Instruction::Dump
{
uint64_t operand_value;
- if (!EDEvaluateOperand(&operand_value, operand, IPRegisterReader, &rra))
+ if (!EDEvaluateOperand(&operand_value, operand, IPRegisterReader, rra.get()))
{
if (EDInstIsBranch(m_inst))
{
OpenPOWER on IntegriCloud