summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/Process/Utility/EmulateInstructionARM.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Plugins/Process/Utility/EmulateInstructionARM.cpp')
-rw-r--r--lldb/source/Plugins/Process/Utility/EmulateInstructionARM.cpp39
1 files changed, 39 insertions, 0 deletions
diff --git a/lldb/source/Plugins/Process/Utility/EmulateInstructionARM.cpp b/lldb/source/Plugins/Process/Utility/EmulateInstructionARM.cpp
index 2f6f8cdd18c..4495acb95d7 100644
--- a/lldb/source/Plugins/Process/Utility/EmulateInstructionARM.cpp
+++ b/lldb/source/Plugins/Process/Utility/EmulateInstructionARM.cpp
@@ -10,6 +10,7 @@
#include "EmulateInstructionARM.h"
#include "ARMDefines.h"
#include "ARMUtils.h"
+#include "lldb/Core/ConstString.h"
using namespace lldb;
using namespace lldb_private;
@@ -881,6 +882,44 @@ static ARMOpcode g_thumb_opcodes[] =
static const size_t k_num_arm_opcodes = sizeof(g_arm_opcodes)/sizeof(ARMOpcode);
static const size_t k_num_thumb_opcodes = sizeof(g_thumb_opcodes)/sizeof(ARMOpcode);
+bool
+EmulateInstructionARM::SetTargetTriple (const ConstString &triple)
+{
+ m_arm_isa = 0;
+ const char *triple_cstr = triple.GetCString();
+ if (triple_cstr)
+ {
+ const char *dash = ::strchr (triple_cstr, '-');
+ if (dash)
+ {
+ std::string arch (triple_cstr, dash);
+ const char *arch_cstr = arch.c_str();
+ if (strcasecmp(arch_cstr, "armv4t") == 0)
+ m_arm_isa = ARMv4T;
+ else if (strcasecmp(arch_cstr, "armv4") == 0)
+ m_arm_isa = ARMv4;
+ else if (strcasecmp(arch_cstr, "armv5tej") == 0)
+ m_arm_isa = ARMv5TEJ;
+ else if (strcasecmp(arch_cstr, "armv5te") == 0)
+ m_arm_isa = ARMv5TE;
+ else if (strcasecmp(arch_cstr, "armv5t") == 0)
+ m_arm_isa = ARMv5T;
+ else if (strcasecmp(arch_cstr, "armv6k") == 0)
+ m_arm_isa = ARMv6K;
+ else if (strcasecmp(arch_cstr, "armv6") == 0)
+ m_arm_isa = ARMv6;
+ else if (strcasecmp(arch_cstr, "armv6t2") == 0)
+ m_arm_isa = ARMv6T2;
+ else if (strcasecmp(arch_cstr, "armv7") == 0)
+ m_arm_isa = ARMv7;
+ else if (strcasecmp(arch_cstr, "armv8") == 0)
+ m_arm_isa = ARMv8;
+ }
+ }
+ return m_arm_isa != 0;
+}
+
+
bool
EmulateInstructionARM::ReadInstruction ()
{
OpenPOWER on IntegriCloud