Add Emulate and DumpEmulation to Instruction class.
Move InstructionLLVM out of DisassemblerLLVM class.
Add instruction emulation function calls to SBInstruction and SBInstructionList APIs.
git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@128956 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp b/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp
index 74d4575..2855786 100644
--- a/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp
+++ b/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp
@@ -74,15 +74,15 @@
return -1;
}
-DisassemblerLLVM::InstructionLLVM::InstructionLLVM (const Address &addr,
- AddressClass addr_class,
- EDDisassemblerRef disassembler) :
+InstructionLLVM::InstructionLLVM (const Address &addr,
+ AddressClass addr_class,
+ EDDisassemblerRef disassembler) :
Instruction (addr, addr_class),
m_disassembler (disassembler)
{
}
-DisassemblerLLVM::InstructionLLVM::~InstructionLLVM()
+InstructionLLVM::~InstructionLLVM()
{
}
@@ -98,7 +98,7 @@
}
void
-DisassemblerLLVM::InstructionLLVM::Dump
+InstructionLLVM::Dump
(
Stream *s,
uint32_t max_opcode_byte_size,
@@ -332,15 +332,15 @@
}
bool
-DisassemblerLLVM::InstructionLLVM::DoesBranch() const
+InstructionLLVM::DoesBranch() const
{
return EDInstIsBranch(m_inst);
}
size_t
-DisassemblerLLVM::InstructionLLVM::Decode (const Disassembler &disassembler,
- const lldb_private::DataExtractor &data,
- uint32_t data_offset)
+InstructionLLVM::Decode (const Disassembler &disassembler,
+ const lldb_private::DataExtractor &data,
+ uint32_t data_offset)
{
if (EDCreateInsts(&m_inst, 1, m_disassembler, DataExtractorByteReader, data_offset, (void*)(&data)))
{
diff --git a/source/Plugins/Disassembler/llvm/DisassemblerLLVM.h b/source/Plugins/Disassembler/llvm/DisassemblerLLVM.h
index 8408d70..69998d9 100644
--- a/source/Plugins/Disassembler/llvm/DisassemblerLLVM.h
+++ b/source/Plugins/Disassembler/llvm/DisassemblerLLVM.h
@@ -16,40 +16,41 @@
#include "lldb/Core/Disassembler.h"
#include "lldb/Host/Mutex.h"
+class InstructionLLVM : public lldb_private::Instruction
+{
+public:
+ InstructionLLVM (const lldb_private::Address &addr,
+ lldb_private::AddressClass addr_class,
+ EDDisassemblerRef disassembler);
+
+ virtual
+ ~InstructionLLVM();
+
+ virtual void
+ Dump (lldb_private::Stream *s,
+ uint32_t max_opcode_byte_size,
+ bool show_address,
+ bool show_bytes,
+ const lldb_private::ExecutionContext* exe_ctx,
+ bool raw);
+
+ virtual bool
+ DoesBranch () const;
+
+ virtual size_t
+ Decode (const lldb_private::Disassembler &disassembler,
+ const lldb_private::DataExtractor &data,
+ uint32_t data_offset);
+
+protected:
+ EDDisassemblerRef m_disassembler;
+ EDInstRef m_inst;
+};
+
+
class DisassemblerLLVM : public lldb_private::Disassembler
{
public:
- class InstructionLLVM : public lldb_private::Instruction
- {
- public:
- InstructionLLVM (const lldb_private::Address &addr,
- lldb_private::AddressClass addr_class,
- EDDisassemblerRef disassembler);
-
- virtual
- ~InstructionLLVM();
-
- virtual void
- Dump (lldb_private::Stream *s,
- uint32_t max_opcode_byte_size,
- bool show_address,
- bool show_bytes,
- const lldb_private::ExecutionContext* exe_ctx,
- bool raw);
-
- virtual bool
- DoesBranch () const;
-
- virtual size_t
- Decode (const Disassembler &disassembler,
- const lldb_private::DataExtractor &data,
- uint32_t data_offset);
-
- protected:
- EDDisassemblerRef m_disassembler;
- EDInstRef m_inst;
- };
-
//------------------------------------------------------------------
// Static Functions
//------------------------------------------------------------------
diff --git a/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp b/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp
index dbe3212..04abfbd 100644
--- a/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp
+++ b/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp
@@ -13056,7 +13056,8 @@
}
// Just for now, for testing purposes.
- //fprintf (stdout, "\nEvaluateInstruction, opcode (0x%x), found = '%s'\n", m_opcode.GetOpcode32(), opcode_data->name);
+ if (m_baton == NULL)
+ fprintf (stdout, "\nEvaluateInstruction, opcode (0x%x), found = '%s'\n", m_opcode.GetOpcode32(), opcode_data->name);
return (this->*opcode_data->callback) (m_opcode.GetOpcode32(), opcode_data->encoding); // Call the Emulate... function.
}