diff options
| author | Todd Fiala <todd.fiala@gmail.com> | 2014-08-21 16:42:31 +0000 |
|---|---|---|
| committer | Todd Fiala <todd.fiala@gmail.com> | 2014-08-21 16:42:31 +0000 |
| commit | 2afc5966673cde0551e0e8d7571c8a9d921ac380 (patch) | |
| tree | d3b4a8bd5e538b517f42b1371f7a60474d86621d /lldb/source/Plugins/Process/Linux | |
| parent | 95c0f153e43f16279a9d707550ffee232fc63692 (diff) | |
| download | bcm5719-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.cpp | 11 |
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; |

