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

#include <ItaniumABILanguageRuntime.h>

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

Public Member Functions

 ~ItaniumABILanguageRuntime () override=default
 
bool isA (const void *ClassID) const override
 
bool GetDynamicTypeAndAddress (ValueObject &in_value, lldb::DynamicValueType use_dynamic, TypeAndOrName &class_type_or_name, Address &address, Value::ValueType &value_type) override
 
TypeAndOrName FixUpDynamicType (const TypeAndOrName &type_and_or_name, ValueObject &static_value) override
 
bool CouldHaveDynamicValue (ValueObject &in_value) override
 
void SetExceptionBreakpoints () override
 
void ClearExceptionBreakpoints () override
 
bool ExceptionBreakpointsAreSet () override
 
bool ExceptionBreakpointsExplainStop (lldb::StopInfoSP stop_reason) override
 
lldb::BreakpointResolverSP CreateExceptionResolver (const lldb::BreakpointSP &bkpt, bool catch_bp, bool throw_bp) override
 
lldb::SearchFilterSP CreateExceptionSearchFilter () override
 
lldb::ValueObjectSP GetExceptionObjectForThread (lldb::ThreadSP thread_sp) override
 
llvm::StringRef GetPluginName () override
 
- Public Member Functions inherited from lldb_private::CPPLanguageRuntime
LibCppStdFunctionCallableInfo FindLibCppStdFunctionCallableInfo (lldb::ValueObjectSP &valobj_sp)
 
bool isA (const void *ClassID) const override
 
lldb::LanguageType GetLanguageType () const override
 
bool GetObjectDescription (Stream &str, ValueObject &object) override
 
bool GetObjectDescription (Stream &str, Value &value, ExecutionContextScope *exe_scope) override
 
lldb::ThreadPlanSP GetStepThroughTrampolinePlan (Thread &thread, bool stop_others) override
 Obtain a ThreadPlan to get us into C++ constructs such as std::function.
 
bool IsAllowedRuntimeValue (ConstString name) override
 Identify whether a name is a runtime value that should not be hidden by from the user interface.
 
- Public Member Functions inherited from lldb_private::LanguageRuntime
virtual lldb::LanguageType GetLanguageType () const =0
 
virtual bool GetObjectDescription (Stream &str, ValueObject &object)=0
 
virtual bool GetObjectDescription (Stream &str, Value &value, ExecutionContextScope *exe_scope)=0
 
virtual bool GetDynamicTypeAndAddress (ValueObject &in_value, lldb::DynamicValueType use_dynamic, TypeAndOrName &class_type_or_name, Address &address, Value::ValueType &value_type)=0
 
virtual CompilerType GetConcreteType (ExecutionContextScope *exe_scope, ConstString abstract_type_name)
 
virtual bool CouldHaveDynamicValue (ValueObject &in_value)=0
 
virtual TypeAndOrName FixUpDynamicType (const TypeAndOrName &type_and_or_name, ValueObject &static_value)=0
 
virtual void SetExceptionBreakpoints ()
 
virtual void ClearExceptionBreakpoints ()
 
virtual bool ExceptionBreakpointsAreSet ()
 
virtual bool ExceptionBreakpointsExplainStop (lldb::StopInfoSP stop_reason)
 
virtual lldb::ValueObjectSP GetExceptionObjectForThread (lldb::ThreadSP thread_sp)
 
virtual lldb::ThreadSP GetBacktraceThreadFromException (lldb::ValueObjectSP thread_sp)
 
virtual DeclVendorGetDeclVendor ()
 
virtual lldb::BreakpointResolverSP CreateExceptionResolver (const lldb::BreakpointSP &bkpt, bool catch_bp, bool throw_bp)=0
 
virtual lldb::SearchFilterSP CreateExceptionSearchFilter ()
 
virtual bool GetTypeBitSize (const CompilerType &compiler_type, uint64_t &size)
 
virtual void SymbolsDidLoad (const ModuleList &module_list)
 
