LLDB mainline
|
#include <StopInfoMachException.h>
Public Member Functions | |
StopInfoMachException (Thread &thread, uint32_t exc_type, uint32_t exc_data_count, uint64_t exc_code, uint64_t exc_subcode, bool not_stepping_but_got_singlestep_exception) | |
~StopInfoMachException () override=default | |
lldb::StopReason | GetStopReason () const override |
const char * | GetDescription () override |
bool | WasContinueInterrupted (Thread &thread) override |
A Continue operation can result in a false stop event before any execution has happened. | |
Public Member Functions inherited from lldb_private::StopInfo | |
StopInfo (Thread &thread, uint64_t value) | |
virtual | ~StopInfo ()=default |
bool | IsValid () const |
void | SetThread (const lldb::ThreadSP &thread_sp) |
lldb::ThreadSP | GetThread () const |
uint64_t | GetValue () const |
virtual lldb::StopReason | GetStopReason () const =0 |
virtual bool | ShouldStopSynchronous (Event *event_ptr) |
void | OverrideShouldNotify (bool override_value) |
virtual bool | ShouldNotify (Event *event_ptr) |
virtual void | WillResume (lldb::StateType resume_state) |
virtual const char * | GetDescription () |
virtual void | SetDescription (const char *desc_cstr) |
virtual bool | IsValidForOperatingSystemThread (Thread &thread) |
virtual bool | WasContinueInterrupted (Thread &thread) |
A Continue operation can result in a false stop event before any execution has happened. | |
void | OverrideShouldStop (bool override_value) |
bool | GetOverrideShouldStop () |
bool | GetOverriddenShouldStopValue () |
StructuredData::ObjectSP | GetExtendedInfo () |
Protected Attributes | |
uint32_t | m_exc_data_count |
uint64_t | m_exc_code |
uint64_t | m_exc_subcode |
bool | m_not_stepping_but_got_singlestep_exception |
Protected Attributes inherited from lldb_private::StopInfo | |
lldb::ThreadWP | m_thread_wp |
uint32_t | m_stop_id |
uint32_t | m_resume_id |
uint64_t | m_value |
std::string | m_description |
LazyBool | m_override_should_notify |
LazyBool | m_override_should_stop |
StructuredData::ObjectSP | m_extended_info |
Private Member Functions | |
bool | DeterminePtrauthFailure (ExecutionContext &exe_ctx) |
Determine the pointer-authentication related failure that caused this exception. | |
Additional Inherited Members | |
Protected Member Functions inherited from lldb_private::StopInfo | |
virtual void | PerformAction (Event *event_ptr) |
virtual bool | DoShouldNotify (Event *event_ptr) |
virtual bool | ShouldStop (Event *event_ptr) |
bool | HasTargetRunSinceMe () |
void | MakeStopInfoValid () |
Definition at line 24 of file StopInfoMachException.h.
|
inline |
Definition at line 32 of file StopInfoMachException.h.
|
overridedefault |
|
static |
Definition at line 595 of file StopInfoMachException.cpp.
References lldb_private::Thread::CalculateProcess(), lldb_private::StopInfo::CreateStopReasonToTrace(), lldb_private::StopInfo::CreateStopReasonWithBreakpointSiteID(), lldb_private::StopInfo::CreateStopReasonWithExec(), lldb_private::StopInfo::CreateStopReasonWithSignal(), lldb_private::StopInfo::CreateStopReasonWithWatchpointID(), lldb::eStateStepping, lldb_private::WatchpointList::FindByAddress(), lldb_private::Target::GetArchitecture(), lldb_private::UserID::GetID(), lldb_private::ArchSpec::GetMachine(), lldb_private::Thread::GetProcess(), lldb_private::Thread::GetRegisterContext(), GetStopInfoForHardwareBP(), lldb_private::ExecutionContext::GetTargetPtr(), lldb_private::Thread::GetTemporaryResumeState(), lldb_private::Target::GetWatchpointList(), pc, and lldb_private::DynamicLoader::ProcessDidExec().
Referenced by lldb_private::ScriptedThread::CalculateStopInfo(), lldb_private::minidump::ProcessMinidump::RefreshStateAfterStop(), ThreadKDP::SetStopInfoFrom_KDP_EXCEPTION(), and lldb_private::process_gdb_remote::ProcessGDBRemote::SetThreadStopInfo().
|
private |
Determine the pointer-authentication related failure that caused this exception.
Returns true and fills out the failure description if there is auth-related failure, and returns false otherwise.
Definition at line 77 of file StopInfoMachException.cpp.
References DescribeAddressBriefly(), lldb_private::ArchSpec::eCore_arm_arm64e, lldb_private::Process::GetABI(), lldb_private::Target::GetArchitecture(), lldb_private::RegisterValue::GetAsUInt64(), lldb_private::ArchSpec::GetCore(), lldb_private::Address::GetLoadAddress(), lldb_private::ExecutionContext::GetProcessPtr(), GetPtrauthInstructionInfo(), lldb_private::ExecutionContext::GetRegisterContext(), lldb_private::RegisterContext::GetRegisterInfoByName(), lldb_private::Thread::GetStackFrameAtIndex(), lldb_private::StreamString::GetString(), lldb_private::ExecutionContext::GetTargetPtr(), lldb_private::ExecutionContext::GetThreadPtr(), lldb_private::ExecutionContext::HasProcessScope(), lldb_private::ExecutionContext::HasTargetScope(), lldb_private::ExecutionContext::HasThreadScope(), lldb_private::StopInfo::m_description, m_exc_code, m_exc_data_count, m_exc_subcode, lldb_private::StopInfo::m_value, lldb_private::Stream::Printf(), lldb_private::RegisterContext::ReadRegister(), and lldb_private::Target::ResolveLoadAddress().
Referenced by GetDescription().
|
overridevirtual |
Reimplemented from lldb_private::StopInfo.
Definition at line 214 of file StopInfoMachException.cpp.
References DeterminePtrauthFailure(), lldb::eStopReasonInvalid, lldb_private::Target::GetArchitecture(), lldb_private::ArchSpec::GetMachine(), lldb_private::StreamString::GetString(), lldb_private::ExecutionContext::GetTargetPtr(), lldb_private::StopInfo::GetValue(), lldb_private::StopInfo::m_description, m_exc_code, m_exc_data_count, m_exc_subcode, lldb_private::StopInfo::m_thread_wp, lldb_private::StopInfo::m_value, lldb_private::Stream::Printf(), lldb_private::Stream::PutChar(), and lldb_private::Stream::PutCString().
|
inlineoverridevirtual |
Implements lldb_private::StopInfo.
Definition at line 43 of file StopInfoMachException.h.
References lldb::eStopReasonException.
|
overridevirtual |
A Continue operation can result in a false stop event before any execution has happened.
We need to detect this and silently continue again one more time.
Reimplemented from lldb_private::StopInfo.
Definition at line 824 of file StopInfoMachException.cpp.
References lldb_private::GetLog(), lldb_private::Thread::GetPreviousFrameZeroPC(), lldb_private::Thread::GetProcess(), lldb_private::Thread::GetRegisterContext(), LLDB_LOGF, m_not_stepping_but_got_singlestep_exception, and lldb_private::Step.
|
protected |
Definition at line 68 of file StopInfoMachException.h.
Referenced by DeterminePtrauthFailure(), and GetDescription().
|
protected |
Definition at line 67 of file StopInfoMachException.h.
Referenced by DeterminePtrauthFailure(), and GetDescription().
|
protected |
Definition at line 69 of file StopInfoMachException.h.
Referenced by DeterminePtrauthFailure(), and GetDescription().
|
protected |
Definition at line 71 of file StopInfoMachException.h.
Referenced by WasContinueInterrupted().