summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/Process/Linux
diff options
context:
space:
mode:
authorTodd Fiala <todd.fiala@gmail.com>2014-08-21 16:42:31 +0000
committerTodd Fiala <todd.fiala@gmail.com>2014-08-21 16:42:31 +0000
commit2afc5966673cde0551e0e8d7571c8a9d921ac380 (patch)
treed3b4a8bd5e538b517f42b1371f7a60474d86621d /lldb/source/Plugins/Process/Linux
parent95c0f153e43f16279a9d707550ffee232fc63692 (diff)
downloadbcm5719-llvm-2afc5966673cde0551e0e8d7571c8a9d921ac380.tar.gz
bcm5719-llvm-2afc5966673cde0551e0e8d7571c8a9d921ac380.zip
Add software breakpoint support for Linux aarch64.
See http://reviews.llvm.org/D4969 for details. Change by Paul Osmialowski. llvm-svn: 216188
Diffstat (limited to 'lldb/source/Plugins/Process/Linux')
-rw-r--r--lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp b/lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp
index 2cd0a138883..f004a8e8539 100644
--- a/lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp
+++ b/lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp
@@ -2921,10 +2921,15 @@ NativeProcessLinux::GetSoftwareBreakpointSize (NativeRegisterContextSP context_s
{
// FIXME put this behind a breakpoint protocol class that can be
// set per architecture. Need ARM, MIPS support here.
+ static const uint8_t g_aarch64_opcode[] = { 0x00, 0x00, 0x20, 0xd4 };
static const uint8_t g_i386_opcode [] = { 0xCC };
switch (m_arch.GetMachine ())
{
+ case llvm::Triple::aarch64:
+ actual_opcode_size = static_cast<uint32_t> (sizeof(g_aarch64_opcode));
+ return Error ();
+
case llvm::Triple::x86:
case llvm::Triple::x86_64:
actual_opcode_size = static_cast<uint32_t> (sizeof(g_i386_opcode));
@@ -2950,10 +2955,16 @@ NativeProcessLinux::GetSoftwareBreakpointTrapOpcode (size_t trap_opcode_size_hin
{
// FIXME put this behind a breakpoint protocol class that can be
// set per architecture. Need ARM, MIPS support here.
+ static const uint8_t g_aarch64_opcode[] = { 0x00, 0x00, 0x20, 0xd4 };
static const uint8_t g_i386_opcode [] = { 0xCC };
switch (m_arch.GetMachine ())
{
+ case llvm::Triple::aarch64:
+ trap_opcode_bytes = g_aarch64_opcode;
+ actual_opcode_size = sizeof(g_aarch64_opcode);
+ return Error ();
+
case llvm::Triple::x86:
case llvm::Triple::x86_64:
trap_opcode_bytes = g_i386_opcode;
OpenPOWER on IntegriCloud