LLVM 23.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/DenseMap.h"
19#include "llvm/ADT/SetVector.h"
20#include "llvm/ADT/StringRef.h"
25#include <cstdint>
26#include <optional>
27#include <unordered_map>
28#include <vector>
29
30namespace llvm {
31namespace DWARFYAML {
32
36 llvm::yaml::Hex64 Value; // Some DWARF5 attributes have values
37};
38
39struct Abbrev {
40 std::optional<yaml::Hex64> Code;
43 std::vector<AttributeAbbrev> Attributes;
44};
45
47 std::optional<uint64_t> ID;
48 std::vector<Abbrev> Table;
49};
50
52 llvm::yaml::Hex64 Address;
53 yaml::Hex64 Length;
54};
55
56struct ARange {
58 std::optional<yaml::Hex64> Length;
60 yaml::Hex64 CuOffset;
61 std::optional<yaml::Hex8> AddrSize;
62 yaml::Hex8 SegSize;
63 std::vector<ARangeDescriptor> Descriptors;
64};
65
66/// Class that describes a range list entry, or a base address selection entry
67/// within a range list in the .debug_ranges section.
68struct RangeEntry {
69 llvm::yaml::Hex64 LowOffset;
70 llvm::yaml::Hex64 HighOffset;
71};
72
73/// Class that describes a single range list inside the .debug_ranges section.
74struct Ranges {
75 std::optional<llvm::yaml::Hex64> Offset;
76 std::optional<llvm::yaml::Hex8> AddrSize;
77 std::vector<RangeEntry> Entries;
78};
79
80struct PubEntry {
81 llvm::yaml::Hex32 DieOffset;
82 llvm::yaml::Hex8 Descriptor;
84};
85
94
95struct FormValue {
96 llvm::yaml::Hex64 Value;
98 std::vector<llvm::yaml::Hex8> BlockData;
99};
100
101struct Entry {
102 llvm::yaml::Hex32 AbbrCode;
103 std::vector<FormValue> Values;
104};
105
106/// Class that contains helpful context information when mapping YAML into DWARF
107/// data structures.
109 bool IsGNUPubSec = false;
110};
111
112struct Unit {
114 std::optional<yaml::Hex64> Length;
116 std::optional<uint8_t> AddrSize;
117 llvm::dwarf::UnitType Type; // Added in DWARF 5
118 std::optional<uint64_t> AbbrevTableID;
119 std::optional<yaml::Hex64> AbbrOffset;
120 yaml::Hex64 TypeSignatureOrDwoID; // For type or split units
121 yaml::Hex64 TypeOffset; // For type units
122
123 std::vector<Entry> Entries;
124};
125
130
132 yaml::Hex64 Code;
134 std::vector<IdxForm> Indices;
135};
136
138 yaml::Hex32 NameStrp;
139 yaml::Hex64 Code;
140 std::vector<yaml::Hex64> Values;
141};
142
144 std::vector<DebugNameAbbreviation> Abbrevs;
145 std::vector<DebugNameEntry> Entries;
146};
147
154
159
162 std::optional<uint64_t> ExtLen;
165 int64_t SData;
167 std::vector<llvm::yaml::Hex8> UnknownOpcodeData;
168 std::vector<llvm::yaml::Hex64> StandardOpcodeData;
169};
170
171struct LineTable {
173 std::optional<uint64_t> Length;
177 std::optional<uint64_t> PrologueLength;
183 std::optional<uint8_t> OpcodeBase;
184 std::optional<std::vector<uint8_t>> StandardOpcodeLengths;
185
186 // For DWARF<=v4
187 std::vector<StringRef> IncludeDirs;
188 std::vector<File> Files;
189
190 // For DWARF>=v5
192 std::vector<LnctForm> DirectoryEntryFormat;
194 std::vector<std::vector<FormValue>> Directories;
196 std::vector<LnctForm> FileNameEntryFormat;
198 std::vector<std::vector<FormValue>> FileNames;
199
200 std::vector<LineTableOpcode> Opcodes;
201};
202
204 yaml::Hex64 Segment;
205 yaml::Hex64 Address;
206};
207
210 std::optional<yaml::Hex64> Length;
211 yaml::Hex16 Version;
212 std::optional<yaml::Hex8> AddrSize;
213 yaml::Hex8 SegSelectorSize;
214 std::vector<SegAddrPair> SegAddrPairs;
215};
216
219 std::optional<yaml::Hex64> Length;
220 yaml::Hex16 Version;
221 yaml::Hex16 Padding;
222 std::vector<yaml::Hex64> Offsets;
223};
224
227 std::vector<yaml::Hex64> Values;
228};
229
232 std::vector<yaml::Hex64> Values;
233};
234
237 std::vector<yaml::Hex64> Values;
238 std::optional<yaml::Hex64> DescriptionsLength;
239 std::vector<DWARFOperation> Descriptions;
240};
241
242template <typename EntryType> struct ListEntries {
243 std::optional<std::vector<EntryType>> Entries;
244 std::optional<yaml::BinaryRef> Content;
245};
246
247template <typename EntryType> struct ListTable {
249 std::optional<yaml::Hex64> Length;
250 yaml::Hex16 Version;
251 std::optional<yaml::Hex8> AddrSize;
252 yaml::Hex8 SegSelectorSize;
253 std::optional<uint32_t> OffsetEntryCount;
254 std::optional<std::vector<yaml::Hex64>> Offsets;
255 std::vector<ListEntries<EntryType>> Lists;
256};
257
258struct Data {
261 std::vector<AbbrevTable> DebugAbbrev;
262 std::optional<std::vector<StringRef>> DebugStrings;
263 std::optional<std::vector<StringOffsetsTable>> DebugStrOffsets;
264 std::optional<std::vector<ARange>> DebugAranges;
265 std::optional<std::vector<Ranges>> DebugRanges;
266 std::optional<std::vector<AddrTableEntry>> DebugAddr;
267 std::optional<PubSection> PubNames;
268 std::optional<PubSection> PubTypes;
269
270 std::optional<PubSection> GNUPubNames;
271 std::optional<PubSection> GNUPubTypes;
272
273 std::vector<Unit> Units;
274
275 std::vector<LineTable> DebugLines;
276 std::optional<std::vector<ListTable<RnglistEntry>>> DebugRnglists;
277 std::optional<std::vector<ListTable<LoclistEntry>>> DebugLoclists;
278 std::optional<DebugNamesSection> DebugNames;
279
280 LLVM_ABI bool isEmpty() const;
281
283
290
291private:
292 mutable DenseMap<uint64_t, AbbrevTableInfo> AbbrevTableInfoMap;
293 // getAbbrevTableContentByIndex returns StringRefs into the values. DenseMap
294 // cannot be used.
295 mutable std::unordered_map<uint64_t, std::string> AbbrevTableContents;
296};
297
298} // end namespace DWARFYAML
299} // end namespace llvm
300
311LLVM_YAML_IS_SEQUENCE_VECTOR(std::vector<llvm::DWARFYAML::FormValue>)
334
335namespace llvm {
336namespace yaml {
337
338template <> struct MappingTraits<DWARFYAML::Data> {
339 LLVM_ABI static void mapping(IO &IO, DWARFYAML::Data &DWARF);
340};
341
342template <> struct MappingTraits<DWARFYAML::AbbrevTable> {
343 LLVM_ABI static void mapping(IO &IO, DWARFYAML::AbbrevTable &AbbrevTable);
344};
345
346template <> struct MappingTraits<DWARFYAML::Abbrev> {
347 LLVM_ABI static void mapping(IO &IO, DWARFYAML::Abbrev &Abbrev);
348};
349
350template <> struct MappingTraits<DWARFYAML::AttributeAbbrev> {
351 LLVM_ABI static void mapping(IO &IO, DWARFYAML::AttributeAbbrev &AttAbbrev);
352};
353
354template <> struct MappingTraits<DWARFYAML::ARangeDescriptor> {
355 LLVM_ABI static void mapping(IO &IO, DWARFYAML::ARangeDescriptor &Descriptor);
356};
357
358template <> struct MappingTraits<DWARFYAML::ARange> {
359 LLVM_ABI static void mapping(IO &IO, DWARFYAML::ARange &ARange);
360};
361
362template <> struct MappingTraits<DWARFYAML::RangeEntry> {
363 LLVM_ABI static void mapping(IO &IO, DWARFYAML::RangeEntry &Entry);
364};
365
366template <> struct MappingTraits<DWARFYAML::Ranges> {
367 LLVM_ABI static void mapping(IO &IO, DWARFYAML::Ranges &Ranges);
368};
369
370template <> struct MappingTraits<DWARFYAML::PubEntry> {
371 LLVM_ABI static void mapping(IO &IO, DWARFYAML::PubEntry &Entry);
372};
373
374template <> struct MappingTraits<DWARFYAML::PubSection> {
375 LLVM_ABI static void mapping(IO &IO, DWARFYAML::PubSection &Section);
376};
377
378template <> struct MappingTraits<DWARFYAML::Unit> {
379 LLVM_ABI static void mapping(IO &IO, DWARFYAML::Unit &Unit);
380};
381
382template <> struct MappingTraits<DWARFYAML::DebugNamesSection> {
383 LLVM_ABI static void mapping(IO &IO, DWARFYAML::DebugNamesSection &);
384};
385template <> struct MappingTraits<DWARFYAML::DebugNameEntry> {
386 LLVM_ABI static void mapping(IO &IO, DWARFYAML::DebugNameEntry &);
387};
388template <> struct MappingTraits<DWARFYAML::DebugNameAbbreviation> {
389 LLVM_ABI static void mapping(IO &IO, DWARFYAML::DebugNameAbbreviation &);
390};
391template <> struct MappingTraits<DWARFYAML::IdxForm> {
392 LLVM_ABI static void mapping(IO &IO, DWARFYAML::IdxForm &);
393};
394
395template <> struct MappingTraits<DWARFYAML::Entry> {
396 LLVM_ABI static void mapping(IO &IO, DWARFYAML::Entry &Entry);
397};
398
399template <> struct MappingTraits<DWARFYAML::FormValue> {
400 LLVM_ABI static void mapping(IO &IO, DWARFYAML::FormValue &FormValue);
401};
402
403template <> struct MappingTraits<DWARFYAML::File> {
404 LLVM_ABI static void mapping(IO &IO, DWARFYAML::File &File);
405};
406
407template <> struct MappingTraits<DWARFYAML::LnctForm> {
408 LLVM_ABI static void mapping(IO &IO, DWARFYAML::LnctForm &);
409};
410
411template <> struct MappingTraits<DWARFYAML::LineTableOpcode> {
412 LLVM_ABI static void mapping(IO &IO,
413 DWARFYAML::LineTableOpcode &LineTableOpcode);
414};
415
416template <> struct MappingTraits<DWARFYAML::LineTable> {
417 LLVM_ABI static void mapping(IO &IO, DWARFYAML::LineTable &LineTable);
418};
419
420template <> struct MappingTraits<DWARFYAML::SegAddrPair> {
421 LLVM_ABI static void mapping(IO &IO, DWARFYAML::SegAddrPair &SegAddrPair);
422};
423
424template <> struct MappingTraits<DWARFYAML::DWARFOperation> {
425 LLVM_ABI static void mapping(IO &IO,
426 DWARFYAML::DWARFOperation &DWARFOperation);
427};
428
429template <typename EntryType>
430struct MappingTraits<DWARFYAML::ListTable<EntryType>> {
431 static void mapping(IO &IO, DWARFYAML::ListTable<EntryType> &ListTable);
432};
433
434template <typename EntryType>
435struct MappingTraits<DWARFYAML::ListEntries<EntryType>> {
436 static void mapping(IO &IO, DWARFYAML::ListEntries<EntryType> &ListEntries);
437 static std::string validate(IO &IO,
438 DWARFYAML::ListEntries<EntryType> &ListEntries);
439};
440
441template <> struct MappingTraits<DWARFYAML::RnglistEntry> {
442 LLVM_ABI static void mapping(IO &IO, DWARFYAML::RnglistEntry &RnglistEntry);
443};
444
445template <> struct MappingTraits<DWARFYAML::LoclistEntry> {
446 LLVM_ABI static void mapping(IO &IO, DWARFYAML::LoclistEntry &LoclistEntry);
447};
448
449template <> struct MappingTraits<DWARFYAML::AddrTableEntry> {
450 LLVM_ABI static void mapping(IO &IO, DWARFYAML::AddrTableEntry &AddrTable);
451};
452
453template <> struct MappingTraits<DWARFYAML::StringOffsetsTable> {
454 LLVM_ABI static void mapping(IO &IO,
455 DWARFYAML::StringOffsetsTable &StrOffsetsTable);
456};
457
458template <> struct ScalarEnumerationTraits<dwarf::DwarfFormat> {
459 static void enumeration(IO &IO, dwarf::DwarfFormat &Format) {
460 IO.enumCase(Format, "DWARF32", dwarf::DWARF32);
461 IO.enumCase(Format, "DWARF64", dwarf::DWARF64);
462 }
463};
464
465#define HANDLE_DW_TAG(unused, name, unused2, unused3, unused4) \
466 io.enumCase(value, "DW_TAG_" #name, dwarf::DW_TAG_##name);
467
468template <> struct ScalarEnumerationTraits<dwarf::Tag> {
469 static void enumeration(IO &io, dwarf::Tag &value) {
470#include "llvm/BinaryFormat/Dwarf.def"
471 io.enumFallback<Hex16>(value);
472 }
473};
474
475#define HANDLE_DW_LNS(unused, name) \
476 io.enumCase(value, "DW_LNS_" #name, dwarf::DW_LNS_##name);
477
478template <> struct ScalarEnumerationTraits<dwarf::LineNumberOps> {
479 static void enumeration(IO &io, dwarf::LineNumberOps &value) {
480#include "llvm/BinaryFormat/Dwarf.def"
481 io.enumFallback<Hex8>(value);
482 }
483};
484
485#define HANDLE_DW_LNE(unused, name) \
486 io.enumCase(value, "DW_LNE_" #name, dwarf::DW_LNE_##name);
487
488template <> struct ScalarEnumerationTraits<dwarf::LineNumberExtendedOps> {
489 static void enumeration(IO &io, dwarf::LineNumberExtendedOps &value) {
490#include "llvm/BinaryFormat/Dwarf.def"
491 io.enumFallback<Hex16>(value);
492 }
493};
494
495#define HANDLE_DW_LNCT(unused, name) \
496 io.enumCase(value, "DW_LNCT_" #name, dwarf::DW_LNCT_##name);
497
498template <> struct ScalarEnumerationTraits<dwarf::LineNumberEntryFormat> {
499 static void enumeration(IO &io, dwarf::LineNumberEntryFormat &value) {
500#include "llvm/BinaryFormat/Dwarf.def"
501 io.enumFallback<Hex16>(value);
502 }
503};
504
505#define HANDLE_DW_AT(unused, name, unused2, unused3) \
506 io.enumCase(value, "DW_AT_" #name, dwarf::DW_AT_##name);
507
508template <> struct ScalarEnumerationTraits<dwarf::Attribute> {
509 static void enumeration(IO &io, dwarf::Attribute &value) {
510#include "llvm/BinaryFormat/Dwarf.def"
511 io.enumFallback<Hex16>(value);
512 }
513};
514
515#define HANDLE_DW_FORM(unused, name, unused2, unused3) \
516 io.enumCase(value, "DW_FORM_" #name, dwarf::DW_FORM_##name);
517
518template <> struct ScalarEnumerationTraits<dwarf::Form> {
519 static void enumeration(IO &io, dwarf::Form &value) {
520#include "llvm/BinaryFormat/Dwarf.def"
521 io.enumFallback<Hex16>(value);
522 }
523};
524
525#define HANDLE_DW_IDX(unused, name) \
526 io.enumCase(value, "DW_IDX_" #name, dwarf::DW_IDX_##name);
527
528template <> struct ScalarEnumerationTraits<dwarf::Index> {
529 static void enumeration(IO &io, dwarf::Index &value) {
530#include "llvm/BinaryFormat/Dwarf.def"
531 io.enumFallback<Hex16>(value);
532 }
533};
534
535#define HANDLE_DW_UT(unused, name) \
536 io.enumCase(value, "DW_UT_" #name, dwarf::DW_UT_##name);
537
538template <> struct ScalarEnumerationTraits<dwarf::UnitType> {
539 static void enumeration(IO &io, dwarf::UnitType &value) {
540#include "llvm/BinaryFormat/Dwarf.def"
541 io.enumFallback<Hex8>(value);
542 }
543};
544
545template <> struct ScalarEnumerationTraits<dwarf::Constants> {
546 static void enumeration(IO &io, dwarf::Constants &value) {
547 io.enumCase(value, "DW_CHILDREN_no", dwarf::DW_CHILDREN_no);
548 io.enumCase(value, "DW_CHILDREN_yes", dwarf::DW_CHILDREN_yes);
549 io.enumFallback<Hex16>(value);
550 }
551};
552
553#define HANDLE_DW_RLE(unused, name) \
554 io.enumCase(value, "DW_RLE_" #name, dwarf::DW_RLE_##name);
555
556template <> struct ScalarEnumerationTraits<dwarf::RnglistEntries> {
557 static void enumeration(IO &io, dwarf::RnglistEntries &value) {
558#include "llvm/BinaryFormat/Dwarf.def"
559 }
560};
561
562#define HANDLE_DW_LLE(unused, name) \
563 io.enumCase(value, "DW_LLE_" #name, dwarf::DW_LLE_##name);
564
565template <> struct ScalarEnumerationTraits<dwarf::LoclistEntries> {
566 static void enumeration(IO &io, dwarf::LoclistEntries &value) {
567#include "llvm/BinaryFormat/Dwarf.def"
568 }
569};
570
571#define HANDLE_DW_OP(id, name, operands, arity, version, vendor) \
572 io.enumCase(value, "DW_OP_" #name, dwarf::DW_OP_##name);
573
574template <> struct ScalarEnumerationTraits<dwarf::LocationAtom> {
575 static void enumeration(IO &io, dwarf::LocationAtom &value) {
576#include "llvm/BinaryFormat/Dwarf.def"
577 io.enumFallback<yaml::Hex8>(value);
578 }
579};
580
581} // end namespace yaml
582} // end namespace llvm
583
584#endif // LLVM_OBJECTYAML_DWARFYAML_H
#define LLVM_ABI
Definition Compiler.h:215
This file defines the DenseMap class.
This file contains constants used for implementing Dwarf debug support.
This file implements a set that has insertion order iteration characteristics.
#define LLVM_YAML_IS_SEQUENCE_VECTOR(type)
Utility for declaring that a std::vector of a particular type should be considered a YAML sequence.
Tagged union holding either a T or a Error.
Definition Error.h:485
A vector that has set insertion semantics.
Definition SetVector.h:57
Represent a constant reference to a string, i.e.
Definition StringRef.h:56
@ Entry
Definition COFF.h:862
unsigned ID
LLVM IR allows to use arbitrary numbers as calling convention identifiers.
Definition CallingConv.h:24
void validate(const Triple &TT, const FeatureBitset &FeatureBits)
Attribute
Attributes.
Definition Dwarf.h:125
LineNumberEntryFormat
Definition Dwarf.h:814
LineNumberOps
Line Number Standard Opcode Encodings.
Definition Dwarf.h:801
LoclistEntries
DWARF v5 loc list entry encoding values.
Definition Dwarf.h:853
UnitType
Constants for unit types in DWARF v5.
Definition Dwarf.h:902
DwarfFormat
Constants that define the DWARF format as 32 or 64 bit.
Definition Dwarf.h:93
@ DWARF64
Definition Dwarf.h:93
@ DWARF32
Definition Dwarf.h:93
RnglistEntries
DWARF v5 range list entry encoding values.
Definition Dwarf.h:847
LineNumberExtendedOps
Line Number Extended Opcode Encodings.
Definition Dwarf.h:807
@ DW_CHILDREN_no
Definition Dwarf.h:871
@ DW_CHILDREN_yes
Definition Dwarf.h:872
This is an optimization pass for GlobalISel generic memory operations.
FunctionAddr VTableAddr uintptr_t uintptr_t Data
Definition InstrProf.h:221
std::optional< yaml::Hex64 > Length
Definition DWARFYAML.h:58
dwarf::DwarfFormat Format
Definition DWARFYAML.h:57
std::vector< ARangeDescriptor > Descriptors
Definition DWARFYAML.h:63
std::optional< yaml::Hex8 > AddrSize
Definition DWARFYAML.h:61
std::vector< Abbrev > Table
Definition DWARFYAML.h:48
std::optional< uint64_t > ID
Definition DWARFYAML.h:47
llvm::dwarf::Tag Tag
Definition DWARFYAML.h:41
std::vector< AttributeAbbrev > Attributes
Definition DWARFYAML.h:43
std::optional< yaml::Hex64 > Code
Definition DWARFYAML.h:40
llvm::dwarf::Constants Children
Definition DWARFYAML.h:42
std::optional< yaml::Hex64 > Length
Definition DWARFYAML.h:210
std::optional< yaml::Hex8 > AddrSize
Definition DWARFYAML.h:212
dwarf::DwarfFormat Format
Definition DWARFYAML.h:209
std::vector< SegAddrPair > SegAddrPairs
Definition DWARFYAML.h:214
llvm::dwarf::Attribute Attribute
Definition DWARFYAML.h:34
Class that contains helpful context information when mapping YAML into DWARF data structures.
Definition DWARFYAML.h:108
std::vector< yaml::Hex64 > Values
Definition DWARFYAML.h:227
dwarf::LocationAtom Operator
Definition DWARFYAML.h:226
std::vector< Unit > Units
Definition DWARFYAML.h:273
std::vector< LineTable > DebugLines
Definition DWARFYAML.h:275
std::optional< std::vector< AddrTableEntry > > DebugAddr
Definition DWARFYAML.h:266
std::optional< std::vector< Ranges > > DebugRanges
Definition DWARFYAML.h:265
std::optional< std::vector< ListTable< LoclistEntry > > > DebugLoclists
Definition DWARFYAML.h:277
std::vector< AbbrevTable > DebugAbbrev
Definition DWARFYAML.h:261
LLVM_ABI Expected< AbbrevTableInfo > getAbbrevTableInfoByID(uint64_t ID) const
Definition DWARFYAML.cpp:61
std::optional< PubSection > GNUPubNames
Definition DWARFYAML.h:270
std::optional< std::vector< ARange > > DebugAranges
Definition DWARFYAML.h:264
LLVM_ABI StringRef getAbbrevTableContentByIndex(uint64_t Index) const
std::optional< PubSection > GNUPubTypes
Definition DWARFYAML.h:271
LLVM_ABI SetVector< StringRef > getNonEmptySectionNames() const
Definition DWARFYAML.cpp:25
std::optional< std::vector< StringOffsetsTable > > DebugStrOffsets
Definition DWARFYAML.h:263
std::optional< std::vector< StringRef > > DebugStrings
Definition DWARFYAML.h:262
std::optional< std::vector< ListTable< RnglistEntry > > > DebugRnglists
Definition DWARFYAML.h:276
std::optional< PubSection > PubNames
Definition DWARFYAML.h:267
std::optional< DebugNamesSection > DebugNames
Definition DWARFYAML.h:278
std::optional< PubSection > PubTypes
Definition DWARFYAML.h:268
LLVM_ABI bool isEmpty() const
Definition DWARFYAML.cpp:21
std::vector< yaml::Hex64 > Values
Definition DWARFYAML.h:140
std::vector< DebugNameAbbreviation > Abbrevs
Definition DWARFYAML.h:144
std::vector< DebugNameEntry > Entries
Definition DWARFYAML.h:145
std::vector< FormValue > Values
Definition DWARFYAML.h:103
llvm::yaml::Hex32 AbbrCode
Definition DWARFYAML.h:102
std::vector< llvm::yaml::Hex8 > BlockData
Definition DWARFYAML.h:98
llvm::yaml::Hex64 Value
Definition DWARFYAML.h:96
dwarf::LineNumberOps Opcode
Definition DWARFYAML.h:161
std::optional< uint64_t > ExtLen
Definition DWARFYAML.h:162
std::vector< llvm::yaml::Hex64 > StandardOpcodeData
Definition DWARFYAML.h:168
dwarf::LineNumberExtendedOps SubOpcode
Definition DWARFYAML.h:163
std::vector< llvm::yaml::Hex8 > UnknownOpcodeData
Definition DWARFYAML.h:167
std::vector< std::vector< FormValue > > FileNames
Definition DWARFYAML.h:198
std::optional< uint64_t > Length
Definition DWARFYAML.h:173
std::optional< uint8_t > OpcodeBase
Definition DWARFYAML.h:183
std::vector< LineTableOpcode > Opcodes
Definition DWARFYAML.h:200
std::optional< uint64_t > PrologueLength
Definition DWARFYAML.h:177
dwarf::DwarfFormat Format
Definition DWARFYAML.h:172
std::vector< File > Files
Definition DWARFYAML.h:188
std::vector< StringRef > IncludeDirs
Definition DWARFYAML.h:187
std::vector< LnctForm > DirectoryEntryFormat
Definition DWARFYAML.h:192
std::vector< LnctForm > FileNameEntryFormat
Definition DWARFYAML.h:196
std::optional< std::vector< uint8_t > > StandardOpcodeLengths
Definition DWARFYAML.h:184
std::vector< std::vector< FormValue > > Directories
Definition DWARFYAML.h:194
std::optional< std::vector< EntryType > > Entries
Definition DWARFYAML.h:243
std::optional< yaml::BinaryRef > Content
Definition DWARFYAML.h:244
std::optional< yaml::Hex8 > AddrSize
Definition DWARFYAML.h:251
std::optional< std::vector< yaml::Hex64 > > Offsets
Definition DWARFYAML.h:254
dwarf::DwarfFormat Format
Definition DWARFYAML.h:248
std::vector< ListEntries< EntryType > > Lists
Definition DWARFYAML.h:255
std::optional< uint32_t > OffsetEntryCount
Definition DWARFYAML.h:253
std::optional< yaml::Hex64 > Length
Definition DWARFYAML.h:249
dwarf::LineNumberEntryFormat ContentType
Definition DWARFYAML.h:156
std::vector< yaml::Hex64 > Values
Definition DWARFYAML.h:237
std::optional< yaml::Hex64 > DescriptionsLength
Definition DWARFYAML.h:238
dwarf::LoclistEntries Operator
Definition DWARFYAML.h:236
std::vector< DWARFOperation > Descriptions
Definition DWARFYAML.h:239
llvm::yaml::Hex8 Descriptor
Definition DWARFYAML.h:82
llvm::yaml::Hex32 DieOffset
Definition DWARFYAML.h:81
dwarf::DwarfFormat Format
Definition DWARFYAML.h:87
std::vector< PubEntry > Entries
Definition DWARFYAML.h:92
Class that describes a range list entry, or a base address selection entry within a range list in the...
Definition DWARFYAML.h:68
llvm::yaml::Hex64 HighOffset
Definition DWARFYAML.h:70
llvm::yaml::Hex64 LowOffset
Definition DWARFYAML.h:69
Class that describes a single range list inside the .debug_ranges section.
Definition DWARFYAML.h:74
std::vector< RangeEntry > Entries
Definition DWARFYAML.h:77
std::optional< llvm::yaml::Hex64 > Offset
Definition DWARFYAML.h:75
std::optional< llvm::yaml::Hex8 > AddrSize
Definition DWARFYAML.h:76
std::vector< yaml::Hex64 > Values
Definition DWARFYAML.h:232
dwarf::RnglistEntries Operator
Definition DWARFYAML.h:231
std::optional< yaml::Hex64 > Length
Definition DWARFYAML.h:219
std::vector< yaml::Hex64 > Offsets
Definition DWARFYAML.h:222
std::optional< uint64_t > AbbrevTableID
Definition DWARFYAML.h:118
yaml::Hex64 TypeOffset
Definition DWARFYAML.h:121
dwarf::DwarfFormat Format
Definition DWARFYAML.h:113
std::optional< yaml::Hex64 > Length
Definition DWARFYAML.h:114
yaml::Hex64 TypeSignatureOrDwoID
Definition DWARFYAML.h:120
std::optional< uint8_t > AddrSize
Definition DWARFYAML.h:116
llvm::dwarf::UnitType Type
Definition DWARFYAML.h:117
std::vector< Entry > Entries
Definition DWARFYAML.h:123
std::optional< yaml::Hex64 > AbbrOffset
Definition DWARFYAML.h:119
This class should be specialized by any type that needs to be converted to/from a YAML mapping.
Definition YAMLTraits.h:63
This class should be specialized by any integral type that converts to/from a YAML scalar where there...
Definition YAMLTraits.h:108