LLVM: include/llvm/DebugInfo/DWARF/DWARFAbbreviationDeclaration.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9#ifndef LLVM_DEBUGINFO_DWARF_DWARFABBREVIATIONDECLARATION_H
10#define LLVM_DEBUGINFO_DWARF_DWARFABBREVIATIONDECLARATION_H
11
17#include
18#include
19#include
20
21namespace llvm {
22
26
28public:
36 std::optional<uint8_t> ByteSize)
39 this->ByteSize.HasByteSize = ByteSize.has_value();
40 if (this->ByteSize.HasByteSize)
41 this->ByteSize.ByteSize = *ByteSize;
42 }
43
45 if (Form == dwarf::DW_FORM_implicit_const)
47
49 }
50
53
54 private:
55
56
57
58
59
60
61
62
63
64
65
66
67
68 struct ByteSizeStorage {
69 bool HasByteSize;
71 };
72 union {
75 };
76
77 public:
79 return Form == dwarf::DW_FORM_implicit_const;
80 }
81
86
87
88
89
90
92 };
94
96
101
104
106
108 assert(idx < AttributeSpecs.size());
109 return AttributeSpecs[idx].Form;
110 }
111
113 return AttributeSpecs.size();
114 }
115
117 assert(idx < AttributeSpecs.size());
118 return AttributeSpecs[idx].Attr;
119 }
120
122 assert(idx < AttributeSpecs.size());
123 return AttributeSpecs[idx].isImplicitConst();
124 }
125
127 assert(idx < AttributeSpecs.size());
128 return AttributeSpecs[idx].getImplicitConstValue();
129 }
130
131
132
133
134
135
136
137
138 LLVM_ABI std::optional<uint32_t>
140
141
142
143
144
145
146
147
148
149
150
151 LLVM_ABI std::optional
154
155
156
157
158
159
160
161
165
166
167
168
169
170
171
172
173 LLVM_ABI std::optional
176
180
181
182
183
184 LLVM_ABI std::optional<size_t>
186
187private:
188 void clear();
189
190
191
192 struct FixedSizeInfo {
193
195
197
199
200 uint8_t NumDwarfOffsets = 0;
201
202 FixedSizeInfo() = default;
203
204
205
206
207
208
209
211 };
212
216 bool HasChildren;
218
219
220 std::optional FixedAttributeSize;
221};
222
223}
224
225#endif
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
static GCRegistry::Add< ErlangGC > A("erlang", "erlang-compatible garbage collector")
This file contains constants used for implementing Dwarf debug support.
This file defines the SmallVector class.
SmallVector< AttributeSpec, 8 > AttributeSpecVector
Definition DWARFAbbreviationDeclaration.h:93
size_t getNumAttributes() const
Definition DWARFAbbreviationDeclaration.h:112
bool hasChildren() const
Definition DWARFAbbreviationDeclaration.h:100
bool getAttrIsImplicitConstByIndex(uint32_t idx) const
Definition DWARFAbbreviationDeclaration.h:121
ExtractState
Definition DWARFAbbreviationDeclaration.h:29
@ MoreItems
Definition DWARFAbbreviationDeclaration.h:29
@ Complete
Definition DWARFAbbreviationDeclaration.h:29
dwarf::Attribute getAttrByIndex(uint32_t idx) const
Definition DWARFAbbreviationDeclaration.h:116
attr_iterator_range attributes() const
Definition DWARFAbbreviationDeclaration.h:105
int64_t getAttrImplicitConstValueByIndex(uint32_t idx) const
Definition DWARFAbbreviationDeclaration.h:126
uint8_t getCodeByteSize() const
Definition DWARFAbbreviationDeclaration.h:98
iterator_range< AttributeSpecVector::const_iterator > attr_iterator_range
Definition DWARFAbbreviationDeclaration.h:102
LLVM_ABI uint64_t getAttributeOffsetFromIndex(uint32_t AttrIndex, uint64_t DIEOffset, const DWARFUnit &U) const
Compute an offset from a DIE specified by DIE offset and attribute index.
dwarf::Tag getTag() const
Definition DWARFAbbreviationDeclaration.h:99
LLVM_ABI std::optional< uint32_t > findAttributeIndex(dwarf::Attribute attr) const
Get the index of the specified attribute.
uint32_t getCode() const
Definition DWARFAbbreviationDeclaration.h:97
LLVM_ABI std::optional< DWARFFormValue > getAttributeValue(const uint64_t DIEOffset, const dwarf::Attribute Attr, const DWARFUnit &U) const
Extract a DWARF form value from a DIE specified by DIE offset.
LLVM_ABI std::optional< size_t > getFixedAttributesByteSize(const DWARFUnit &U) const
dwarf::Form getFormByIndex(uint32_t idx) const
Definition DWARFAbbreviationDeclaration.h:107
LLVM_ABI void dump(raw_ostream &OS) const
LLVM_ABI std::optional< DWARFFormValue > getAttributeValueFromOffset(uint32_t AttrIndex, uint64_t Offset, const DWARFUnit &U) const
Extract a DWARF form value from a DIE speccified by attribute index and its offset.
LLVM_ABI DWARFAbbreviationDeclaration()
static LLVM_ABI DWARFFormValue createFromSValue(dwarf::Form F, int64_t V)
Tagged union holding either a T or a Error.
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
A range adaptor for a pair of iterators.
This class implements an extremely fast bulk output stream that can only output to a stream.
This provides a very simple, boring adaptor for a begin and end iterator into a range type.
This is an optimization pass for GlobalISel generic memory operations.
FunctionAddr VTableAddr uintptr_t uintptr_t Data
int64_t Value
Definition DWARFAbbreviationDeclaration.h:74
dwarf::Attribute Attr
Definition DWARFAbbreviationDeclaration.h:51
DWARFFormValue getFormValue() const
Definition DWARFAbbreviationDeclaration.h:44
AttributeSpec(dwarf::Attribute A, dwarf::Form F, int64_t Value)
Definition DWARFAbbreviationDeclaration.h:31
AttributeSpec(dwarf::Attribute A, dwarf::Form F, std::optional< uint8_t > ByteSize)
Definition DWARFAbbreviationDeclaration.h:35
LLVM_ABI std::optional< int64_t > getByteSize(const DWARFUnit &U) const
Get the fixed byte size of this Form if possible.
bool isImplicitConst() const
Definition DWARFAbbreviationDeclaration.h:78
dwarf::Form Form
Definition DWARFAbbreviationDeclaration.h:52
int64_t getImplicitConstValue() const
Definition DWARFAbbreviationDeclaration.h:82
ByteSizeStorage ByteSize
Definition DWARFAbbreviationDeclaration.h:73