LLDB mainline
Classes | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | List of all members
lldb_private::LanguageRuntime Class Referenceabstract

#include <LanguageRuntime.h>

Inheritance diagram for lldb_private::LanguageRuntime:
Inheritance graph
[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)=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 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 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 ()
 
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 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()

LanguageRuntime::LanguageRuntime ( Process process)
protected

Definition at line 216 of file LanguageRuntime.cpp.

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 158 of file LanguageRuntime.h.

◆ GetConcreteType()

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

Definition at line 118 of file LanguageRuntime.h.

◆ GetDeclVendor()

virtual DeclVendor * lldb_private::LanguageRuntime::GetDeclVendor ( )
inlinevirtual

◆ 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 
)
pure virtual

◆ GetExceptionObjectForThread()

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

◆ GetExceptionPrecondition()

BreakpointPreconditionSP LanguageRuntime::GetExceptionPrecondition ( lldb::LanguageType  language,
bool  throw_bp 
)
static

◆ GetIRPasses()

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

Definition at line 196 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.

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 187 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 254 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::Thread::GetProcess(), and lldb_private::Language::GetSupportedLanguages().

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

void LanguageRuntime::InitializeCommands ( CommandObject parent)
static

◆ isA()

virtual bool lldb_private::LanguageRuntime::isA ( const void *  ClassID) const
inlinevirtual

◆ 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 185 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.

Reimplemented in lldb_private::AppleObjCRuntime, lldb_private::AppleObjCRuntimeV2, and lldb_private::GNUstepObjCRuntime.

Definition at line 191 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 178 of file LanguageRuntime.h.

Member Data Documentation

◆ ID

char LanguageRuntime::ID = 0
static

Definition at line 208 of file LanguageRuntime.h.

Referenced by isA().


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