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