value. This fixes problems, for instance, with the StepRange plans, where they know that they explained the stop because they were at their "run to here" breakpoint, then deleted that breakpoint, so when they got asked again, doh! I had done this for a couple of plans in an ad hoc fashion, this just formalizes it. Also add a "ResumeRequested" in Process so that the code in the completion handlers can tell the ShouldStop logic they want to resume rather than just directly resuming. That allows us to handle resuming in a more controlled fashion. Also, SetPublicState can take a "restarted" flag, so that it doesn't drop the run lock when the target was immediately restarted. --This line, and those below , will be ignored-- M test/lang/objc/objc-dynamic-value/TestObjCDynamicValue.py M include/lldb/Target/ThreadList.h M include/lldb/Target/ThreadPlanStepOut.h M include/lldb/Target/Thread.h M include/lldb/Target/ThreadPlanBase.h M include/lldb/Target/ThreadPlanStepThrough.h M include/lldb/Target/ThreadPlanStepInstruction.h M include/lldb/Target/ThreadPlanStepInRange.h M include/lldb/Target/ThreadPlanStepOverBreakpoint.h M include/lldb/Target/ThreadPlanStepUntil.h M include/lldb/Target/StopInfo.h M include/lldb/Target/Process.h M include/lldb/Target/ThreadPlanRunToAddress.h M include/lldb/Target/ThreadPlan.h M include/lldb/Target/ThreadPlanCallFunction.h M include/lldb/Target/ThreadPlanStepOverRange.h M source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleThreadPlanStepThroughObjCTrampoline.h M source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleThreadPlanStepThroughObjCTrampoline.cpp M source/Target/StopInfo.cpp M source/Target/Process.cpp M source/Target/ThreadPlanRunToAddress.cpp M source/Target/ThreadPlan.cpp M source/Target/ThreadPlanCallFunction.cpp M source/Target/ThreadPlanStepOverRange.cpp M source/Target/ThreadList.cpp M source/Target/ThreadPlanStepOut.cpp M source/Target/Thread.cpp M source/Target/ThreadPlanBase.cpp M source/Target/ThreadPlanStepThrough.cpp M source/Target/ThreadPlanStepInstruction.cpp M source/Target/ThreadPlanStepInRange.cpp M source/Target/ThreadPlanStepOverBreakpoint.cpp M source/Target/ThreadPlanStepUntil.cpp M lldb.xcodeproj/xcshareddata/xcschemes/Run Testsuite.xcscheme llvm-svn: 181381
86 lines
2.1 KiB
C++
86 lines
2.1 KiB
C++
//===-- ThreadPlanRunToAddress.h --------------------------------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef liblldb_ThreadPlanRunToAddress_h_
|
|
#define liblldb_ThreadPlanRunToAddress_h_
|
|
|
|
// C Includes
|
|
// C++ Includes
|
|
#include <vector>
|
|
|
|
// Other libraries and framework includes
|
|
// Project includes
|
|
#include "lldb/lldb-private.h"
|
|
#include "lldb/Target/ThreadPlan.h"
|
|
|
|
namespace lldb_private {
|
|
|
|
class ThreadPlanRunToAddress : public ThreadPlan
|
|
{
|
|
public:
|
|
ThreadPlanRunToAddress (Thread &thread,
|
|
Address &address,
|
|
bool stop_others);
|
|
|
|
ThreadPlanRunToAddress (Thread &thread,
|
|
lldb::addr_t address,
|
|
bool stop_others);
|
|
|
|
ThreadPlanRunToAddress (Thread &thread,
|
|
const std::vector<lldb::addr_t> &addresses,
|
|
bool stop_others);
|
|
|
|
|
|
virtual
|
|
~ThreadPlanRunToAddress ();
|
|
|
|
virtual void
|
|
GetDescription (Stream *s, lldb::DescriptionLevel level);
|
|
|
|
virtual bool
|
|
ValidatePlan (Stream *error);
|
|
|
|
virtual bool
|
|
ShouldStop (Event *event_ptr);
|
|
|
|
virtual bool
|
|
StopOthers ();
|
|
|
|
virtual void
|
|
SetStopOthers (bool new_value);
|
|
|
|
virtual lldb::StateType
|
|
GetPlanRunState ();
|
|
|
|
virtual bool
|
|
WillStop ();
|
|
|
|
virtual bool
|
|
MischiefManaged ();
|
|
|
|
protected:
|
|
virtual bool
|
|
DoPlanExplainsStop (Event *event_ptr);
|
|
|
|
void SetInitialBreakpoints();
|
|
bool AtOurAddress();
|
|
private:
|
|
bool m_stop_others;
|
|
std::vector<lldb::addr_t> m_addresses; // This is the address we are going to run to.
|
|
// TODO: Would it be useful to have multiple addresses?
|
|
std::vector<lldb::break_id_t> m_break_ids; // This is the breakpoint we are using to stop us at m_address.
|
|
|
|
DISALLOW_COPY_AND_ASSIGN (ThreadPlanRunToAddress);
|
|
|
|
};
|
|
|
|
} // namespace lldb_private
|
|
|
|
#endif // liblldb_ThreadPlanRunToAddress_h_
|