LLDB mainline
lldb_private::CPPLanguageRuntime Class Reference

#include <CPPLanguageRuntime.h>

Inheritance diagram for lldb_private::CPPLanguageRuntime:
[legend]

Classes

struct  LibCppStdFunctionCallableInfo

Public Types

enum class  LibCppStdFunctionCallableCase { Lambda = 0 , CallableObject , FreeOrMemberFunction , Invalid }

Public Member Functions

LibCppStdFunctionCallableInfo FindLibCppStdFunctionCallableInfo (lldb::ValueObjectSP &valobj_sp)
llvm::StringRef GetPluginName () override
bool isA (const void *ClassID) const override
lldb::LanguageType GetLanguageType () const override
llvm::Error GetObjectDescription (Stream &str, ValueObject &object) override
llvm::Error 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.
bool IsSymbolARuntimeThunk (const Symbol &symbol) override
llvm::Expected< LanguageRuntime::VTableInfoGetVTableInfo (ValueObject &in_value, bool check_type) override
 Get the vtable information for a given value.
bool GetDynamicTypeAndAddress (ValueObject &in_value, lldb::DynamicValueType use_dynamic, TypeAndOrName &class_type_or_name, Address &address, Value::ValueType &value_type, llvm::ArrayRef< uint8_t > &local_buffer) override
 This call should return true if it could set the name and/or the type Sets address to the address of the dynamic type if value_type is set to a file or load address.
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
Public Member Functions inherited from lldb_private::LanguageRuntime
virtual LanguageRuntimeGetPreferredLanguageRuntime (ValueObject &in_value)
 Return the preferred language runtime instance, which in most cases will be the current instance.
virtual CompilerType GetConcreteType (ExecutionContextScope *exe_scope, ConstString abstract_type_name)
virtual lldb::ThreadSP GetBacktraceThreadFromException (lldb::ValueObjectSP thread_sp)
virtual DeclVendorGetDeclVendor ()
virtual std::optional< uint64_t > GetTypeBitSize (const CompilerType &compiler_type)
virtual void SymbolsDidLoad (const ModuleList &module_list)
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 StructuredData::ObjectSP GetLanguageSpecificData (SymbolContext sc)
 Language runtime plugins can use this API to report language-specific runtime information about this compile unit, such as additional language version details or feature flags.
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 ()
Public Member Functions inherited from lldb_private::PluginInterface
 PluginInterface ()=default
virtual ~PluginInterface ()=default
 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 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::LanguageRuntime
static char ID = 0

Private Types

using OperatorStringToCallableInfoMap

Private Member Functions

 CPPLanguageRuntime (Process *process)
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)

Private Attributes

OperatorStringToCallableInfoMap CallableLookupCache
lldb::BreakpointSP m_cxx_exception_bp_sp
ItaniumABIRuntime m_itanium_runtime

Additional Inherited Members

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)
Protected Attributes inherited from lldb_private::Runtime
Processm_process

Detailed Description

Definition at line 23 of file CPPLanguageRuntime.h.

Member Typedef Documentation

◆ OperatorStringToCallableInfoMap

Initial value:
llvm::StringMap<CPPLanguageRuntime::LibCppStdFunctionCallableInfo>

Definition at line 140 of file CPPLanguageRuntime.h.

Member Enumeration Documentation

◆ LibCppStdFunctionCallableCase

Enumerator
Lambda 
CallableObject 
FreeOrMemberFunction 
Invalid 

Definition at line 25 of file CPPLanguageRuntime.h.

Constructor & Destructor Documentation

◆ CPPLanguageRuntime()

Member Function Documentation

◆ classof()

bool lldb_private::CPPLanguageRuntime::classof ( const LanguageRuntime * runtime)
inlinestatic

◆ ClearExceptionBreakpoints()

void CPPLanguageRuntime::ClearExceptionBreakpoints ( )
overridevirtual

◆ CouldHaveDynamicValue()

bool CPPLanguageRuntime::CouldHaveDynamicValue ( ValueObject & in_value)
overridevirtual

◆ CreateExceptionBreakpoint()

lldb::BreakpointSP CPPLanguageRuntime::CreateExceptionBreakpoint ( bool catch_bp,
bool throw_bp,
bool for_expressions,
bool is_internal )
private

◆ CreateExceptionResolver() [1/2]

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

◆ CreateExceptionResolver() [2/2]

BreakpointResolverSP CPPLanguageRuntime::CreateExceptionResolver ( const lldb::BreakpointSP & bkpt,
bool catch_bp,
bool throw_bp,
bool for_expressions )
private

◆ CreateExceptionSearchFilter()

lldb::SearchFilterSP CPPLanguageRuntime::CreateExceptionSearchFilter ( )
overridevirtual

◆ CreateInstance()

◆ ExceptionBreakpointsAreSet()

bool CPPLanguageRuntime::ExceptionBreakpointsAreSet ( )
overridevirtual

Reimplemented from lldb_private::LanguageRuntime.

Definition at line 656 of file CPPLanguageRuntime.cpp.

References m_cxx_exception_bp_sp.

◆ ExceptionBreakpointsExplainStop()

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

◆ FindLibCppStdFunctionCallableInfo()

◆ FixUpDynamicType()

◆ Get()

