aboutsummaryrefslogtreecommitdiff
path: root/lldb
diff options
context:
space:
mode:
authorJim Ingham <jingham@apple.com>2022-07-18 17:37:13 -0700
committerJim Ingham <jingham@apple.com>2022-07-18 17:37:13 -0700
commit4f5707e743528a0d40ac154e2e07705a03fd7ad3 (patch)
tree46d5aa15108e6eda422ecd16f7ee5d376120c1ca /lldb
parent[RISCV][Clang] Add support for Zmmul extension (diff)
downloadllvm-project-4f5707e743528a0d40ac154e2e07705a03fd7ad3.tar.gz
llvm-project-4f5707e743528a0d40ac154e2e07705a03fd7ad3.tar.bz2
llvm-project-4f5707e743528a0d40ac154e2e07705a03fd7ad3.zip
Revert "This is a followup to https://reviews.llvm.org/D129814"
This reverts commit 555ae5b8f5aa93ab090af853a8b7a83f815b3f20. Apparently, there's something different about how Linux ARM handles watchpoints, as all the watchpoint tests seem to stall on the Ubuntu aarch64 bots. Reverting till I can get my hands on a linux system and see what is wrong.
Diffstat (limited to 'lldb')
-rw-r--r--lldb/source/Target/StopInfo.cpp46
1 files changed, 10 insertions, 36 deletions
diff --git a/lldb/source/Target/StopInfo.cpp b/lldb/source/Target/StopInfo.cpp
index 17f6d15059e1..5cf0f760aa24 100644
--- a/lldb/source/Target/StopInfo.cpp
+++ b/lldb/source/Target/StopInfo.cpp
@@ -754,22 +754,15 @@ protected:
bool ShouldStopSynchronous(Event *event_ptr) override {
// If we are running our step-over the watchpoint plan, stop if it's done
// and continue if it's not:
- if (m_should_stop_is_valid)
- return m_should_stop;
-
- // If we are running our step over plan, then stop here and let the regular
- // ShouldStop figure out what we should do: Otherwise, give our plan
- // more time to get run:
if (m_using_step_over_plan)
return m_step_over_plan_complete;
- Log *log = GetLog(LLDBLog::Process);
ThreadSP thread_sp(m_thread_wp.lock());
assert(thread_sp);
WatchpointSP wp_sp(
thread_sp->CalculateTarget()->GetWatchpointList().FindByID(GetValue()));
- // If we can no longer find the watchpoint, we just have to stop:
if (!wp_sp) {
+ Log *log = GetLog(LLDBLog::Process);
LLDB_LOGF(log,
"Process::%s could not find watchpoint location id: %" PRId64
@@ -803,42 +796,23 @@ protected:
uint32_t num;
bool wp_triggers_after;
- if (!process_sp->GetWatchpointSupportInfo(num, wp_triggers_after)
+ if (process_sp->GetWatchpointSupportInfo(num, wp_triggers_after)
.Success()) {
- m_should_stop_is_valid = true;
- m_should_stop = true;
- return m_should_stop;
- }
-
- if (!wp_triggers_after) {
- // We have to step over the breakpoint before we know what to do:
+ if (wp_triggers_after)
+ return true;
+
StopInfoWatchpointSP me_as_siwp_sp
= std::static_pointer_cast<StopInfoWatchpoint>(shared_from_this());
ThreadPlanSP step_over_wp_sp(new ThreadPlanStepOverWatchpoint(
*(thread_sp.get()), me_as_siwp_sp, wp_sp));
Status error;
error = thread_sp->QueueThreadPlan(step_over_wp_sp, false);
- // If we couldn't push the thread plan, just stop here:
- if (!error.Success()) {
- LLDB_LOGF(log, "Could not push our step over watchpoint plan: %s",
- error.AsCString());
-
- m_should_stop = true;
- m_should_stop_is_valid = true;
- return true;
- } else {
- // Otherwise, don't set m_should_stop, we don't know that yet. Just
- // say we should continue:
- m_using_step_over_plan = true;
- return false;
- }
- } else {
- // We didn't have to do anything special here, so just return our value:
- m_should_stop_is_valid = true;
- return m_should_stop;
+ m_using_step_over_plan = true;
+ return !error.Success();
}
-
- return m_should_stop;
+ // If we don't have to step over the watchpoint, just let the PerformAction
+ // determine what we should do.
+ return true;
}
bool ShouldStop(Event *event_ptr) override {