LLDB mainline
ItaniumABIRuntime.h
Go to the documentation of this file.
1//===----------------------------------------------------------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef LLDB_SOURCE_PLUGINS_LANGUAGERUNTIME_CPLUSPLUS_ITANIUMABIRUNTIME_H
10#define LLDB_SOURCE_PLUGINS_LANGUAGERUNTIME_CPLUSPLUS_ITANIUMABIRUNTIME_H
11
14
15#include <vector>
16
17namespace lldb_private {
18
20public:
21 ItaniumABIRuntime(Process *process);
22
23 llvm::Expected<LanguageRuntime::VTableInfo>
24 GetVTableInfo(ValueObject &in_value, bool check_type);
25
27 lldb::DynamicValueType use_dynamic,
28 TypeAndOrName &class_type_or_name,
29 Address &dynamic_address,
30 Value::ValueType &value_type);
31
32 void AppendExceptionBreakpointFunctions(std::vector<const char *> &names,
33 bool catch_bp, bool throw_bp,
34 bool for_expressions);
35
37 const Target &target);
38
40
41private:
43 const LanguageRuntime::VTableInfo &vtable_info);
44
45 llvm::Error TypeHasVTable(CompilerType type);
46
48
49 void SetDynamicTypeInfo(const lldb_private::Address &vtable_addr,
50 const TypeAndOrName &type_info);
51
52 using DynamicTypeCache = std::map<Address, TypeAndOrName>;
53 using VTableInfoCache = std::map<Address, LanguageRuntime::VTableInfo>;
54
57 std::mutex m_mutex;
58
60};
61
62} // namespace lldb_private
63
64#endif
A section + offset based address class.
Definition Address.h:62
Generic representation of a type in a programming language.
A file collection class.
std::map< Address, LanguageRuntime::VTableInfo > VTableInfoCache
std::map< Address, TypeAndOrName > DynamicTypeCache
TypeAndOrName GetDynamicTypeInfo(const lldb_private::Address &vtable_addr)
lldb::ValueObjectSP GetExceptionObjectForThread(lldb::ThreadSP thread_sp)
void AppendExceptionBreakpointFilterModules(FileSpecList &list, const Target &target)
void AppendExceptionBreakpointFunctions(std::vector< const char * > &names, bool catch_bp, bool throw_bp, bool for_expressions)
llvm::Expected< LanguageRuntime::VTableInfo > GetVTableInfo(ValueObject &in_value, bool check_type)
bool GetDynamicTypeAndAddress(ValueObject &in_value, lldb::DynamicValueType use_dynamic, TypeAndOrName &class_type_or_name, Address &dynamic_address, Value::ValueType &value_type)
void SetDynamicTypeInfo(const lldb_private::Address &vtable_addr, const TypeAndOrName &type_info)
llvm::Error TypeHasVTable(CompilerType type)
TypeAndOrName GetTypeInfo(ValueObject &in_value, const LanguageRuntime::VTableInfo &vtable_info)
A plug-in interface definition class for debugging a process.
Definition Process.h:354
Sometimes you can find the name of the type corresponding to an object, but we don't have debug infor...
Definition Type.h:779
ValueType
Type that describes Value::m_value.
Definition Value.h:41
A class that represents a running process on the host machine.
std::shared_ptr< lldb_private::Thread > ThreadSP
std::shared_ptr< lldb_private::ValueObject > ValueObjectSP