diff options
Diffstat (limited to 'include/lldb/Target/LanguageRuntime.h')
-rw-r--r-- | include/lldb/Target/LanguageRuntime.h | 44 |
1 files changed, 33 insertions, 11 deletions
diff --git a/include/lldb/Target/LanguageRuntime.h b/include/lldb/Target/LanguageRuntime.h index 2a2f47b853591..73c8dfa3874db 100644 --- a/include/lldb/Target/LanguageRuntime.h +++ b/include/lldb/Target/LanguageRuntime.h @@ -1,10 +1,9 @@ //===-- LanguageRuntime.h ---------------------------------------------------*- // C++ -*-===// // -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// @@ -17,6 +16,7 @@ #include "lldb/Core/Value.h" #include "lldb/Core/ValueObject.h" #include "lldb/Expression/LLVMUserExpression.h" +#include "lldb/Symbol/DeclVendor.h" #include "lldb/Target/ExecutionContextScope.h" #include "lldb/lldb-private.h" #include "lldb/lldb-public.h" @@ -116,9 +116,8 @@ public: bool catch_bp, bool throw_bp, bool is_internal = false); - static Breakpoint::BreakpointPreconditionSP - CreateExceptionPrecondition(lldb::LanguageType language, bool catch_bp, - bool throw_bp); + static lldb::BreakpointPreconditionSP + GetExceptionPrecondition(lldb::LanguageType language, bool throw_bp); virtual lldb::ValueObjectSP GetExceptionObjectForThread( lldb::ThreadSP thread_sp) { @@ -134,17 +133,32 @@ public: Target &GetTargetRef() { return m_process->GetTarget(); } + virtual DeclVendor *GetDeclVendor() { return nullptr; } + virtual lldb::BreakpointResolverSP CreateExceptionResolver(Breakpoint *bkpt, bool catch_bp, bool throw_bp) = 0; - virtual lldb::SearchFilterSP CreateExceptionSearchFilter(); + virtual lldb::SearchFilterSP CreateExceptionSearchFilter() { + return m_process->GetTarget().GetSearchFilterForModule(nullptr); + } virtual bool GetTypeBitSize(const CompilerType &compiler_type, uint64_t &size) { return false; } - virtual bool IsRuntimeSupportValue(ValueObject &valobj) { return false; } + virtual void SymbolsDidLoad(const ModuleList &module_list) { return; } + + virtual lldb::ThreadPlanSP GetStepThroughTrampolinePlan(Thread &thread, + bool stop_others) = 0; + + /// Identify whether a name is a runtime value that should not be hidden by + /// from the user interface. + virtual bool IsWhitelistedRuntimeValue(ConstString name) { return false; } + + virtual llvm::Optional<CompilerType> GetRuntimeType(CompilerType base_type) { + return llvm::None; + } virtual void ModulesDidLoad(const ModuleList &module_list) {} @@ -162,10 +176,18 @@ public: return false; } + // Given the name of a runtime symbol (e.g. in Objective-C, an ivar offset + // symbol), try to determine from the runtime what the value of that symbol + // would be. Useful when the underlying binary is stripped. + virtual lldb::addr_t LookupRuntimeSymbol(ConstString name) { + return LLDB_INVALID_ADDRESS; + } + + virtual bool isA(const void *ClassID) const { return ClassID == &ID; } + static char ID; + protected: - //------------------------------------------------------------------ // Classes that inherit from LanguageRuntime can see and modify these - //------------------------------------------------------------------ LanguageRuntime(Process *process); Process *m_process; |