summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp')
-rw-r--r--lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp22
1 files changed, 19 insertions, 3 deletions
diff --git a/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp b/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp
index 4f71a1b339f..5ddcd727bc0 100644
--- a/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp
+++ b/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp
@@ -76,9 +76,11 @@ static int IPRegisterReader(uint64_t *value, unsigned regID, void* arg)
InstructionLLVM::InstructionLLVM (const Address &addr,
AddressClass addr_class,
- EDDisassemblerRef disassembler) :
+ EDDisassemblerRef disassembler,
+ bool force_raw) :
Instruction (addr, addr_class),
- m_disassembler (disassembler)
+ m_disassembler (disassembler),
+ m_force_raw (force_raw)
{
}
@@ -153,6 +155,9 @@ InstructionLLVM::Dump
int numTokens = -1;
if (!raw)
+ raw = m_force_raw;
+
+ if (!raw)
numTokens = EDNumTokens(m_inst);
int currentOpIndex = -1;
@@ -471,9 +476,20 @@ DisassemblerLLVM::DecodeInstructions
if (inst_address_class == eAddressClassCodeAlternateISA)
use_thumb = true;
}
+ bool force_raw = false;
+ switch (m_arch.GetMachine())
+ {
+ case llvm::Triple::arm:
+ case llvm::Triple::thumb:
+ force_raw = true;
+ break;
+ default:
+ break;
+ }
InstructionSP inst_sp (new InstructionLLVM (inst_addr,
inst_address_class,
- use_thumb ? m_disassembler_thumb : m_disassembler));
+ use_thumb ? m_disassembler_thumb : m_disassembler,
+ force_raw));
size_t inst_byte_size = inst_sp->Decode (*this, data, data_offset);
OpenPOWER on IntegriCloud