summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp
diff options
context:
space:
mode:
authorEnrico Granata <egranata@apple.com>2012-07-13 23:18:48 +0000
committerEnrico Granata <egranata@apple.com>2012-07-13 23:18:48 +0000
commitf04a21917cf35874c849abbe4f57b6eab67c8d39 (patch)
tree7ab27ee7f9ba23c47166d4d91349e9bba9f5a093 /lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp
parent7298ea18711e103d96b41146978458aeeaf1f943 (diff)
downloadbcm5719-llvm-f04a21917cf35874c849abbe4f57b6eab67c8d39.tar.gz
bcm5719-llvm-f04a21917cf35874c849abbe4f57b6eab67c8d39.zip
<rdar://problem/11782789> Changes to the watchpoint implementation on ARM so that we single-step before stopping at the WP. This is necessary because on ARM the WP triggers before the opcode is actually executed, so we would be unable to continue since we would keep hitting the WP. We work around this by disabling the WP, single stepping and then putting the WP back in place.
llvm-svn: 160199
Diffstat (limited to 'lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp')
-rw-r--r--lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp
index 3f8677d1c7e..70d73d3c38a 100644
--- a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp
+++ b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp
@@ -223,6 +223,11 @@ GDBRemoteCommunicationServer::Handle_qHostInfo (StringExtractorGDBRemote &packet
if (sub != LLDB_INVALID_CPUTYPE)
response.Printf ("cpusubtype:%u;", sub);
+ if (cpu == CPU_TYPE_ARM)
+ response.Printf("watchpoint_exceptions_received:before;"); // On armv7 we use "synchronous" watchpoints which means the exception is delivered before the instruction executes.
+ else
+ response.Printf("watchpoint_exceptions_received:after;");
+
switch (lldb::endian::InlHostByteOrder())
{
case eByteOrderBig: response.PutCString ("endian:big;"); break;
OpenPOWER on IntegriCloud