LLDB mainline
lldb_private::LanguageRuntime Class Referenceabstract

#include <LanguageRuntime.h>

Inheritance diagram for lldb_private::LanguageRuntime:
[legend]

Classes

struct  VTableInfo

Public Member Functions

virtual lldb::LanguageType GetLanguageType () const =0
virtual LanguageRuntimeGetPreferredLanguageRuntime (ValueObject &in_value)
 Return the preferred language runtime instance, which in most cases will be the current instance.
virtual llvm::Error GetObjectDescription (Stream &str, ValueObject &object)=0
virtual llvm::Error GetObjectDescription (Stream &str, Value &value, ExecutionContextScope *exe_scope)=0
virtual llvm::Expected< VTableInfoGetVTableInfo (ValueObject &in_value, bool check_type)
 Get the vtable information for a given value.
virtual 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)=0
 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.
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 std::optional< uint64_t > GetTypeBitSize (const CompilerType &compiler_type)
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 bool IsSymbolARuntimeThunk (const Symbol &symbol)
virtual lldb::addr_t LookupRuntimeSymbol (ConstString name)
virtual bool isA (const void *ClassID) const
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
virtual llvm::StringRef GetPluginName ()=0
 PluginInterface (const PluginInterface &)=delete
PluginInterfaceoperator= (const PluginInterface &)=delete

Static Public Member Functions

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

Protected Member Functions

virtual lldb::UnwindPlanSP GetRuntimeUnwindPlan (lldb::ProcessSP process_sp, lldb_private::RegisterContext *regctx, bool &behaves_like_zeroth_frame)
 LanguageRuntime (Process *process)

Additional Inherited Members

Protected Attributes inherited from lldb_private::Runtime
Processm_process

Detailed Description

Definition at line 61 of file LanguageRuntime.h.

Constructor & Destructor Documentation

◆ LanguageRuntime()

Member Function Documentation

◆ ClearExceptionBreakpoints()

virtual void lldb_private::LanguageRuntime::ClearExceptionBreakpoints ( )
inlinevirtual

◆ CouldHaveDynamicValue()

virtual bool lldb_private::LanguageRuntime::CouldHaveDynamicValue ( ValueObject & in_value)
pure virtual

◆ CreateExceptionBreakpoint()

BreakpointSP LanguageRuntime::CreateExceptionBreakpoint ( Target & target,
lldb::LanguageType language,
bool catch_bp,
bool throw_bp,
bool is_internal = false )
static

◆ CreateExceptionResolver()

virtual lldb::BreakpointResolverSP lldb_private::LanguageRuntime::CreateExceptionResolver ( const lldb::BreakpointSP & bkpt,
bool catch_bp,
bool throw_bp )
pure virtual

◆ CreateExceptionSearchFilter()

virtual lldb::SearchFilterSP lldb_private::LanguageRuntime::CreateExceptionSearchFilter ( )
inlinevirtual

◆ ExceptionBreakpointsAreSet()

virtual bool lldb_private::LanguageRuntime::ExceptionBreakpointsAreSet ( )
inlinevirtual

◆ ExceptionBreakpointsExplainStop()

virtual bool lldb_private::LanguageRuntime::ExceptionBreakpointsExplainStop ( lldb::StopInfoSP stop_reason)
inlinevirtual

◆ FindPlugin()

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

◆ FixUpDynamicType()

virtual TypeAndOrName lldb_private::LanguageRuntime::FixUpDynamicType ( const TypeAndOrName & type_and_or_name,
ValueObject & static_value )
pure virtual

◆ GetBacktraceThreadFromException()

virtual lldb::ThreadSP lldb_private::LanguageRuntime::GetBacktraceThreadFromException ( lldb::ValueObjectSP thread_sp)
inlinevirtual

Reimplemented in lldb_private::AppleObjCRuntime.

Definition at line 162 of file LanguageRuntime.h.

◆ GetConcreteType()

virtual CompilerType lldb_private::LanguageRuntime::GetConcreteType ( ExecutionContextScope * exe_scope,
ConstString abstract_type_name )
inlinevirtual

Definition at line 122 of file LanguageRuntime.h.

◆ GetDeclVendor()

◆ GetDynamicTypeAndAddress()

virtual bool lldb_private::LanguageRuntime::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 )
pure virtual

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.

Implemented in lldb_private::AppleObjCRuntime, lldb_private::AppleObjCRuntimeV1, lldb_private::AppleObjCRuntimeV2, lldb_private::GNUstepObjCRuntime, and lldb_private::ItaniumABILanguageRuntime.

Referenced by lldb_private::ValueObjectDynamicValue::UpdateValue().

◆ GetExceptionObjectForThread()

virtual lldb::ValueObjectSP lldb_private::LanguageRuntime::GetExceptionObjectForThread ( lldb::ThreadSP thread_sp)
inlinevirtual

◆ GetExceptionPrecondition()

◆ GetIRPasses()

virtual bool lldb_private::LanguageRuntime::GetIRPasses ( LLVMUserExpression::IRPasses & custom_passes)
inlinevirtual

Definition at line 200 of file LanguageRuntime.h.

◆ GetLanguageSpecificData()

StructuredData::ObjectSP LanguageRuntime::GetLanguageSpecificData ( SymbolContext sc)
virtual

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.

Reimplemented in lldb_private::AppleObjCRuntimeV2.

Definition at line 281 of file LanguageRuntime.cpp.

◆ GetLanguageType()

virtual lldb::LanguageType lldb_private::LanguageRuntime::GetLanguageType ( ) const
pure virtual

◆ GetObjectDescription() [1/2]