virtual lldb::ThreadPlanSP GetStepThroughTrampolinePlan (Thread &thread, bool stop_others)=0
 
virtual bool IsAllowedRuntimeValue (ConstString name)
 Identify whether a name is a runtime value that should not be hidden by from the user interface.
 
virtual std::optional< CompilerTypeGetRuntimeType (CompilerType base_type)
 
void ModulesDidLoad (const ModuleList &module_list) override
 Called when modules have been loaded in the process.
 
virtual bool GetIRPasses (LLVMUserExpression::IRPasses &custom_passes)
 
virtual lldb::addr_t LookupRuntimeSymbol (ConstString name)
 
virtual bool isA (const void *ClassID) const
 
- Public Member Functions inherited from lldb_private::Runtime
 Runtime (Process *process)
 
virtual ~Runtime ()=default
 
 Runtime (const Runtime &)=delete
 
const Runtimeoperator= (const Runtime &)=delete
 
ProcessGetProcess ()
 
TargetGetTargetRef ()
 
virtual void ModulesDidLoad (const ModuleList &module_list)=0
 Called when modules have been loaded in the process.
 
- Public Member Functions inherited from lldb_private::PluginInterface
 PluginInterface ()=default
 
virtual ~PluginInterface ()=default
 
virtual llvm::StringRef GetPluginName ()=0
 
 PluginInterface (const PluginInterface &)=delete
 
PluginInterfaceoperator= (const PluginInterface &)=delete
 

Static Public Member Functions

static void Initialize ()
 
static void Terminate ()
 
static lldb_private::LanguageRuntimeCreateInstance (Process *process, lldb::LanguageType language)
 
static llvm::StringRef GetPluginNameStatic ()
 
static bool classof (const LanguageRuntime *runtime)
 
- Static Public Member Functions inherited from lldb_private::CPPLanguageRuntime
static bool classof (const LanguageRuntime *runtime)
 
static CPPLanguageRuntimeGet (Process &process)
 
- Static Public Member Functions inherited from lldb_private::LanguageRuntime
static LanguageRuntimeFindPlugin (Process *process, lldb::LanguageType language)
 
static void InitializeCommands (CommandObject *parent)
 
static lldb::BreakpointSP CreateExceptionBreakpoint (Target &target, lldb::LanguageType language, bool catch_bp, bool throw_bp, bool is_internal=false)
 
static lldb::BreakpointPreconditionSP GetExceptionPrecondition (lldb::LanguageType language, bool throw_bp)
 
static lldb::UnwindPlanSP GetRuntimeUnwindPlan (lldb_private::Thread &thread, lldb_private::RegisterContext *regctx, bool &behaves_like_zeroth_frame)
 A language runtime may be able to provide a special UnwindPlan for the frame represented by the register contents regctx when that frame is not following the normal ABI conventions.
 

Static Public Attributes

static char ID = 0
 
- Static Public Attributes inherited from lldb_private::CPPLanguageRuntime
static char ID = 0
 
- Static Public Attributes inherited from lldb_private::LanguageRuntime
static char ID = 0
 

Protected Member Functions

lldb::BreakpointResolverSP CreateExceptionResolver (const lldb::BreakpointSP &bkpt, bool catch_bp, bool throw_bp, bool for_expressions)
 
lldb::BreakpointSP CreateExceptionBreakpoint (bool catch_bp, bool throw_bp, bool for_expressions, bool is_internal)
 
- Protected Member Functions inherited from lldb_private::CPPLanguageRuntime
 CPPLanguageRuntime (Process *process)
 
- Protected Member Functions inherited from lldb_private::LanguageRuntime
virtual lldb::UnwindPlanSP GetRuntimeUnwindPlan (lldb::ProcessSP process_sp, lldb_private::RegisterContext *regctx, bool &behaves_like_zeroth_frame)
 
 LanguageRuntime (Process *process)
 

Private Types

