LLVM  14.0.0git
DWARFYAML.h
Go to the documentation of this file.
1 //===- DWARFYAML.h - DWARF YAMLIO implementation ----------------*- 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 /// \file
10 /// This file declares classes for handling the YAML representation
11 /// of DWARF Debug Info.
12 ///
13 //===----------------------------------------------------------------------===//
14 
15 #ifndef LLVM_OBJECTYAML_DWARFYAML_H
16 #define LLVM_OBJECTYAML_DWARFYAML_H
17 
18 #include "llvm/ADT/SetVector.h"
19 #include "llvm/ADT/StringRef.h"
21 #include "llvm/ObjectYAML/YAML.h"
23 #include <cstdint>
24 #include <unordered_map>
25 #include <vector>
26 
27 namespace llvm {
28 namespace DWARFYAML {
29 
33  llvm::yaml::Hex64 Value; // Some DWARF5 attributes have values
34 };
35 
36 struct Abbrev {
40  std::vector<AttributeAbbrev> Attributes;
41 };
42 
43 struct AbbrevTable {
45  std::vector<Abbrev> Table;
46 };
47 
49  llvm::yaml::Hex64 Address;
50  yaml::Hex64 Length;
51 };
52 
53 struct ARange {
57  yaml::Hex64 CuOffset;
59  yaml::Hex8 SegSize;
60  std::vector<ARangeDescriptor> Descriptors;
61 };
62 
63 /// Class that describes a range list entry, or a base address selection entry
64 /// within a range list in the .debug_ranges section.
65 struct RangeEntry {
66  llvm::yaml::Hex64 LowOffset;
67  llvm::yaml::Hex64 HighOffset;
68 };
69 
70 /// Class that describes a single range list inside the .debug_ranges section.
71 struct Ranges {
74  std::vector<RangeEntry> Entries;
75 };
76 
77 struct PubEntry {
78  llvm::yaml::Hex32 DieOffset;
79  llvm::yaml::Hex8 Descriptor;
81 };
82 
83 struct PubSection {
85  yaml::Hex64 Length;
89  std::vector<PubEntry> Entries;
90 };
91 
92 struct FormValue {
93  llvm::yaml::Hex64 Value;
95  std::vector<llvm::yaml::Hex8> BlockData;
96 };
97 
98 struct Entry {
99  llvm::yaml::Hex32 AbbrCode;
100  std::vector<FormValue> Values;
101 };
102 
103 /// Class that contains helpful context information when mapping YAML into DWARF
104 /// data structures.
105 struct DWARFContext {
106  bool IsGNUPubSec = false;
107 };
108 
109 struct Unit {
114  llvm::dwarf::UnitType Type; // Added in DWARF 5
117  std::vector<Entry> Entries;
118 };
119 
120 struct File {
125 };
126 
132  int64_t SData;
134  std::vector<llvm::yaml::Hex8> UnknownOpcodeData;
135  std::vector<llvm::yaml::Hex64> StandardOpcodeData;
136 };
137 
138 struct LineTable {
143  uint8_t MinInstLength;
144  uint8_t MaxOpsPerInst;
145  uint8_t DefaultIsStmt;
146  uint8_t LineBase;
147  uint8_t LineRange;
150  std::vector<StringRef> IncludeDirs;
151  std::vector<File> Files;
152  std::vector<LineTableOpcode> Opcodes;
153 };
154 
155 struct SegAddrPair {
156  yaml::Hex64 Segment;
157  yaml::Hex64 Address;
158 };
159 
163  yaml::Hex16 Version;
165  yaml::Hex8 SegSelectorSize;
166  std::vector<SegAddrPair> SegAddrPairs;
167 };
168 
172  yaml::Hex16 Version;
173  yaml::Hex16 Padding;
174  std::vector<yaml::Hex64> Offsets;
175 };
176 
179  std::vector<yaml::Hex64> Values;
180 };
181 
182 struct RnglistEntry {
184  std::vector<yaml::Hex64> Values;
185 };
186 
187 struct LoclistEntry {
189  std::vector<yaml::Hex64> Values;
191  std::vector<DWARFOperation> Descriptions;
192 };
193 
194 template <typename EntryType> struct ListEntries {
197 };
198 
199 template <typename EntryType> struct ListTable {
202  yaml::Hex16 Version;
204  yaml::Hex8 SegSelectorSize;
207  std::vector<ListEntries<EntryType>> Lists;
208 };
209 
210 struct Data {
213  std::vector<AbbrevTable> DebugAbbrev;
221 
224 
225  std::vector<Unit> CompileUnits;
226 
227  std::vector<LineTable> DebugLines;
230 
231  bool isEmpty() const;
232 
234 
238  };
241 
242 private:
243  mutable std::unordered_map<uint64_t, AbbrevTableInfo> AbbrevTableInfoMap;
244  mutable std::unordered_map<uint64_t, std::string> AbbrevTableContents;
245 };
246 
247 } // end namespace DWARFYAML
248 } // end namespace llvm
249 
278 
279 namespace llvm {
280 namespace yaml {
281 
282 template <> struct MappingTraits<DWARFYAML::Data> {
283  static void mapping(IO &IO, DWARFYAML::Data &DWARF);
284 };
285 
286 template <> struct MappingTraits<DWARFYAML::AbbrevTable> {
287  static void mapping(IO &IO, DWARFYAML::AbbrevTable &AbbrevTable);
288 };
289 
290 template <> struct MappingTraits<DWARFYAML::Abbrev> {
291  static void mapping(IO &IO, DWARFYAML::Abbrev &Abbrev);
292 };
293 
294 template <> struct MappingTraits<DWARFYAML::AttributeAbbrev> {
295  static void mapping(IO &IO, DWARFYAML::AttributeAbbrev &AttAbbrev);
296 };
297 
298 template <> struct MappingTraits<DWARFYAML::ARangeDescriptor> {
299  static void mapping(IO &IO, DWARFYAML::ARangeDescriptor &Descriptor);
300 };
301 
302 template <> struct MappingTraits<DWARFYAML::ARange> {
303  static void mapping(IO &IO, DWARFYAML::ARange &ARange);
304 };
305 
306 template <> struct MappingTraits<DWARFYAML::RangeEntry> {
307  static void mapping(IO &IO, DWARFYAML::RangeEntry &Entry);
308 };
309 
310 template <> struct MappingTraits<DWARFYAML::Ranges> {
311  static void mapping(IO &IO, DWARFYAML::Ranges &Ranges);
312 };
313 
314 template <> struct MappingTraits<DWARFYAML::PubEntry> {
315  static void mapping(IO &IO, DWARFYAML::PubEntry &Entry);
316 };
317 
318 template <> struct MappingTraits<DWARFYAML::PubSection> {
319  static void mapping(IO &IO, DWARFYAML::PubSection &Section);
320 };
321 
322 template <> struct MappingTraits<DWARFYAML::Unit> {
323  static void mapping(IO &IO, DWARFYAML::Unit &Unit);
324 };
325 
326 template <> struct MappingTraits<DWARFYAML::Entry> {
327  static void mapping(IO &IO, DWARFYAML::Entry &Entry);
328 };
329 
330 template <> struct MappingTraits<DWARFYAML::FormValue> {
331  static void mapping(IO &IO, DWARFYAML::FormValue &FormValue);
332 };
333 
334 template <> struct MappingTraits<DWARFYAML::File> {
335  static void mapping(IO &IO, DWARFYAML::File &File);
336 };
337 
338 template <> struct MappingTraits<DWARFYAML::LineTableOpcode> {
339  static void mapping(IO &IO, DWARFYAML::LineTableOpcode &LineTableOpcode);
340 };
341 
342 template <> struct MappingTraits<DWARFYAML::LineTable> {
343  static void mapping(IO &IO, DWARFYAML::LineTable &LineTable);
344 };
345 
346 template <> struct MappingTraits<DWARFYAML::SegAddrPair> {
347  static void mapping(IO &IO, DWARFYAML::SegAddrPair &SegAddrPair);
348 };
349 
350 template <> struct MappingTraits<DWARFYAML::DWARFOperation> {
351  static void mapping(IO &IO, DWARFYAML::DWARFOperation &DWARFOperation);
352 };
353 
354 template <typename EntryType>
355 struct MappingTraits<DWARFYAML::ListTable<EntryType>> {
356  static void mapping(IO &IO, DWARFYAML::ListTable<EntryType> &ListTable);
357 };
358 
359 template <typename EntryType>
360 struct MappingTraits<DWARFYAML::ListEntries<EntryType>> {
361  static void mapping(IO &IO, DWARFYAML::ListEntries<EntryType> &ListEntries);
362  static std::string validate(IO &IO,
363  DWARFYAML::ListEntries<EntryType> &ListEntries);
364 };
365 
366 template <> struct MappingTraits<DWARFYAML::RnglistEntry> {
367  static void mapping(IO &IO, DWARFYAML::RnglistEntry &RnglistEntry);
368 };
369 
370 template <> struct MappingTraits<DWARFYAML::LoclistEntry> {
371  static void mapping(IO &IO, DWARFYAML::LoclistEntry &LoclistEntry);
372 };
373 
374 template <> struct MappingTraits<DWARFYAML::AddrTableEntry> {
375  static void mapping(IO &IO, DWARFYAML::AddrTableEntry &AddrTable);
376 };
377 
378 template <> struct MappingTraits<DWARFYAML::StringOffsetsTable> {
379  static void mapping(IO &IO, DWARFYAML::StringOffsetsTable &StrOffsetsTable);
380 };
381 
382 template <> struct ScalarEnumerationTraits<dwarf::DwarfFormat> {
383  static void enumeration(IO &IO, dwarf::DwarfFormat &Format) {
384  IO.enumCase(Format, "DWARF32", dwarf::DWARF32);
385  IO.enumCase(Format, "DWARF64", dwarf::DWARF64);
386  }
387 };
388 
389 #define HANDLE_DW_TAG(unused, name, unused2, unused3, unused4) \
390  io.enumCase(value, "DW_TAG_" #name, dwarf::DW_TAG_##name);
391 
392 template <> struct ScalarEnumerationTraits<dwarf::Tag> {
393  static void enumeration(IO &io, dwarf::Tag &value) {
394 #include "llvm/BinaryFormat/Dwarf.def"
395  io.enumFallback<Hex16>(value);
396  }
397 };
398 
399 #define HANDLE_DW_LNS(unused, name) \
400  io.enumCase(value, "DW_LNS_" #name, dwarf::DW_LNS_##name);
401 
402 template <> struct ScalarEnumerationTraits<dwarf::LineNumberOps> {
403  static void enumeration(IO &io, dwarf::LineNumberOps &value) {
404 #include "llvm/BinaryFormat/Dwarf.def"
405  io.enumFallback<Hex8>(value);
406  }
407 };
408 
409 #define HANDLE_DW_LNE(unused, name) \
410  io.enumCase(value, "DW_LNE_" #name, dwarf::DW_LNE_##name);
411 
412 template <> struct ScalarEnumerationTraits<dwarf::LineNumberExtendedOps> {
413  static void enumeration(IO &io, dwarf::LineNumberExtendedOps &value) {
414 #include "llvm/BinaryFormat/Dwarf.def"
415  io.enumFallback<Hex16>(value);
416  }
417 };
418 
419 #define HANDLE_DW_AT(unused, name, unused2, unused3) \
420  io.enumCase(value, "DW_AT_" #name, dwarf::DW_AT_##name);
421 
422 template <> struct ScalarEnumerationTraits<dwarf::Attribute> {
423  static void enumeration(IO &io, dwarf::Attribute &value) {
424 #include "llvm/BinaryFormat/Dwarf.def"
425  io.enumFallback<Hex16>(value);
426  }
427 };
428 
429 #define HANDLE_DW_FORM(unused, name, unused2, unused3) \
430  io.enumCase(value, "DW_FORM_" #name, dwarf::DW_FORM_##name);
431 
432 template <> struct ScalarEnumerationTraits<dwarf::Form> {
433  static void enumeration(IO &io, dwarf::Form &value) {
434 #include "llvm/BinaryFormat/Dwarf.def"
435  io.enumFallback<Hex16>(value);
436  }
437 };
438 
439 #define HANDLE_DW_UT(unused, name) \
440  io.enumCase(value, "DW_UT_" #name, dwarf::DW_UT_##name);
441 
442 template <> struct ScalarEnumerationTraits<dwarf::UnitType> {
443  static void enumeration(IO &io, dwarf::UnitType &value) {
444 #include "llvm/BinaryFormat/Dwarf.def"
445  io.enumFallback<Hex8>(value);
446  }
447 };
448 
449 template <> struct ScalarEnumerationTraits<dwarf::Constants> {
450  static void enumeration(IO &io, dwarf::Constants &value) {
451  io.enumCase(value, "DW_CHILDREN_no", dwarf::DW_CHILDREN_no);
452  io.enumCase(value, "DW_CHILDREN_yes", dwarf::DW_CHILDREN_yes);
453  io.enumFallback<Hex16>(value);
454  }
455 };
456 
457 #define HANDLE_DW_RLE(unused, name) \
458  io.enumCase(value, "DW_RLE_" #name, dwarf::DW_RLE_##name);
459 
460 template <> struct ScalarEnumerationTraits<dwarf::RnglistEntries> {
461  static void enumeration(IO &io, dwarf::RnglistEntries &value) {
462 #include "llvm/BinaryFormat/Dwarf.def"
463  }
464 };
465 
466 #define HANDLE_DW_LLE(unused, name) \
467  io.enumCase(value, "DW_LLE_" #name, dwarf::DW_LLE_##name);
468 
469 template <> struct ScalarEnumerationTraits<dwarf::LoclistEntries> {
470  static void enumeration(IO &io, dwarf::LoclistEntries &value) {
471 #include "llvm/BinaryFormat/Dwarf.def"
472  }
473 };
474 
475 #define HANDLE_DW_OP(id, name, version, vendor) \
476  io.enumCase(value, "DW_OP_" #name, dwarf::DW_OP_##name);
477 
478 template <> struct ScalarEnumerationTraits<dwarf::LocationAtom> {
479  static void enumeration(IO &io, dwarf::LocationAtom &value) {
480 #include "llvm/BinaryFormat/Dwarf.def"
481  io.enumFallback<yaml::Hex8>(value);
482  }
483 };
484 
485 } // end namespace yaml
486 } // end namespace llvm
487 
488 #endif // LLVM_OBJECTYAML_DWARFYAML_H
llvm::DWARFYAML::AttributeAbbrev::Value
llvm::yaml::Hex64 Value
Definition: DWARFYAML.h:33
llvm::DWARFYAML::RangeEntry::HighOffset
llvm::yaml::Hex64 HighOffset
Definition: DWARFYAML.h:67
llvm::DWARFYAML::DWARFOperation
Definition: DWARFYAML.h:177
llvm::DWARFYAML::AttributeAbbrev::Attribute
llvm::dwarf::Attribute Attribute
Definition: DWARFYAML.h:31
llvm::DWARFYAML::LineTable::Version
uint16_t Version
Definition: DWARFYAML.h:141
llvm::DWARFYAML::Entry::AbbrCode
llvm::yaml::Hex32 AbbrCode
Definition: DWARFYAML.h:99
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition: AllocatorList.h:23
llvm::DWARFYAML::LineTable::LineRange
uint8_t LineRange
Definition: DWARFYAML.h:147
llvm::DWARFYAML::LoclistEntry::DescriptionsLength
Optional< yaml::Hex64 > DescriptionsLength
Definition: DWARFYAML.h:190
llvm::dwarf::Constants
Constants
Definition: Dwarf.h:427
llvm::DWARFYAML::AddrTableEntry::SegSelectorSize
yaml::Hex8 SegSelectorSize
Definition: DWARFYAML.h:165
llvm::DWARFYAML::Data::DebugRnglists
Optional< std::vector< ListTable< RnglistEntry > > > DebugRnglists
Definition: DWARFYAML.h:228
llvm::DWARFYAML::LoclistEntry::Descriptions
std::vector< DWARFOperation > Descriptions
Definition: DWARFYAML.h:191
llvm::DWARFYAML::LineTableOpcode::SubOpcode
dwarf::LineNumberExtendedOps SubOpcode
Definition: DWARFYAML.h:130
llvm::DWARFYAML::PubSection::Format
dwarf::DwarfFormat Format
Definition: DWARFYAML.h:84
llvm::DWARFYAML::LineTableOpcode::Opcode
dwarf::LineNumberOps Opcode
Definition: DWARFYAML.h:128
llvm::DWARFYAML::RnglistEntry::Values
std::vector< yaml::Hex64 > Values
Definition: DWARFYAML.h:184
StringRef.h
llvm::DWARFYAML::StringOffsetsTable
Definition: DWARFYAML.h:169
llvm::DWARFYAML::LineTable::DefaultIsStmt
uint8_t DefaultIsStmt
Definition: DWARFYAML.h:145
llvm::DWARFYAML::DWARFContext
Class that contains helpful context information when mapping YAML into DWARF data structures.
Definition: DWARFYAML.h:105
llvm::DWARFYAML::LineTable::LineBase
uint8_t LineBase
Definition: DWARFYAML.h:146
llvm::DWARFYAML::AddrTableEntry::AddrSize
Optional< yaml::Hex8 > AddrSize
Definition: DWARFYAML.h:164
llvm::dwarf::Form
Form
Definition: Dwarf.h:131
llvm::DWARFYAML::LineTableOpcode::SData
int64_t SData
Definition: DWARFYAML.h:132
llvm::DWARFYAML::Data::DebugLoclists
Optional< std::vector< ListTable< LoclistEntry > > > DebugLoclists
Definition: DWARFYAML.h:229
llvm::DWARFYAML::Data::IsLittleEndian
bool IsLittleEndian
Definition: DWARFYAML.h:211
llvm::DWARFYAML::ARangeDescriptor
Definition: DWARFYAML.h:48
llvm::DWARFYAML::PubSection::Length
yaml::Hex64 Length
Definition: DWARFYAML.h:85
LLVM_YAML_IS_SEQUENCE_VECTOR
#define LLVM_YAML_IS_SEQUENCE_VECTOR(type)
llvm::DWARFYAML::File::DirIdx
uint64_t DirIdx
Definition: DWARFYAML.h:122
llvm::DWARFYAML::LineTable::OpcodeBase
Optional< uint8_t > OpcodeBase
Definition: DWARFYAML.h:148
llvm::DWARFYAML::LoclistEntry::Operator
dwarf::LoclistEntries Operator
Definition: DWARFYAML.h:188
llvm::DWARFYAML::ListTable::Version
yaml::Hex16 Version
Definition: DWARFYAML.h:202
llvm::DWARFYAML::StringOffsetsTable::Offsets
std::vector< yaml::Hex64 > Offsets
Definition: DWARFYAML.h:174
llvm::DWARFYAML::StringOffsetsTable::Version
yaml::Hex16 Version
Definition: DWARFYAML.h:172
llvm::DWARFYAML::Data::isEmpty
bool isEmpty() const
Definition: DWARFYAML.cpp:21
llvm::DWARFYAML::ListEntries::Content
Optional< yaml::BinaryRef > Content
Definition: DWARFYAML.h:196
llvm::DWARFYAML::Data::DebugLines
std::vector< LineTable > DebugLines
Definition: DWARFYAML.h:227
llvm::DWARFYAML::LineTable::PrologueLength
Optional< uint64_t > PrologueLength
Definition: DWARFYAML.h:142
llvm::DWARFYAML::LineTableOpcode::UnknownOpcodeData
std::vector< llvm::yaml::Hex8 > UnknownOpcodeData
Definition: DWARFYAML.h:134
llvm::DWARFYAML::LineTableOpcode
Definition: DWARFYAML.h:127
llvm::dwarf::DW_CHILDREN_yes
@ DW_CHILDREN_yes
Definition: Dwarf.h:430
llvm::Optional< yaml::Hex64 >
llvm::DWARFYAML::LineTable::IncludeDirs
std::vector< StringRef > IncludeDirs
Definition: DWARFYAML.h:150
llvm::DWARFYAML::ListTable::Lists
std::vector< ListEntries< EntryType > > Lists
Definition: DWARFYAML.h:207
llvm::DWARFYAML::ListTable::Format
dwarf::DwarfFormat Format
Definition: DWARFYAML.h:200
llvm::DWARFYAML::ARange::Version
uint16_t Version
Definition: DWARFYAML.h:56
llvm::Expected
Tagged union holding either a T or a Error.
Definition: APFloat.h:42
llvm::RISCVFeatures::validate
void validate(const Triple &TT, const FeatureBitset &FeatureBits)
Definition: RISCVBaseInfo.cpp:95
llvm::dwarf::Tag
Tag
Definition: Dwarf.h:104
llvm::dwarf::LoclistEntries
LoclistEntries
DWARF v5 loc list entry encoding values.
Definition: Dwarf.h:411
llvm::DWARFYAML::RnglistEntry
Definition: DWARFYAML.h:182
llvm::Data
@ Data
Definition: SIMachineScheduler.h:55
llvm::DWARFYAML::ARange::AddrSize
Optional< yaml::Hex8 > AddrSize
Definition: DWARFYAML.h:58
llvm::dwarf::Attribute
Attribute
Attributes.
Definition: Dwarf.h:124
llvm::DWARFYAML::Data
Definition: DWARFYAML.h:210
llvm::DWARFYAML::Data::DebugAddr
Optional< std::vector< AddrTableEntry > > DebugAddr
Definition: DWARFYAML.h:218
llvm::DWARFYAML::ListEntries::Entries
Optional< std::vector< EntryType > > Entries
Definition: DWARFYAML.h:195
llvm::DWARFYAML::LineTableOpcode::StandardOpcodeData
std::vector< llvm::yaml::Hex64 > StandardOpcodeData
Definition: DWARFYAML.h:135
llvm::DWARFYAML::Abbrev::Children
llvm::dwarf::Constants Children
Definition: DWARFYAML.h:39
llvm::ARMBuildAttrs::Section
@ Section
Legacy Tags.
Definition: ARMBuildAttributes.h:82
llvm::DWARFYAML::AddrTableEntry::Format
dwarf::DwarfFormat Format
Definition: DWARFYAML.h:161
llvm::DWARFYAML::LineTableOpcode::FileEntry
File FileEntry
Definition: DWARFYAML.h:133
llvm::DWARFYAML::ListTable::SegSelectorSize
yaml::Hex8 SegSelectorSize
Definition: DWARFYAML.h:204
llvm::DWARFYAML::RangeEntry
Class that describes a range list entry, or a base address selection entry within a range list in the...
Definition: DWARFYAML.h:65
llvm::DWARFYAML::Data::DebugRanges
Optional< std::vector< Ranges > > DebugRanges
Definition: DWARFYAML.h:217
llvm::DWARFYAML::Entry::Values
std::vector< FormValue > Values
Definition: DWARFYAML.h:100
llvm::DWARFYAML::Data::PubTypes
Optional< PubSection > PubTypes
Definition: DWARFYAML.h:220
llvm::DWARFYAML::SegAddrPair::Address
yaml::Hex64 Address
Definition: DWARFYAML.h:157
llvm::DWARFYAML::ARange::Descriptors
std::vector< ARangeDescriptor > Descriptors
Definition: DWARFYAML.h:60
llvm::DWARFYAML::FormValue::CStr
StringRef CStr
Definition: DWARFYAML.h:94
llvm::DWARFYAML::ListTable::AddrSize
Optional< yaml::Hex8 > AddrSize
Definition: DWARFYAML.h:203
llvm::DWARFYAML::Data::DebugAbbrev
std::vector< AbbrevTable > DebugAbbrev
Definition: DWARFYAML.h:213
llvm::DWARFYAML::File::ModTime
uint64_t ModTime
Definition: DWARFYAML.h:123
llvm::DWARFYAML::StringOffsetsTable::Padding
yaml::Hex16 Padding
Definition: DWARFYAML.h:173
llvm::DWARFYAML::PubSection::Version
uint16_t Version
Definition: DWARFYAML.h:86
llvm::DWARFYAML::ListTable::Length
Optional< yaml::Hex64 > Length
Definition: DWARFYAML.h:201
llvm::DWARFYAML::Data::PubNames
Optional< PubSection > PubNames
Definition: DWARFYAML.h:219
llvm::DWARFYAML::Data::AbbrevTableInfo::Index
uint64_t Index
Definition: DWARFYAML.h:236
YAML.h
llvm::DWARFYAML::Abbrev::Attributes
std::vector< AttributeAbbrev > Attributes
Definition: DWARFYAML.h:40
llvm::DWARFYAML::ARange::SegSize
yaml::Hex8 SegSize
Definition: DWARFYAML.h:59
llvm::DWARFYAML::ListTable::OffsetEntryCount
Optional< uint32_t > OffsetEntryCount
Definition: DWARFYAML.h:205
llvm::DWARFYAML::Abbrev
Definition: DWARFYAML.h:36
llvm::dwarf::LineNumberExtendedOps
LineNumberExtendedOps
Line Number Extended Opcode Encodings.
Definition: Dwarf.h:365
llvm::DWARFYAML::Data::GNUPubTypes
Optional< PubSection > GNUPubTypes
Definition: DWARFYAML.h:223
llvm::dwarf::DwarfFormat
DwarfFormat
Constants that define the DWARF format as 32 or 64 bit.
Definition: Dwarf.h:92
llvm::DWARFYAML::Data::GNUPubNames
Optional< PubSection > GNUPubNames
Definition: DWARFYAML.h:222
llvm::DWARFYAML::LineTable::MinInstLength
uint8_t MinInstLength
Definition: DWARFYAML.h:143
llvm::DWARFYAML::File
Definition: DWARFYAML.h:120
llvm::DWARFYAML::RnglistEntry::Operator
dwarf::RnglistEntries Operator
Definition: DWARFYAML.h:183
llvm::DWARFYAML::FormValue::Value
llvm::yaml::Hex64 Value
Definition: DWARFYAML.h:93
llvm::DWARFYAML::PubEntry::DieOffset
llvm::yaml::Hex32 DieOffset
Definition: DWARFYAML.h:78
llvm::DWARFYAML::ListEntries
Definition: DWARFYAML.h:194
llvm::DWARFYAML::PubSection::Entries
std::vector< PubEntry > Entries
Definition: DWARFYAML.h:89
llvm::DWARFYAML::Data::getNonEmptySectionNames
SetVector< StringRef > getNonEmptySectionNames() const
Definition: DWARFYAML.cpp:25
llvm::DWARFYAML::LineTable::Format
dwarf::DwarfFormat Format
Definition: DWARFYAML.h:139
llvm::DWARFYAML::Data::AbbrevTableInfo
Definition: DWARFYAML.h:235
llvm::DWARFYAML::StringOffsetsTable::Length
Optional< yaml::Hex64 > Length
Definition: DWARFYAML.h:171
llvm::DWARFYAML::LineTableOpcode::Data
uint64_t Data
Definition: DWARFYAML.h:131
Index
uint32_t Index
Definition: ELFObjHandler.cpp:84
uint64_t
llvm::DWARFYAML::FormValue::BlockData
std::vector< llvm::yaml::Hex8 > BlockData
Definition: DWARFYAML.h:95
llvm::DWARFYAML::ARange::Length
Optional< yaml::Hex64 > Length
Definition: DWARFYAML.h:55
llvm::DWARFYAML::LineTableOpcode::ExtLen
Optional< uint64_t > ExtLen
Definition: DWARFYAML.h:129
llvm::DWARFYAML::AbbrevTable::Table
std::vector< Abbrev > Table
Definition: DWARFYAML.h:45
llvm::DWARFYAML::File::Name
StringRef Name
Definition: DWARFYAML.h:121
llvm::DWARFYAML::ARangeDescriptor::Address
llvm::yaml::Hex64 Address
Definition: DWARFYAML.h:49
llvm::DWARFYAML::SegAddrPair
Definition: DWARFYAML.h:155
llvm::DWARFYAML::ARange::Format
dwarf::DwarfFormat Format
Definition: DWARFYAML.h:54
llvm::dwarf::UnitType
UnitType
Constants for unit types in DWARF v5.
Definition: Dwarf.h:460
llvm::DWARFYAML::LineTable::StandardOpcodeLengths
Optional< std::vector< uint8_t > > StandardOpcodeLengths
Definition: DWARFYAML.h:149
llvm::DWARFYAML::PubSection
Definition: DWARFYAML.h:83
llvm::DWARFYAML::Unit
Definition: DWARFYAML.h:109
llvm::DWARFYAML::ARange::CuOffset
yaml::Hex64 CuOffset
Definition: DWARFYAML.h:57
llvm::DWARFYAML::Unit::AddrSize
Optional< uint8_t > AddrSize
Definition: DWARFYAML.h:113
llvm::DWARFYAML::LoclistEntry
Definition: DWARFYAML.h:187
llvm::DWARFYAML::LineTable::Opcodes
std::vector< LineTableOpcode > Opcodes
Definition: DWARFYAML.h:152
llvm::DWARFYAML::Unit::Format
dwarf::DwarfFormat Format
Definition: DWARFYAML.h:110
llvm::DWARFYAML::ARangeDescriptor::Length
yaml::Hex64 Length
Definition: DWARFYAML.h:50
llvm::DWARFYAML::Abbrev::Tag
llvm::dwarf::Tag Tag
Definition: DWARFYAML.h:38
llvm::DWARFYAML::StringOffsetsTable::Format
dwarf::DwarfFormat Format
Definition: DWARFYAML.h:170
llvm::DWARFYAML::AddrTableEntry::Length
Optional< yaml::Hex64 > Length
Definition: DWARFYAML.h:162
llvm::DWARFYAML::LineTable::MaxOpsPerInst
uint8_t MaxOpsPerInst
Definition: DWARFYAML.h:144
llvm::DWARFYAML::Unit::Type
llvm::dwarf::UnitType Type
Definition: DWARFYAML.h:114
llvm::DWARFYAML::PubSection::UnitOffset
uint32_t UnitOffset
Definition: DWARFYAML.h:87
llvm::DWARFYAML::AttributeAbbrev
Definition: DWARFYAML.h:30
YAMLTraits.h
llvm::DWARFYAML::Data::getAbbrevTableContentByIndex
StringRef getAbbrevTableContentByIndex(uint64_t Index) const
Definition: DWARFEmitter.cpp:96
llvm::StringRef
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:57
Dwarf.h
llvm::DWARFYAML::AddrTableEntry
Definition: DWARFYAML.h:160
llvm::DWARFYAML::Data::CompileUnits
std::vector< Unit > CompileUnits
Definition: DWARFYAML.h:225
uint32_t
llvm::DWARFYAML::PubEntry::Name
StringRef Name
Definition: DWARFYAML.h:80
llvm::DWARFYAML::AbbrevTable
Definition: DWARFYAML.h:43
llvm::dwarf::RnglistEntries
RnglistEntries
DWARF v5 range list entry encoding values.
Definition: Dwarf.h:405
llvm::DWARFYAML::Entry
Definition: DWARFYAML.h:98
llvm::DWARFYAML::Ranges
Class that describes a single range list inside the .debug_ranges section.
Definition: DWARFYAML.h:71
llvm::DWARFYAML::AttributeAbbrev::Form
llvm::dwarf::Form Form
Definition: DWARFYAML.h:32
llvm::DWARFYAML::PubEntry
Definition: DWARFYAML.h:77
llvm::DWARFYAML::Unit::Length
Optional< yaml::Hex64 > Length
Definition: DWARFYAML.h:111
llvm::DWARFYAML::Data::DebugStrOffsets
Optional< std::vector< StringOffsetsTable > > DebugStrOffsets
Definition: DWARFYAML.h:215
llvm::DWARFYAML::ListTable::Offsets
Optional< std::vector< yaml::Hex64 > > Offsets
Definition: DWARFYAML.h:206
llvm::DWARFYAML::ListTable
Definition: DWARFYAML.h:199
llvm::DWARFYAML::LineTable
Definition: DWARFYAML.h:138
uint16_t
llvm::DWARFYAML::PubEntry::Descriptor
llvm::yaml::Hex8 Descriptor
Definition: DWARFYAML.h:79
llvm::DWARFYAML::Ranges::AddrSize
Optional< llvm::yaml::Hex8 > AddrSize
Definition: DWARFYAML.h:73
llvm::DWARFYAML::Unit::Entries
std::vector< Entry > Entries
Definition: DWARFYAML.h:117
llvm::DWARFYAML::AbbrevTable::ID
Optional< uint64_t > ID
Definition: DWARFYAML.h:44
llvm::DWARFYAML::Ranges::Offset
Optional< llvm::yaml::Hex64 > Offset
Definition: DWARFYAML.h:72
llvm::DWARFYAML::Data::Is64BitAddrSize
bool Is64BitAddrSize
Definition: DWARFYAML.h:212
llvm::DWARFYAML::AddrTableEntry::SegAddrPairs
std::vector< SegAddrPair > SegAddrPairs
Definition: DWARFYAML.h:166
llvm::DWARFYAML::File::Length
uint64_t Length
Definition: DWARFYAML.h:124
llvm::DWARFYAML::LineTable::Length
Optional< uint64_t > Length
Definition: DWARFYAML.h:140
llvm::dwarf::DW_CHILDREN_no
@ DW_CHILDREN_no
Definition: Dwarf.h:429
llvm::DWARFYAML::Data::AbbrevTableInfo::Offset
uint64_t Offset
Definition: DWARFYAML.h:237
llvm::DWARFYAML::Data::getAbbrevTableInfoByID
Expected< AbbrevTableInfo > getAbbrevTableInfoByID(uint64_t ID) const
Definition: DWARFYAML.cpp:59
llvm::DWARFYAML::RangeEntry::LowOffset
llvm::yaml::Hex64 LowOffset
Definition: DWARFYAML.h:66
llvm::DWARFYAML::Unit::AbbrOffset
Optional< yaml::Hex64 > AbbrOffset
Definition: DWARFYAML.h:116
llvm::DWARFYAML::DWARFOperation::Operator
dwarf::LocationAtom Operator
Definition: DWARFYAML.h:178
llvm::DWARFYAML::FormValue
Definition: DWARFYAML.h:92
llvm::DWARFYAML::LineTable::Files
std::vector< File > Files
Definition: DWARFYAML.h:151
llvm::DWARFYAML::Abbrev::Code
Optional< yaml::Hex64 > Code
Definition: DWARFYAML.h:37
llvm::DWARFYAML::Data::DebugAranges
Optional< std::vector< ARange > > DebugAranges
Definition: DWARFYAML.h:216
llvm::DWARFYAML::ARange
Definition: DWARFYAML.h:53
llvm::dwarf::LineNumberOps
LineNumberOps
Line Number Standard Opcode Encodings.
Definition: Dwarf.h:359
llvm::DWARFYAML::DWARFContext::IsGNUPubSec
bool IsGNUPubSec
Definition: DWARFYAML.h:106
llvm::DWARFYAML::DWARFOperation::Values
std::vector< yaml::Hex64 > Values
Definition: DWARFYAML.h:179
llvm::dwarf::DWARF64
@ DWARF64
Definition: Dwarf.h:92
llvm::DWARFYAML::LoclistEntry::Values
std::vector< yaml::Hex64 > Values
Definition: DWARFYAML.h:189
llvm::DWARFYAML::SegAddrPair::Segment
yaml::Hex64 Segment
Definition: DWARFYAML.h:156
llvm::SetVector
A vector that has set insertion semantics.
Definition: SetVector.h:40
llvm::DWARFYAML::Ranges::Entries
std::vector< RangeEntry > Entries
Definition: DWARFYAML.h:74
llvm::DWARFYAML::Data::DebugStrings
Optional< std::vector< StringRef > > DebugStrings
Definition: DWARFYAML.h:214
llvm::DWARFYAML::PubSection::UnitSize
uint32_t UnitSize
Definition: DWARFYAML.h:88
File
Instrumentation for Order File
Definition: InstrOrderFile.cpp:205
llvm::DWARFYAML::Unit::AbbrevTableID
Optional< uint64_t > AbbrevTableID
Definition: DWARFYAML.h:115
llvm::dwarf::LocationAtom
LocationAtom
Definition: Dwarf.h:137
llvm::DWARFYAML::AddrTableEntry::Version
yaml::Hex16 Version
Definition: DWARFYAML.h:163
llvm::dwarf::DWARF32
@ DWARF32
Definition: Dwarf.h:92
SetVector.h
llvm::Intrinsic::ID
unsigned ID
Definition: TargetTransformInfo.h:38
llvm::DWARFYAML::Unit::Version
uint16_t Version
Definition: DWARFYAML.h:112