virtual llvm::Error lldb_private::LanguageRuntime::GetObjectDescription ( Stream & str,
Value & value,
ExecutionContextScope * exe_scope )
pure virtual

◆ GetObjectDescription() [2/2]

virtual llvm::Error lldb_private::LanguageRuntime::GetObjectDescription ( Stream & str,
ValueObject & object )
pure virtual

◆ GetPreferredLanguageRuntime()

virtual LanguageRuntime * lldb_private::LanguageRuntime::GetPreferredLanguageRuntime ( ValueObject & in_value)
inlinevirtual

Return the preferred language runtime instance, which in most cases will be the current instance.

Reimplemented in lldb_private::AppleObjCRuntimeV2.

Definition at line 72 of file LanguageRuntime.h.

References LanguageRuntime().

Referenced by lldb_private::ValueObjectDynamicValue::UpdateValue().

◆ GetRuntimeType()

virtual std::optional< CompilerType > lldb_private::LanguageRuntime::GetRuntimeType ( CompilerType base_type)
inlinevirtual

Reimplemented in lldb_private::ObjCLanguageRuntime.

Definition at line 191 of file LanguageRuntime.h.

◆ GetRuntimeUnwindPlan() [1/2]

virtual lldb::UnwindPlanSP lldb_private::LanguageRuntime::GetRuntimeUnwindPlan ( lldb::ProcessSP process_sp,
lldb_private::RegisterContext * regctx,
bool & behaves_like_zeroth_frame )
inlineprotectedvirtual

Definition at line 260 of file LanguageRuntime.h.

◆ GetRuntimeUnwindPlan() [2/2]

UnwindPlanSP LanguageRuntime::GetRuntimeUnwindPlan ( lldb_private::Thread & thread,
lldb_private::RegisterContext * regctx,
bool & behaves_like_zeroth_frame )
static

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.

Instead of using the normal UnwindPlan for the function, we will use this special UnwindPlan for this one backtrace. One example of this would be a language that has asynchronous functions, functions that may not be currently-executing, while waiting on other asynchronous calls they made, but are part of a logical backtrace that we want to show the developer because that's how they think of the program flow.

Parameters
[in]threadThe thread that the unwind is happening on.
[in]regctxThe RegisterContext for the frame we need to create an UnwindPlan. We don't yet have a StackFrame when we're selecting the UnwindPlan.
[out]behaves_like_zeroth_frameWith normal ABI calls, all stack frames except the zeroth frame need to have the return-pc value backed up by 1 for symbolication purposes. For these LanguageRuntime unwind plans, they may not follow normal ABI calling conventions and the return pc may need to be symbolicated as-is.
Returns
Returns an UnwindPlan to find the caller frame if it should be used, instead of the UnwindPlan that would normally be used for this function.

Definition at line 262 of file LanguageRuntime.cpp.

References lldb_private::Language::GetSupportedLanguages(), and LanguageRuntime().

Referenced by lldb_private::RegisterContextUnwind::InitializeNonZerothFrame(), and lldb_private::RegisterContextUnwind::InitializeZerothFrame().

◆ GetStepThroughTrampolinePlan()

virtual lldb::ThreadPlanSP lldb_private::LanguageRuntime::GetStepThroughTrampolinePlan ( Thread & thread,
bool stop_others )
pure virtual

◆ GetTypeBitSize()

virtual std::optional< uint64_t > lldb_private::LanguageRuntime::GetTypeBitSize ( const CompilerType & compiler_type)
inlinevirtual

Reimplemented in lldb_private::ObjCLanguageRuntime.

Definition at line 178 of file LanguageRuntime.h.

◆ GetVTableInfo()

virtual llvm::Expected< VTableInfo > lldb_private::LanguageRuntime::GetVTableInfo ( ValueObject & in_value,
bool check_type )
inlinevirtual

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 in lldb_private::ItaniumABILanguageRuntime.

Definition at line 101 of file LanguageRuntime.h.

Referenced by lldb_private::ValueObjectVTable::UpdateValue().

◆ InitializeCommands()

◆ isA()

◆ IsAllowedRuntimeValue()

virtual bool lldb_private::LanguageRuntime::IsAllowedRuntimeValue ( ConstString name)
inlinevirtual

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

Reimplemented in lldb_private::CPPLanguageRuntime, and lldb_private::ObjCLanguageRuntime.

Definition at line 189 of file LanguageRuntime.h.

◆ IsSymbolARuntimeThunk()

virtual bool lldb_private::LanguageRuntime::IsSymbolARuntimeThunk ( const Symbol & symbol)
inlinevirtual

Reimplemented in lldb_private::CPPLanguageRuntime.

Definition at line 204 of file LanguageRuntime.h.

◆ LookupRuntimeSymbol()

virtual lldb::addr_t lldb_private::LanguageRuntime::LookupRuntimeSymbol ( ConstString name)
inlinevirtual

◆ ModulesDidLoad()

void lldb_private::LanguageRuntime::ModulesDidLoad ( const ModuleList & module_list)
inlineoverridevirtual

Called when modules have been loaded in the process.

Implements lldb_private::Runtime.

Definition at line 195 of file LanguageRuntime.h.

◆ SetExceptionBreakpoints()

virtual void lldb_private::LanguageRuntime::SetExceptionBreakpoints ( )
inlinevirtual

◆ SymbolsDidLoad()

virtual void lldb_private::LanguageRuntime::SymbolsDidLoad ( const ModuleList & module_list)
inlinevirtual

Reimplemented in lldb_private::ObjCLanguageRuntime.

Definition at line 182 of file LanguageRuntime.h.

Member Data Documentation

◆ ID

char LanguageRuntime::ID = 0
static

Definition at line 214 of file LanguageRuntime.h.

Referenced by isA().


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