summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.cpp
diff options
context:
space:
mode:
authorGreg Clayton <gclayton@apple.com>2013-05-03 01:05:04 +0000
committerGreg Clayton <gclayton@apple.com>2013-05-03 01:05:04 +0000
commita80ea12703f222f0983d04f828ec07ff88056f46 (patch)
tree7e0727945e1041c67988aa03928ac666e523e853 /lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.cpp
parent1c76f155b1e9869a5e6dd15d51a49034ebe1c84f (diff)
downloadbcm5719-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.cpp14
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())
{
OpenPOWER on IntegriCloud