LLDB mainline
MicrosoftABIRuntime.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_MICROSOFTABIRUNTIME_H
10#define LLDB_SOURCE_PLUGINS_LANGUAGERUNTIME_CPLUSPLUS_MICROSOFTABIRUNTIME_H
11
12#include "CommonABIRuntime.h"
15
16namespace lldb_private {
17
19public:
21
22 llvm::StringRef GetName() const override { return "Microsoft ABI runtime"; }
23
25 lldb::DynamicValueType use_dynamic,
26 const LanguageRuntime::VTableInfo &vtable_info,
27 TypeAndOrName &class_type_or_name,
28 Address &dynamic_address) override;
29
30 bool IsVTableSymbol(Mangled &mangled) const override;
31
32private:
34 GetTypeInfo(ValueObject &in_value,
35 const LanguageRuntime::VTableInfo &vtable_info,
37
38 std::optional<int64_t>
39 GetOffsetToTop(ValueObject &in_value, TypeAndOrName &class_type_or_name,
40 const LanguageRuntime::VTableInfo &vtable_info);
41
42 std::optional<int64_t>
44 const CompilerType &dynamic_type);
45
46 std::optional<int64_t>
47 GetOffsetToTopFromAST(const CompilerType &in_type, ValueObject &in_value,
48 const CompilerType &dyn_type,
49 const LanguageRuntime::VTableInfo &vtable_info,
50 llvm::ArrayRef<llvm::StringRef> vtable_components);
51
52 using OffsetToTopCache = std::map<Address, int64_t>;
53
55};
56
57} // namespace lldb_private
58
59#endif
A section + offset based address class.
Definition Address.h:62
Generic representation of a type in a programming language.
A class that handles mangled names.
Definition Mangled.h:34
bool GetDynamicTypeAndAddress(ValueObject &in_value, lldb::DynamicValueType use_dynamic, const LanguageRuntime::VTableInfo &vtable_info, TypeAndOrName &class_type_or_name, Address &dynamic_address) override
std::optional< int64_t > GetOffsetToTopFromAST(const CompilerType &in_type, ValueObject &in_value, const CompilerType &dyn_type, const LanguageRuntime::VTableInfo &vtable_info, llvm::ArrayRef< llvm::StringRef > vtable_components)
llvm::StringRef GetName() const override
std::optional< int64_t > GetOffsetToTopFromRTTI(const LanguageRuntime::VTableInfo &vtable_info, const CompilerType &dynamic_type)
std::optional< int64_t > GetOffsetToTop(ValueObject &in_value, TypeAndOrName &class_type_or_name, const LanguageRuntime::VTableInfo &vtable_info)
bool IsVTableSymbol(Mangled &mangled) const override
std::map< Address, int64_t > OffsetToTopCache
TypeAndOrName GetTypeInfo(ValueObject &in_value, const LanguageRuntime::VTableInfo &vtable_info, llvm::SmallVectorImpl< llvm::StringRef > &vtable_components)
A plug-in interface definition class for debugging a process.
Definition Process.h:369
Sometimes you can find the name of the type corresponding to an object, but we don't have debug infor...
A class that represents a running process on the host machine.