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