LLDB mainline
Public Member Functions | Static Public Member Functions | Protected Attributes | Private Member Functions | List of all members
lldb_private::StopInfoMachException Class Reference

#include <StopInfoMachException.h>

Inheritance diagram for lldb_private::StopInfoMachException:
Inheritance graph
[legend]

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 ()
 

Static Public Member Functions

static lldb::StopInfoSP CreateStopReasonWithMachException (Thread &thread, uint32_t exc_type, uint32_t exc_data_count, uint64_t exc_code, uint64_t exc_sub_code, uint64_t exc_sub_sub_code, bool pc_already_adjusted=true, bool adjust_pc_if_needed=false)
 
- Static Public Member Functions inherited from lldb_private::StopInfo
static lldb::StopInfoSP CreateStopReasonWithBreakpointSiteID (Thread &thread, lldb::break_id_t break_id)
 
static lldb::StopInfoSP CreateStopReasonWithBreakpointSiteID (Thread &thread, lldb::break_id_t break_id, bool should_stop)
 
static lldb::StopInfoSP CreateStopReasonWithWatchpointID (Thread &thread, lldb::break_id_t watch_id, bool silently_continue=false)
 
static lldb::StopInfoSP CreateStopReasonWithSignal (Thread &thread, int signo, const char *description=nullptr, std::optional< int > code=std::nullopt)
 
static lldb::StopInfoSP CreateStopReasonWithInterrupt (Thread &thread, int signo, const char *description)
 
static lldb::StopInfoSP CreateStopReasonToTrace (Thread &thread)
 
static lldb::StopInfoSP CreateStopReasonWithPlan (lldb::ThreadPlanSP &plan, lldb::ValueObjectSP return_valobj_sp, lldb::ExpressionVariableSP expression_variable_sp)
 
static lldb::StopInfoSP CreateStopReasonWithException (Thread &thread, const char *description)
 
static lldb::StopInfoSP CreateStopReasonWithExec (Thread &thread)
 
static lldb::StopInfoSP CreateStopReasonProcessorTrace (Thread &thread, const char *description)
 
static lldb::StopInfoSP CreateStopReasonFork (Thread &thread, lldb::pid_t child_pid, lldb::tid_t child_tid)
 
static lldb::StopInfoSP CreateStopReasonVFork (Thread &thread, lldb::pid_t child_pid, lldb::tid_t child_tid)
 
static lldb::StopInfoSP CreateStopReasonVForkDone (Thread &thread)
 
static lldb::ValueObjectSP GetReturnValueObject (lldb::StopInfoSP &stop_info_sp)
 
static lldb::ExpressionVariableSP GetExpressionVariable (lldb::StopInfoSP &stop_info_sp)
 
static lldb::ValueObjectSP GetCrashingDereference (lldb::StopInfoSP &stop_info_sp, lldb::addr_t *crashing_address=nullptr)
 

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 ()
 

Detailed Description

Definition at line 24 of file StopInfoMachException.h.

Constructor & Destructor Documentation

◆ StopInfoMachException()

lldb_private::StopInfoMachException::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 
)
inline

Definition at line 32 of file StopInfoMachException.h.

◆ ~StopInfoMachException()

lldb_private::StopInfoMachException::~StopInfoMachException ( )
overridedefault

Member Function Documentation

◆ CreateStopReasonWithMachException()

StopInfoSP StopInfoMachException::CreateStopReasonWithMachException ( Thread thread,
uint32_t  exc_type,
uint32_t  exc_data_count,
uint64_t  exc_code,
uint64_t  exc_sub_code,
uint64_t  exc_sub_sub_code,
bool  pc_already_adjusted = true,
bool  adjust_pc_if_needed = false 
)
static

◆ DeterminePtrauthFailure()

bool StopInfoMachException::DeterminePtrauthFailure ( ExecutionContext exe_ctx)
private

◆ GetDescription()

const char * StopInfoMachException::GetDescription ( )
overridevirtual

◆ GetStopReason()

lldb::StopReason lldb_private::StopInfoMachException::GetStopReason ( ) const
inlineoverridevirtual

Implements lldb_private::StopInfo.

Definition at line 43 of file StopInfoMachException.h.

References lldb::eStopReasonException.

◆ WasContinueInterrupted()

bool StopInfoMachException::WasContinueInterrupted ( Thread thread)
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.

Member Data Documentation

◆ m_exc_code

uint64_t lldb_private::StopInfoMachException::m_exc_code
protected

Definition at line 68 of file StopInfoMachException.h.

Referenced by DeterminePtrauthFailure(), and GetDescription().

◆ m_exc_data_count

uint32_t lldb_private::StopInfoMachException::m_exc_data_count
protected

Definition at line 67 of file StopInfoMachException.h.

Referenced by DeterminePtrauthFailure(), and GetDescription().

◆ m_exc_subcode

uint64_t lldb_private::StopInfoMachException::m_exc_subcode
protected

Definition at line 69 of file StopInfoMachException.h.

Referenced by DeterminePtrauthFailure(), and GetDescription().

◆ m_not_stepping_but_got_singlestep_exception

bool lldb_private::StopInfoMachException::m_not_stepping_but_got_singlestep_exception
protected

Definition at line 71 of file StopInfoMachException.h.

Referenced by WasContinueInterrupted().


The documentation for this class was generated from the following files: