1f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot//===- DWARFYAML.h - DWARF YAMLIO implementation ----------------*- C++ -*-===//
2f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot//
3f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot//                     The LLVM Compiler Infrastructure
4f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot//
5f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot// This file is distributed under the University of Illinois Open Source
6f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot// License. See LICENSE.TXT for details.
7f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot//
8f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot//===----------------------------------------------------------------------===//
9f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot///
10f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot/// \file
11f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot/// \brief This file declares classes for handling the YAML representation
12f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot/// of DWARF Debug Info.
13f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot///
14f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot//===----------------------------------------------------------------------===//
15f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
16f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot#ifndef LLVM_OBJECTYAML_DWARFYAML_H
17f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot#define LLVM_OBJECTYAML_DWARFYAML_H
18f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
19f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot#include "llvm/BinaryFormat/Dwarf.h"
20f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot#include "llvm/ObjectYAML/YAML.h"
21f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
22f3014761c955345d6e05491608e73228d014afbandroid-build-team Robotnamespace llvm {
23f3014761c955345d6e05491608e73228d014afbandroid-build-team Robotnamespace DWARFYAML {
24f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
25f3014761c955345d6e05491608e73228d014afbandroid-build-team Robotstruct InitialLength {
26f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  uint32_t TotalLength;
27f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  uint64_t TotalLength64;
28f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
29f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  bool isDWARF64() const { return TotalLength == UINT32_MAX; }
30f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
31f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  uint64_t getLength() const {
32f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot    return isDWARF64() ? TotalLength64 : TotalLength;
33f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  }
34f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
35f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  void setLength(uint64_t Len) {
36f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot    if (Len >= (uint64_t)UINT32_MAX) {
37f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot      TotalLength64 = Len;
38f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot      TotalLength = UINT32_MAX;
39f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot    } else {
40f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot      TotalLength = Len;
41f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot    }
42f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  }
43f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot};
44f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
45f3014761c955345d6e05491608e73228d014afbandroid-build-team Robotstruct AttributeAbbrev {
46f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  llvm::dwarf::Attribute Attribute;
47f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  llvm::dwarf::Form Form;
48f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  llvm::yaml::Hex64 Value; // Some DWARF5 attributes have values
49f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot};
50f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
51f3014761c955345d6e05491608e73228d014afbandroid-build-team Robotstruct Abbrev {
52f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  llvm::yaml::Hex32 Code;
53f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  llvm::dwarf::Tag Tag;
54f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  llvm::dwarf::Constants Children;
55f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  std::vector<AttributeAbbrev> Attributes;
56f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot};
57f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
58f3014761c955345d6e05491608e73228d014afbandroid-build-team Robotstruct ARangeDescriptor {
59f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  llvm::yaml::Hex64 Address;
60f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  uint64_t Length;
61f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot};
62f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
63f3014761c955345d6e05491608e73228d014afbandroid-build-team Robotstruct ARange {
64f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  InitialLength Length;
65f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  uint16_t Version;
66f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  uint32_t CuOffset;
67f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  uint8_t AddrSize;
68f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  uint8_t SegSize;
69f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  std::vector<ARangeDescriptor> Descriptors;
70f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot};
71f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
72f3014761c955345d6e05491608e73228d014afbandroid-build-team Robotstruct PubEntry {
73f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  llvm::yaml::Hex32 DieOffset;
74f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  llvm::yaml::Hex8 Descriptor;
75f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  StringRef Name;
76f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot};
77f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
78f3014761c955345d6e05491608e73228d014afbandroid-build-team Robotstruct PubSection {
79f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  PubSection() : IsGNUStyle(false) {}
80f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
81f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  InitialLength Length;
82f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  uint16_t Version;
83f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  uint32_t UnitOffset;
84f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  uint32_t UnitSize;
85f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  bool IsGNUStyle;
86f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  std::vector<PubEntry> Entries;
87f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot};
88f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
89f3014761c955345d6e05491608e73228d014afbandroid-build-team Robotstruct FormValue {
90f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  llvm::yaml::Hex64 Value;
91f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  StringRef CStr;
92f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  std::vector<llvm::yaml::Hex8> BlockData;
93f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot};
94f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
95f3014761c955345d6e05491608e73228d014afbandroid-build-team Robotstruct Entry {
96f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  llvm::yaml::Hex32 AbbrCode;
97f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  std::vector<FormValue> Values;
98f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot};
99f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
100f3014761c955345d6e05491608e73228d014afbandroid-build-team Robotstruct Unit {
101f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  InitialLength Length;
102f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  uint16_t Version;
103f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  llvm::dwarf::UnitType Type; // Added in DWARF 5
104f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  uint32_t AbbrOffset;
105f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  uint8_t AddrSize;
106f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  std::vector<Entry> Entries;
107f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot};
108f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
109f3014761c955345d6e05491608e73228d014afbandroid-build-team Robotstruct File {
110f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  StringRef Name;
111f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  uint64_t DirIdx;
112f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  uint64_t ModTime;
113f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  uint64_t Length;
114f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot};
115f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
116f3014761c955345d6e05491608e73228d014afbandroid-build-team Robotstruct LineTableOpcode {
117f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  dwarf::LineNumberOps Opcode;
118f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  uint64_t ExtLen;
119f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  dwarf::LineNumberExtendedOps SubOpcode;
120f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  uint64_t Data;
121f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  int64_t SData;
122f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  File FileEntry;
123f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  std::vector<llvm::yaml::Hex8> UnknownOpcodeData;
124f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  std::vector<llvm::yaml::Hex64> StandardOpcodeData;
125f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot};
126f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
127f3014761c955345d6e05491608e73228d014afbandroid-build-team Robotstruct LineTable {
128f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  InitialLength Length;
129f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  uint16_t Version;
130f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  uint64_t PrologueLength;
131f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  uint8_t MinInstLength;
132f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  uint8_t MaxOpsPerInst;
133f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  uint8_t DefaultIsStmt;
134f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  uint8_t LineBase;
135f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  uint8_t LineRange;
136f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  uint8_t OpcodeBase;
137f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  std::vector<uint8_t> StandardOpcodeLengths;
138f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  std::vector<StringRef> IncludeDirs;
139f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  std::vector<File> Files;
140f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  std::vector<LineTableOpcode> Opcodes;
141f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot};
142f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
143f3014761c955345d6e05491608e73228d014afbandroid-build-team Robotstruct Data {
144f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  bool IsLittleEndian;
145f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  std::vector<Abbrev> AbbrevDecls;
146f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  std::vector<StringRef> DebugStrings;
147f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  std::vector<ARange> ARanges;
148f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  PubSection PubNames;
149f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  PubSection PubTypes;
150f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
151f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  PubSection GNUPubNames;
152f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  PubSection GNUPubTypes;
153f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
154f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  std::vector<Unit> CompileUnits;
155f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
156f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  std::vector<LineTable> DebugLines;
157f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
158f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  bool isEmpty() const;
159f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot};
160f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
161f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot} // namespace llvm::DWARFYAML
162f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot} // namespace llvm
163f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
164f3014761c955345d6e05491608e73228d014afbandroid-build-team RobotLLVM_YAML_IS_FLOW_SEQUENCE_VECTOR(uint8_t)
165f3014761c955345d6e05491608e73228d014afbandroid-build-team RobotLLVM_YAML_IS_SEQUENCE_VECTOR(llvm::yaml::Hex64)
166f3014761c955345d6e05491608e73228d014afbandroid-build-team RobotLLVM_YAML_IS_SEQUENCE_VECTOR(llvm::StringRef)
167f3014761c955345d6e05491608e73228d014afbandroid-build-team RobotLLVM_YAML_IS_SEQUENCE_VECTOR(llvm::yaml::Hex8)
168f3014761c955345d6e05491608e73228d014afbandroid-build-team RobotLLVM_YAML_IS_SEQUENCE_VECTOR(llvm::DWARFYAML::AttributeAbbrev)
169f3014761c955345d6e05491608e73228d014afbandroid-build-team RobotLLVM_YAML_IS_SEQUENCE_VECTOR(llvm::DWARFYAML::Abbrev)
170f3014761c955345d6e05491608e73228d014afbandroid-build-team RobotLLVM_YAML_IS_SEQUENCE_VECTOR(llvm::DWARFYAML::ARangeDescriptor)
171f3014761c955345d6e05491608e73228d014afbandroid-build-team RobotLLVM_YAML_IS_SEQUENCE_VECTOR(llvm::DWARFYAML::ARange)
172f3014761c955345d6e05491608e73228d014afbandroid-build-team RobotLLVM_YAML_IS_SEQUENCE_VECTOR(llvm::DWARFYAML::PubEntry)
173f3014761c955345d6e05491608e73228d014afbandroid-build-team RobotLLVM_YAML_IS_SEQUENCE_VECTOR(llvm::DWARFYAML::Unit)
174f3014761c955345d6e05491608e73228d014afbandroid-build-team RobotLLVM_YAML_IS_SEQUENCE_VECTOR(llvm::DWARFYAML::FormValue)
175f3014761c955345d6e05491608e73228d014afbandroid-build-team RobotLLVM_YAML_IS_SEQUENCE_VECTOR(llvm::DWARFYAML::Entry)
176f3014761c955345d6e05491608e73228d014afbandroid-build-team RobotLLVM_YAML_IS_SEQUENCE_VECTOR(llvm::DWARFYAML::File)
177f3014761c955345d6e05491608e73228d014afbandroid-build-team RobotLLVM_YAML_IS_SEQUENCE_VECTOR(llvm::DWARFYAML::LineTable)
178f3014761c955345d6e05491608e73228d014afbandroid-build-team RobotLLVM_YAML_IS_SEQUENCE_VECTOR(llvm::DWARFYAML::LineTableOpcode)
179f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
180f3014761c955345d6e05491608e73228d014afbandroid-build-team Robotnamespace llvm {
181f3014761c955345d6e05491608e73228d014afbandroid-build-team Robotnamespace yaml {
182f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
183f3014761c955345d6e05491608e73228d014afbandroid-build-team Robottemplate <> struct MappingTraits<DWARFYAML::Data> {
184f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  static void mapping(IO &IO, DWARFYAML::Data &DWARF);
185f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot};
186f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
187f3014761c955345d6e05491608e73228d014afbandroid-build-team Robottemplate <> struct MappingTraits<DWARFYAML::Abbrev> {
188f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  static void mapping(IO &IO, DWARFYAML::Abbrev &Abbrev);
189f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot};
190f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
191f3014761c955345d6e05491608e73228d014afbandroid-build-team Robottemplate <> struct MappingTraits<DWARFYAML::AttributeAbbrev> {
192f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  static void mapping(IO &IO, DWARFYAML::AttributeAbbrev &AttAbbrev);
193f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot};
194f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
195f3014761c955345d6e05491608e73228d014afbandroid-build-team Robottemplate <> struct MappingTraits<DWARFYAML::ARangeDescriptor> {
196f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  static void mapping(IO &IO, DWARFYAML::ARangeDescriptor &Descriptor);
197f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot};
198f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
199f3014761c955345d6e05491608e73228d014afbandroid-build-team Robottemplate <> struct MappingTraits<DWARFYAML::ARange> {
200f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  static void mapping(IO &IO, DWARFYAML::ARange &Range);
201f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot};
202f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
203f3014761c955345d6e05491608e73228d014afbandroid-build-team Robottemplate <> struct MappingTraits<DWARFYAML::PubEntry> {
204f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  static void mapping(IO &IO, DWARFYAML::PubEntry &Entry);
205f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot};
206f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
207f3014761c955345d6e05491608e73228d014afbandroid-build-team Robottemplate <> struct MappingTraits<DWARFYAML::PubSection> {
208f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  static void mapping(IO &IO, DWARFYAML::PubSection &Section);
209f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot};
210f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
211f3014761c955345d6e05491608e73228d014afbandroid-build-team Robottemplate <> struct MappingTraits<DWARFYAML::Unit> {
212f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  static void mapping(IO &IO, DWARFYAML::Unit &Unit);
213f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot};
214f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
215f3014761c955345d6e05491608e73228d014afbandroid-build-team Robottemplate <> struct MappingTraits<DWARFYAML::Entry> {
216f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  static void mapping(IO &IO, DWARFYAML::Entry &Entry);
217f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot};
218f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
219f3014761c955345d6e05491608e73228d014afbandroid-build-team Robottemplate <> struct MappingTraits<DWARFYAML::FormValue> {
220f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  static void mapping(IO &IO, DWARFYAML::FormValue &FormValue);
221f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot};
222f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
223f3014761c955345d6e05491608e73228d014afbandroid-build-team Robottemplate <> struct MappingTraits<DWARFYAML::File> {
224f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  static void mapping(IO &IO, DWARFYAML::File &File);
225f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot};
226f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
227f3014761c955345d6e05491608e73228d014afbandroid-build-team Robottemplate <> struct MappingTraits<DWARFYAML::LineTableOpcode> {
228f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  static void mapping(IO &IO, DWARFYAML::LineTableOpcode &LineTableOpcode);
229f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot};
230f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
231f3014761c955345d6e05491608e73228d014afbandroid-build-team Robottemplate <> struct MappingTraits<DWARFYAML::LineTable> {
232f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  static void mapping(IO &IO, DWARFYAML::LineTable &LineTable);
233f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot};
234f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
235f3014761c955345d6e05491608e73228d014afbandroid-build-team Robottemplate <> struct MappingTraits<DWARFYAML::InitialLength> {
236f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  static void mapping(IO &IO, DWARFYAML::InitialLength &DWARF);
237f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot};
238f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
239f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot#define HANDLE_DW_TAG(unused, name, unused2, unused3)                          \
240f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  io.enumCase(value, "DW_TAG_" #name, dwarf::DW_TAG_##name);
241f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
242f3014761c955345d6e05491608e73228d014afbandroid-build-team Robottemplate <> struct ScalarEnumerationTraits<dwarf::Tag> {
243f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  static void enumeration(IO &io, dwarf::Tag &value) {
244f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot#include "llvm/BinaryFormat/Dwarf.def"
245f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot    io.enumFallback<Hex16>(value);
246f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  }
247f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot};
248f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
249f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot#define HANDLE_DW_LNS(unused, name)                                            \
250f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  io.enumCase(value, "DW_LNS_" #name, dwarf::DW_LNS_##name);
251f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
252f3014761c955345d6e05491608e73228d014afbandroid-build-team Robottemplate <> struct ScalarEnumerationTraits<dwarf::LineNumberOps> {
253f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  static void enumeration(IO &io, dwarf::LineNumberOps &value) {
254f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot#include "llvm/BinaryFormat/Dwarf.def"
255f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot    io.enumFallback<Hex8>(value);
256f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  }
257f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot};
258f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
259f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot#define HANDLE_DW_LNE(unused, name)                                            \
260f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  io.enumCase(value, "DW_LNE_" #name, dwarf::DW_LNE_##name);
261f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
262f3014761c955345d6e05491608e73228d014afbandroid-build-team Robottemplate <> struct ScalarEnumerationTraits<dwarf::LineNumberExtendedOps> {
263f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  static void enumeration(IO &io, dwarf::LineNumberExtendedOps &value) {
264f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot#include "llvm/BinaryFormat/Dwarf.def"
265f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot    io.enumFallback<Hex16>(value);
266f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  }
267f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot};
268f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
269f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot#define HANDLE_DW_AT(unused, name, unused2, unused3)                           \
270f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  io.enumCase(value, "DW_AT_" #name, dwarf::DW_AT_##name);
271f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
272f3014761c955345d6e05491608e73228d014afbandroid-build-team Robottemplate <> struct ScalarEnumerationTraits<dwarf::Attribute> {
273f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  static void enumeration(IO &io, dwarf::Attribute &value) {
274f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot#include "llvm/BinaryFormat/Dwarf.def"
275f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot    io.enumFallback<Hex16>(value);
276f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  }
277f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot};
278f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
279f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot#define HANDLE_DW_FORM(unused, name, unused2, unused3)                         \
280f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  io.enumCase(value, "DW_FORM_" #name, dwarf::DW_FORM_##name);
281f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
282f3014761c955345d6e05491608e73228d014afbandroid-build-team Robottemplate <> struct ScalarEnumerationTraits<dwarf::Form> {
283f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  static void enumeration(IO &io, dwarf::Form &value) {
284f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot#include "llvm/BinaryFormat/Dwarf.def"
285f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot    io.enumFallback<Hex16>(value);
286f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  }
287f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot};
288f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
289f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot#define HANDLE_DW_UT(unused, name)                                             \
290f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  io.enumCase(value, "DW_UT_" #name, dwarf::DW_UT_##name);
291f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
292f3014761c955345d6e05491608e73228d014afbandroid-build-team Robottemplate <> struct ScalarEnumerationTraits<dwarf::UnitType> {
293f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  static void enumeration(IO &io, dwarf::UnitType &value) {
294f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot#include "llvm/BinaryFormat/Dwarf.def"
295f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot    io.enumFallback<Hex8>(value);
296f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  }
297f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot};
298f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
299f3014761c955345d6e05491608e73228d014afbandroid-build-team Robottemplate <> struct ScalarEnumerationTraits<dwarf::Constants> {
300f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  static void enumeration(IO &io, dwarf::Constants &value) {
301f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot    io.enumCase(value, "DW_CHILDREN_no", dwarf::DW_CHILDREN_no);
302f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot    io.enumCase(value, "DW_CHILDREN_yes", dwarf::DW_CHILDREN_yes);
303f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot    io.enumFallback<Hex16>(value);
304f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  }
305f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot};
306f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
307f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot} // namespace llvm::yaml
308f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot} // namespace llvm
309f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
310f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot#endif
311