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