typedef std::map< lldb_private::Address, TypeAndOrNameDynamicTypeCache
 

Private Member Functions

 ItaniumABILanguageRuntime (Process *process)
 
TypeAndOrName GetTypeInfoFromVTableAddress (ValueObject &in_value, lldb::addr_t original_ptr, lldb::addr_t vtable_addr)
 
TypeAndOrName GetDynamicTypeInfo (const lldb_private::Address &vtable_addr)
 
void SetDynamicTypeInfo (const lldb_private::Address &vtable_addr, const TypeAndOrName &type_info)
 

Private Attributes

lldb::BreakpointSP m_cxx_exception_bp_sp
 
DynamicTypeCache m_dynamic_type_map
 
std::mutex m_dynamic_type_map_mutex
 

Additional Inherited Members

- Public Types inherited from lldb_private::CPPLanguageRuntime
enum class  LibCppStdFunctionCallableCase { Lambda = 0 , CallableObject , FreeOrMemberFunction , Invalid }
 
- Protected Attributes inherited from lldb_private::Runtime
Processm_process
 

Detailed Description

Definition at line 26 of file ItaniumABILanguageRuntime.h.

Member Typedef Documentation

◆ DynamicTypeCache

Definition at line 91 of file ItaniumABILanguageRuntime.h.

Constructor & Destructor Documentation

◆ ~ItaniumABILanguageRuntime()

lldb_private::ItaniumABILanguageRuntime::~ItaniumABILanguageRuntime ( )
overridedefault

◆ ItaniumABILanguageRuntime()

lldb_private::ItaniumABILanguageRuntime::ItaniumABILanguageRuntime ( Process process)
inlineprivate

Definition at line 93 of file ItaniumABILanguageRuntime.h.

Member Function Documentation

◆ classof()

static bool lldb_private::ItaniumABILanguageRuntime::classof ( const LanguageRuntime runtime)
inlinestatic

Definition at line 46 of file ItaniumABILanguageRuntime.h.

References ID, and lldb_private::LanguageRuntime::isA().

◆ ClearExceptionBreakpoints()

void ItaniumABILanguageRuntime::ClearExceptionBreakpoints ( )
overridevirtual

◆ CouldHaveDynamicValue()

bool ItaniumABILanguageRuntime::CouldHaveDynamicValue ( ValueObject in_value)
overridevirtual

Implements lldb_private::LanguageRuntime.

Definition at line 50 of file ItaniumABILanguageRuntime.cpp.

Referenced by GetDynamicTypeAndAddress().

◆ CreateExceptionBreakpoint()

lldb::BreakpointSP ItaniumABILanguageRuntime::CreateExceptionBreakpoint ( bool  catch_bp,
bool  throw_bp,
bool  for_expressions,
bool  is_internal 
)
protected

◆ CreateExceptionResolver() [1/2]

lldb::BreakpointResolverSP lldb_private::ItaniumABILanguageRuntime::CreateExceptionResolver ( const lldb::BreakpointSP &  bkpt,
bool  catch_bp,
bool  throw_bp 
)
overridevirtual

◆ CreateExceptionResolver() [2/2]

lldb::BreakpointResolverSP lldb_private::ItaniumABILanguageRuntime::CreateExceptionResolver ( const lldb::BreakpointSP &  bkpt,
bool  catch_bp,
bool  throw_bp,
bool  for_expressions 
)
protected

◆ CreateExceptionSearchFilter()

lldb::SearchFilterSP ItaniumABILanguageRuntime::CreateExceptionSearchFilter ( )
overridevirtual

◆ CreateInstance()

LanguageRuntime * ItaniumABILanguageRuntime::CreateInstance ( Process process,
lldb::LanguageType  language 
)
static

◆ ExceptionBreakpointsAreSet()

bool ItaniumABILanguageRuntime::ExceptionBreakpointsAreSet ( )
overridevirtual

Reimplemented from lldb_private::LanguageRuntime.

