Skip to content

Commit 5164b41

Browse files
committed
[lldb] Make Thread::WillResume() report whether it pushed a ThreadPlanStepOverBreakpoint
We'll need this later to determine whether we need to account for the newly-pushed `ThreadPlanStepOverBreakpoint`.
1 parent b021a56 commit 5164b41

File tree

2 files changed

+12
-7
lines changed

2 files changed

+12
-7
lines changed

lldb/include/lldb/Target/Thread.h

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -200,11 +200,14 @@ class Thread : public std::enable_shared_from_this<Thread>,
200200
/// The User resume state for this thread.
201201
lldb::StateType GetResumeState() const { return m_resume_state; }
202202

203-
// This function is called on all the threads before "ShouldResume" and
204-
// "WillResume" in case a thread needs to change its state before the
205-
// ThreadList polls all the threads to figure out which ones actually will
206-
// get to run and how.
207-
void SetupForResume();
203+
/// This function is called on all the threads before "ShouldResume" and
204+
/// "WillResume" in case a thread needs to change its state before the
205+
/// ThreadList polls all the threads to figure out which ones actually will
206+
/// get to run and how.
207+
///
208+
/// \return
209+
/// True if we pushed a ThreadPlanStepOverBreakpoint
210+
bool SetupForResume();
208211

209212
// Do not override this function, it is for thread plan logic only
210213
bool ShouldResume(lldb::StateType resume_state);

lldb/source/Target/Thread.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -617,15 +617,15 @@ void Thread::WillStop() {
617617
current_plan->WillStop();
618618
}
619619

620-
void Thread::SetupForResume() {
620+
bool Thread::SetupForResume() {
621621
if (GetResumeState() != eStateSuspended) {
622622
// First check whether this thread is going to "actually" resume at all.
623623
// For instance, if we're stepping from one level to the next of an
624624
// virtual inlined call stack, we just change the inlined call stack index
625625
// without actually running this thread. In that case, for this thread we
626626
// shouldn't push a step over breakpoint plan or do that work.
627627
if (GetCurrentPlan()->IsVirtualStep())
628-
return;
628+
return false;
629629

630630
// If we're at a breakpoint push the step-over breakpoint plan. Do this
631631
// before telling the current plan it will resume, since we might change
@@ -663,11 +663,13 @@ void Thread::SetupForResume() {
663663
step_bp_plan->SetAutoContinue(true);
664664
}
665665
QueueThreadPlan(step_bp_plan_sp, false);
666+
return true;
666667
}
667668
}
668669
}
669670
}
670671
}
672+
return false;
671673
}
672674

673675
bool Thread::ShouldResume(StateType resume_state) {

0 commit comments

Comments
 (0)