diff options
author | Enrico Granata <egranata@apple.com> | 2012-07-13 23:18:48 +0000 |
---|---|---|
committer | Enrico Granata <egranata@apple.com> | 2012-07-13 23:18:48 +0000 |
commit | f04a21917cf35874c849abbe4f57b6eab67c8d39 (patch) | |
tree | 7ab27ee7f9ba23c47166d4d91349e9bba9f5a093 /lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp | |
parent | 7298ea18711e103d96b41146978458aeeaf1f943 (diff) | |
download | bcm5719-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.cpp | 5 |
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; |