CPPLanguageRuntime * lldb_private::CPPLanguageRuntime::Get ( Process & process)
inlinestatic

◆ GetDynamicTypeAndAddress()

bool CPPLanguageRuntime::GetDynamicTypeAndAddress ( ValueObject & in_value,
lldb::DynamicValueType use_dynamic,
TypeAndOrName & class_type_or_name,
Address & address,
Value::ValueType & value_type,
llvm::ArrayRef< uint8_t > & local_buffer )
overridevirtual

This call should return true if it could set the name and/or the type Sets address to the address of the dynamic type if value_type is set to a file or load address.

Sets local_buffer to a buffer containing the data of the dynamic type if value_type is set to a host address. Callers should copy local_buffer over into their own buffer if they want to keep the data alive.

Implements lldb_private::LanguageRuntime.

Definition at line 505 of file CPPLanguageRuntime.cpp.

References lldb_private::TypeAndOrName::Clear(), CouldHaveDynamicValue(), m_itanium_runtime, and lldb_private::Value::Scalar.

◆ GetExceptionObjectForThread()

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

Reimplemented from lldb_private::LanguageRuntime.

Definition at line 674 of file CPPLanguageRuntime.cpp.

References m_itanium_runtime.

◆ GetLanguageType()

lldb::LanguageType lldb_private::CPPLanguageRuntime::GetLanguageType ( ) const
inlineoverridevirtual

Implements lldb_private::LanguageRuntime.

Definition at line 67 of file CPPLanguageRuntime.h.

References lldb::eLanguageTypeC_plus_plus.

◆ GetObjectDescription() [1/2]

llvm::Error CPPLanguageRuntime::GetObjectDescription ( Stream & str,
Value & value,
ExecutionContextScope * exe_scope )
overridevirtual

Implements lldb_private::LanguageRuntime.

Definition at line 136 of file CPPLanguageRuntime.cpp.

◆ GetObjectDescription() [2/2]

llvm::Error CPPLanguageRuntime::GetObjectDescription ( Stream & str,
ValueObject & object )
overridevirtual

Implements lldb_private::LanguageRuntime.

Definition at line 129 of file CPPLanguageRuntime.cpp.

◆ GetPluginName()

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

Implements lldb_private::PluginInterface.

Definition at line 57 of file CPPLanguageRuntime.h.

References GetPluginNameStatic().

◆ GetPluginNameStatic()

llvm::StringRef lldb_private::CPPLanguageRuntime::GetPluginNameStatic ( )
inlinestatic

Definition at line 53 of file CPPLanguageRuntime.h.

Referenced by GetPluginName(), and Initialize().

◆ GetStepThroughTrampolinePlan()

lldb::ThreadPlanSP CPPLanguageRuntime::GetStepThroughTrampolinePlan ( Thread & thread,
bool stop_others )
overridevirtual

◆ GetVTableInfo()

llvm::Expected< LanguageRuntime::VTableInfo > CPPLanguageRuntime::GetVTableInfo ( ValueObject & in_value,
bool check_type )
overridevirtual

Get the vtable information for a given value.

Parameters
[in]in_valueThe value object to try and extract the VTableInfo from.
[in]check_typeIf true, the compiler type of in_value will be checked to see if it is an instance to, or pointer or reference to a class or struct that has a vtable. If the type doesn't meet the requirements, an error will be returned explaining why the type isn't suitable.
Returns
An error if anything goes wrong while trying to extract the vtable or if check_type is true and the type doesn't have a vtable.

Reimplemented from lldb_private::LanguageRuntime.

Definition at line 578 of file CPPLanguageRuntime.cpp.

References m_itanium_runtime.

◆ Initialize()

void CPPLanguageRuntime::Initialize ( )
static

◆ isA()

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

Reimplemented from lldb_private::LanguageRuntime.

Definition at line 59 of file CPPLanguageRuntime.h.

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

◆ IsAllowedRuntimeValue()

bool CPPLanguageRuntime::IsAllowedRuntimeValue ( ConstString name)
overridevirtual

Identify whether a name is a runtime value that should not be hidden by from the user interface.

Reimplemented from lldb_private::LanguageRuntime.

Definition at line 125 of file CPPLanguageRuntime.cpp.

References g_coro_frame, g_promise, and g_this.

◆ IsSymbolARuntimeThunk()

bool CPPLanguageRuntime::IsSymbolARuntimeThunk ( const Symbol & symbol)
overridevirtual

◆ SetExceptionBreakpoints()

void CPPLanguageRuntime::SetExceptionBreakpoints ( )
overridevirtual

◆ Terminate()

void CPPLanguageRuntime::Terminate ( )
static

Member Data Documentation

◆ CallableLookupCache

OperatorStringToCallableInfoMap lldb_private::CPPLanguageRuntime::CallableLookupCache
private

Definition at line 143 of file CPPLanguageRuntime.h.

Referenced by FindLibCppStdFunctionCallableInfo().

◆ ID

char CPPLanguageRuntime::ID = 0
static

Definition at line 44 of file CPPLanguageRuntime.h.

Referenced by classof(), and isA().

◆ m_cxx_exception_bp_sp

lldb::BreakpointSP lldb_private::CPPLanguageRuntime::m_cxx_exception_bp_sp
private

◆ m_itanium_runtime


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