diff options
Diffstat (limited to 'lldb')
-rw-r--r-- | lldb/source/Breakpoint/Watchpoint.cpp | 3 | ||||
-rw-r--r-- | lldb/source/Target/StopInfo.cpp | 10 |
2 files changed, 10 insertions, 3 deletions
diff --git a/lldb/source/Breakpoint/Watchpoint.cpp b/lldb/source/Breakpoint/Watchpoint.cpp index 363fa9a8fa7..00a328e3039 100644 --- a/lldb/source/Breakpoint/Watchpoint.cpp +++ b/lldb/source/Breakpoint/Watchpoint.cpp @@ -183,9 +183,6 @@ Watchpoint::ShouldStop (StoppointCallbackContext *context) if (!IsEnabled()) return false; - if (GetHitCount() <= GetIgnoreCount()) - return false; - return true; } diff --git a/lldb/source/Target/StopInfo.cpp b/lldb/source/Target/StopInfo.cpp index 9d926536930..e88b6467f7c 100644 --- a/lldb/source/Target/StopInfo.cpp +++ b/lldb/source/Target/StopInfo.cpp @@ -759,6 +759,16 @@ protected: } } + // TODO: This condition should be checked in the synchronous part of the watchpoint code + // (Watchpoint::ShouldStop), so that we avoid pulling an event even if the watchpoint fails + // the ignore count condition. It is moved here temporarily, because for archs with + // watchpoint_exceptions_received=before, the code in the previous lines takes care of moving + // the inferior to next PC. We have to check the ignore count condition after this is done, + // otherwise we will hit same watchpoint multiple times until we pass ignore condition, but we + // won't actually be ignoring them. + if (wp_sp->GetHitCount() <= wp_sp->GetIgnoreCount()) + m_should_stop = false; + if (m_should_stop && wp_sp->GetConditionText() != NULL) { // We need to make sure the user sees any parse errors in their condition, so we'll hook the |