diff options
author | Greg Clayton <gclayton@apple.com> | 2013-05-03 01:05:04 +0000 |
---|---|---|
committer | Greg Clayton <gclayton@apple.com> | 2013-05-03 01:05:04 +0000 |
commit | a80ea12703f222f0983d04f828ec07ff88056f46 (patch) | |
tree | 7e0727945e1041c67988aa03928ac666e523e853 /lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.cpp | |
parent | 1c76f155b1e9869a5e6dd15d51a49034ebe1c84f (diff) | |
download | bcm5719-llvm-a80ea12703f222f0983d04f828ec07ff88056f46.tar.gz bcm5719-llvm-a80ea12703f222f0983d04f828ec07ff88056f46.zip |
<rdar://problem/13751683>
Make sure to handle all thumb variants correctly.
llvm-svn: 180984
Diffstat (limited to 'lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.cpp')
-rw-r--r-- | lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.cpp b/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.cpp index 8f0a7e08aa6..b3647044b27 100644 --- a/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.cpp +++ b/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.cpp @@ -615,9 +615,19 @@ DisassemblerLLVMC::DisassemblerLLVMC (const ArchSpec &arch, const char *flavor_s if (arch.GetTriple().getArch() == llvm::Triple::arm) { ArchSpec thumb_arch(arch); - thumb_arch.GetTriple().setArchName(llvm::StringRef("thumbv7")); + std::string thumb_arch_name (thumb_arch.GetTriple().getArchName().str()); + // Replace "arm" with "thumb" so we get all thumb variants correct + if (thumb_arch_name.size() > 3) + { + thumb_arch_name.erase(0,3); + thumb_arch_name.insert(0, "thumb"); + } + else + { + thumb_arch_name = "thumbv7"; + } + thumb_arch.GetTriple().setArchName(llvm::StringRef(thumb_arch_name.c_str())); std::string thumb_triple(thumb_arch.GetTriple().getTriple()); - m_alternate_disasm_ap.reset(new LLVMCDisassembler(thumb_triple.c_str(), flavor, *this)); if (!m_alternate_disasm_ap->IsValid()) { |