summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp
diff options
context:
space:
mode:
authorTamas Berghammer <tberghammer@google.com>2016-02-16 15:14:36 +0000
committerTamas Berghammer <tberghammer@google.com>2016-02-16 15:14:36 +0000
commitbe379e1590e60dd4adf6f38e7ccafa625f238539 (patch)
tree18cd81109e3271ae4e714a718078c12145203748 /lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp
parentaa7429112e7f05114c1d5b54df0135e903146776 (diff)
downloadbcm5719-llvm-be379e1590e60dd4adf6f38e7ccafa625f238539.tar.gz
bcm5719-llvm-be379e1590e60dd4adf6f38e7ccafa625f238539.zip
Revert "Use BKPT instead of UDF for arm/thumb breakpoints"
This reverts commit 293c18e067d663e0fe93e6f3d800c2a4bfada2b0. The BKPT instruction generates SIGBUS instead of SIGTRAP in the Linux kernel on Nexus 6 - 5.1.1 (kernel version 3.10.40). Revert the CL until we can figure out how can we hanble the SIGBUS or how to get back a SIGTRAP using the BKPT instruction. llvm-svn: 260969
Diffstat (limited to 'lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp')
-rw-r--r--lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp b/lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp
index 3cd02009608..87c76f57830 100644
--- a/lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp
+++ b/lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp
@@ -1294,10 +1294,8 @@ NativeProcessLinux::MonitorSIGTRAP(const siginfo_t &info, NativeThreadLinux &thr
break;
}
- if (m_arch.GetMachine() == llvm::Triple::arm)
- MonitorBreakpoint(thread); // Arm linux reports trace for breakpoint hits
- else
- MonitorTrace(thread); // Report the trace
+ // Otherwise, report step over
+ MonitorTrace(thread);
break;
}
@@ -2291,11 +2289,13 @@ NativeProcessLinux::GetSoftwareBreakpointTrapOpcode (size_t trap_opcode_size_hin
// FIXME put this behind a breakpoint protocol class that can be set per
// architecture. Need MIPS support here.
static const uint8_t g_aarch64_opcode[] = { 0x00, 0x00, 0x20, 0xd4 };
- static const uint8_t g_arm_breakpoint_opcode[] = { 0x70, 0xbe, 0x20, 0xe1 };
+ // The ARM reference recommends the use of 0xe7fddefe and 0xdefe but the
+ // linux kernel does otherwise.
+ static const uint8_t g_arm_breakpoint_opcode[] = { 0xf0, 0x01, 0xf0, 0xe7 };
static const uint8_t g_i386_opcode [] = { 0xCC };
static const uint8_t g_mips64_opcode[] = { 0x00, 0x00, 0x00, 0x0d };
static const uint8_t g_mips64el_opcode[] = { 0x0d, 0x00, 0x00, 0x00 };
- static const uint8_t g_thumb_breakpoint_opcode[] = { 0x70, 0xbe };
+ static const uint8_t g_thumb_breakpoint_opcode[] = { 0x01, 0xde };
switch (m_arch.GetMachine ())
{
OpenPOWER on IntegriCloud