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 bool IsVTableSymbol(Mangled &manged) const;
24
26 lldb::DynamicValueType use_dynamic,
27 const LanguageRuntime::VTableInfo &vtable_info,
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
46
47 void SetDynamicTypeInfo(const lldb_private::Address &vtable_addr,
48 const TypeAndOrName &type_info);
49
50 using DynamicTypeCache = std::map<Address, TypeAndOrName>;
51
53 std::mutex m_mutex;
54
56};
57
58} // namespace lldb_private
59
60#endif
A section + offset based address class.
Definition Address.h:62
A file collection class.
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)
void SetDynamicTypeInfo(const lldb_private::Address &vtable_addr, const TypeAndOrName &type_info)
bool GetDynamicTypeAndAddress(ValueObject &in_value, lldb::DynamicValueType use_dynamic, const LanguageRuntime::VTableInfo &vtable_info, TypeAndOrName &class_type_or_name, Address &dynamic_address, Value::ValueType &value_type)
bool IsVTableSymbol(Mangled &manged) const
TypeAndOrName GetTypeInfo(ValueObject &in_value, const LanguageRuntime::VTableInfo &vtable_info)
A class that handles mangled names.
Definition Mangled.h:34
A plug-in interface definition class for debugging a process.
Definition Process.h:359
Sometimes you can find the name of the type corresponding to an object, but we don't have debug infor...
Definition Type.h:780
ValueType
Type that describes Value::m_value.
Definition Value.h:42
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