Definition at line 506 of file ItaniumABILanguageRuntime.cpp.

References m_cxx_exception_bp_sp.

◆ ExceptionBreakpointsExplainStop()

bool ItaniumABILanguageRuntime::ExceptionBreakpointsExplainStop ( lldb::StopInfoSP  stop_reason)
overridevirtual

◆ FixUpDynamicType()

TypeAndOrName ItaniumABILanguageRuntime::FixUpDynamicType ( const TypeAndOrName type_and_or_name,
ValueObject static_value 
)
overridevirtual

◆ GetDynamicTypeAndAddress()

bool ItaniumABILanguageRuntime::GetDynamicTypeAndAddress ( ValueObject in_value,
lldb::DynamicValueType  use_dynamic,
TypeAndOrName class_type_or_name,
Address address,
Value::ValueType value_type 
)
overridevirtual

◆ GetDynamicTypeInfo()

TypeAndOrName ItaniumABILanguageRuntime::GetDynamicTypeInfo ( const lldb_private::Address vtable_addr)
private

◆ GetExceptionObjectForThread()

ValueObjectSP ItaniumABILanguageRuntime::GetExceptionObjectForThread ( lldb::ThreadSP  thread_sp)
overridevirtual

◆ GetPluginName()

llvm::StringRef lldb_private::ItaniumABILanguageRuntime::GetPluginName ( )
inlineoverridevirtual

Implements lldb_private::PluginInterface.

Definition at line 79 of file ItaniumABILanguageRuntime.h.

References GetPluginNameStatic().

◆ GetPluginNameStatic()

static llvm::StringRef lldb_private::ItaniumABILanguageRuntime::GetPluginNameStatic ( )
inlinestatic

Definition at line 38 of file ItaniumABILanguageRuntime.h.

Referenced by GetPluginName(), and Initialize().

◆ GetTypeInfoFromVTableAddress()

TypeAndOrName ItaniumABILanguageRuntime::GetTypeInfoFromVTableAddress ( ValueObject in_value,
lldb::addr_t  original_ptr,
lldb::addr_t  vtable_addr 
)
private

◆ Initialize()

void ItaniumABILanguageRuntime::Initialize ( )
static

◆ isA()

bool lldb_private::ItaniumABILanguageRuntime::isA ( const void *  ClassID) const
inlineoverridevirtual

Reimplemented from lldb_private::CPPLanguageRuntime.

Definition at line 42 of file ItaniumABILanguageRuntime.h.

References ID, and lldb_private::CPPLanguageRuntime::isA().

◆ SetDynamicTypeInfo()

void ItaniumABILanguageRuntime::SetDynamicTypeInfo ( const lldb_private::Address vtable_addr,
const TypeAndOrName type_info 
)
private

◆ SetExceptionBreakpoints()

void ItaniumABILanguageRuntime::SetExceptionBreakpoints ( )
overridevirtual

◆ Terminate()

void ItaniumABILanguageRuntime::Terminate ( )
static

Member Data Documentation

◆ ID

char ItaniumABILanguageRuntime::ID = 0
static

Definition at line 40 of file ItaniumABILanguageRuntime.h.

Referenced by classof(), and isA().

◆ m_cxx_exception_bp_sp

lldb::BreakpointSP lldb_private::ItaniumABILanguageRuntime::m_cxx_exception_bp_sp
private

◆ m_dynamic_type_map

DynamicTypeCache lldb_private::ItaniumABILanguageRuntime::m_dynamic_type_map
private

Definition at line 99 of file ItaniumABILanguageRuntime.h.

Referenced by GetDynamicTypeInfo(), and SetDynamicTypeInfo().

◆ m_dynamic_type_map_mutex

std::mutex lldb_private::ItaniumABILanguageRuntime::m_dynamic_type_map_mutex
private

Definition at line 100 of file ItaniumABILanguageRuntime.h.

Referenced by GetDynamicTypeInfo(), and SetDynamicTypeInfo().


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