Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/llvm-project/lldb/source/Plugins/SymbolFile/NativePDB/DWARFLocationExpression.h
39642 views
1
//===-- DWARFLocationExpression.h -------------------------------*- C++ -*-===//
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_SYMBOLFILE_NATIVEPDB_DWARFLOCATIONEXPRESSION_H
10
#define LLDB_SOURCE_PLUGINS_SYMBOLFILE_NATIVEPDB_DWARFLOCATIONEXPRESSION_H
11
12
#include "lldb/lldb-forward.h"
13
#include "llvm/ADT/ArrayRef.h"
14
#include "llvm/DebugInfo/CodeView/CodeView.h"
15
#include <map>
16
17
namespace llvm {
18
class APSInt;
19
class StringRef;
20
namespace codeview {
21
class TypeIndex;
22
}
23
namespace pdb {
24
class TpiStream;
25
}
26
} // namespace llvm
27
namespace lldb_private {
28
namespace npdb {
29
struct MemberValLocation {
30
uint16_t reg_id;
31
uint16_t reg_offset;
32
bool is_at_reg = true;
33
};
34
35
DWARFExpression
36
MakeEnregisteredLocationExpression(llvm::codeview::RegisterId reg,
37
lldb::ModuleSP module);
38
39
DWARFExpression MakeRegRelLocationExpression(llvm::codeview::RegisterId reg,
40
int32_t offset,
41
lldb::ModuleSP module);
42
DWARFExpression MakeVFrameRelLocationExpression(llvm::StringRef fpo_program,
43
int32_t offset,
44
lldb::ModuleSP module);
45
DWARFExpression MakeGlobalLocationExpression(uint16_t section, uint32_t offset,
46
lldb::ModuleSP module);
47
DWARFExpression MakeConstantLocationExpression(
48
llvm::codeview::TypeIndex underlying_ti, llvm::pdb::TpiStream &tpi,
49
const llvm::APSInt &constant, lldb::ModuleSP module);
50
DWARFExpression MakeEnregisteredLocationExpressionForComposite(
51
const std::map<uint64_t, MemberValLocation> &offset_to_location,
52
std::map<uint64_t, size_t> &offset_to_size, size_t total_size,
53
lldb::ModuleSP module);
54
} // namespace npdb
55
} // namespace lldb_private
56
57
#endif
58
59