summaryrefslogtreecommitdiff
path: root/include/lldb/Target/LanguageRuntime.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/lldb/Target/LanguageRuntime.h')
-rw-r--r--include/lldb/Target/LanguageRuntime.h44
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;