LLDB mainline
|
#include <CPPLanguageRuntime.h>
Classes | |
struct | LibCppStdFunctionCallableInfo |
Public Types | |
enum class | LibCppStdFunctionCallableCase { Lambda = 0 , CallableObject , FreeOrMemberFunction , Invalid } |
Public Member Functions | |
LibCppStdFunctionCallableInfo | FindLibCppStdFunctionCallableInfo (lldb::ValueObjectSP &valobj_sp) |
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. | |
Public Member Functions inherited from lldb_private::LanguageRuntime | |
virtual lldb::LanguageType | GetLanguageType () const =0 |
virtual LanguageRuntime * | GetPreferredLanguageRuntime (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< VTableInfo > | GetVTableInfo (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 DeclVendor * | GetDeclVendor () |
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< CompilerType > | GetRuntimeType (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 Runtime & | operator= (const Runtime &)=delete |
Process * | GetProcess () |
Target & | GetTargetRef () |
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 | |
PluginInterface & | operator= (const PluginInterface &)=delete |
Static Public Member Functions | |
static bool | classof (const LanguageRuntime *runtime) |
static CPPLanguageRuntime * | Get (Process &process) |
Static Public Member Functions inherited from lldb_private::LanguageRuntime | |
static LanguageRuntime * | FindPlugin (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 |
Protected Member Functions | |
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 | |
using | OperatorStringToCallableInfoMap = llvm::StringMap< CPPLanguageRuntime::LibCppStdFunctionCallableInfo > |
Private Attributes | |
OperatorStringToCallableInfoMap | CallableLookupCache |
Additional Inherited Members | |
Protected Attributes inherited from lldb_private::Runtime | |
Process * | m_process |
Definition at line 22 of file CPPLanguageRuntime.h.
|
private |
Definition at line 86 of file CPPLanguageRuntime.h.
|
strong |
Enumerator | |
---|---|
Lambda | |
CallableObject | |
FreeOrMemberFunction | |
Invalid |
Definition at line 24 of file CPPLanguageRuntime.h.
|
protected |
Definition at line 79 of file CPPLanguageRuntime.cpp.
References lldb_private::StackFrameRecognizerManager::AddRecognizer(), lldb_private::Target::GetFrameRecognizerManager(), and lldb_private::Process::GetTarget().
|
inlinestatic |
Definition at line 49 of file CPPLanguageRuntime.h.
References ID, and lldb_private::LanguageRuntime::isA().
CPPLanguageRuntime::LibCppStdFunctionCallableInfo CPPLanguageRuntime::FindLibCppStdFunctionCallableInfo | ( | lldb::ValueObjectSP & | valobj_sp | ) |
Definition at line 146 of file CPPLanguageRuntime.cpp.
References lldb_private::Address::CalculateSymbolContextCompileUnit(), lldb_private::CPPLanguageRuntime::LibCppStdFunctionCallableInfo::callable_address, lldb_private::CPPLanguageRuntime::LibCppStdFunctionCallableInfo::callable_case, lldb_private::CPPLanguageRuntime::LibCppStdFunctionCallableInfo::callable_symbol, CallableLookupCache, contains_lambda_identifier(), lldb_private::Status::Fail(), lldb_private::CompileUnit::FindFunction(), FreeOrMemberFunction, lldb_private::Process::GetAddressByteSize(), lldb_private::Target::GetImages(), lldb_private::Symbol::GetName(), lldb_private::ExecutionContext::GetProcessPtr(), lldb_private::Target::GetSectionLoadList(), lldb_private::SymbolContextList::GetSize(), lldb_private::ConstString::GetStringRef(), lldb_private::Process::GetTarget(), lldb_private::SectionLoadList::IsEmpty(), line_entry_helper(), LLDB_SCOPED_TIMER, lldb_private::CPPLanguageRuntime::LibCppStdFunctionCallableInfo::member_f_pointer_value, lldb_private::Process::ReadPointerFromMemory(), lldb_private::SectionLoadList::ResolveLoadAddress(), lldb_private::ModuleList::ResolveSymbolContextForAddress(), and lldb_private::SymbolContext::symbol.
Referenced by GetStepThroughTrampolinePlan(), and lldb_private::formatters::LibcxxFunctionSummaryProvider().
|
inlinestatic |
Definition at line 57 of file CPPLanguageRuntime.h.
References lldb::eLanguageTypeC_plus_plus, and lldb_private::Process::GetLanguageRuntime().
Referenced by lldb_private::formatters::LibcxxFunctionSummaryProvider().
|
inlineoverridevirtual |
Implements lldb_private::LanguageRuntime.
Definition at line 53 of file CPPLanguageRuntime.h.
References lldb::eLanguageTypeC_plus_plus.
|
overridevirtual |
Implements lldb_private::LanguageRuntime.
Definition at line 99 of file CPPLanguageRuntime.cpp.
|
overridevirtual |
Implements lldb_private::LanguageRuntime.
Definition at line 92 of file CPPLanguageRuntime.cpp.
|
overridevirtual |
Obtain a ThreadPlan to get us into C++ constructs such as std::function.
[in] | thread | Current thrad of execution. |
[in] | stop_others | True if other threads should pause during execution. |
Implements lldb_private::LanguageRuntime.
Definition at line 384 of file CPPLanguageRuntime.cpp.
References lldb_private::Thread::CalculateTarget(), lldb_private::CPPLanguageRuntime::LibCppStdFunctionCallableInfo::callable_address, lldb_private::CPPLanguageRuntime::LibCppStdFunctionCallableInfo::callable_case, lldb_private::eLazyBoolYes, lldb::eOnlyThisThread, FindLibCppStdFunctionCallableInfo(), g_this, lldb_private::SymbolContext::GetAddressRange(), lldb_private::ConstString::GetCString(), lldb_private::Symbol::GetName(), lldb_private::Thread::GetRegisterContext(), lldb_private::Thread::GetStackFrameAtIndex(), Invalid, and lldb_private::SymbolContext::symbol.
|
inlineoverridevirtual |
Reimplemented from lldb_private::LanguageRuntime.
Reimplemented in lldb_private::ItaniumABILanguageRuntime.
Definition at line 45 of file CPPLanguageRuntime.h.
References ID, and lldb_private::LanguageRuntime::isA().
Referenced by lldb_private::ItaniumABILanguageRuntime::isA().
|
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 88 of file CPPLanguageRuntime.cpp.
References g_coro_frame, g_promise, and g_this.
|
private |
Definition at line 89 of file CPPLanguageRuntime.h.
Referenced by FindLibCppStdFunctionCallableInfo().
|
static |
Definition at line 43 of file CPPLanguageRuntime.h.