Training courses
Kernel and Embedded Linux
Bootlin training courses
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
//===- PdbYAML.h ---------------------------------------------- *- C++ --*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #ifndef LLVM_TOOLS_LLVMPDBDUMP_PDBYAML_H #define LLVM_TOOLS_LLVMPDBDUMP_PDBYAML_H #include "OutputStyle.h" #include "llvm/ADT/Optional.h" #include "llvm/DebugInfo/CodeView/SymbolRecord.h" #include "llvm/DebugInfo/CodeView/TypeRecord.h" #include "llvm/DebugInfo/MSF/MSFCommon.h" #include "llvm/DebugInfo/PDB/Native/PDBFile.h" #include "llvm/DebugInfo/PDB/Native/RawConstants.h" #include "llvm/DebugInfo/PDB/PDBTypes.h" #include "llvm/ObjectYAML/CodeViewYAMLDebugSections.h" #include "llvm/ObjectYAML/CodeViewYAMLSymbols.h" #include "llvm/ObjectYAML/CodeViewYAMLTypes.h" #include "llvm/Support/Endian.h" #include "llvm/Support/YAMLTraits.h" #include <vector> namespace llvm { namespace codeview { class DebugStringTableSubsection; } namespace pdb { namespace yaml { struct SerializationContext; struct MSFHeaders { msf::SuperBlock SuperBlock; uint32_t NumDirectoryBlocks = 0; std::vector<uint32_t> DirectoryBlocks; uint32_t NumStreams = 0; uint32_t FileSize = 0; }; struct StreamBlockList { std::vector<uint32_t> Blocks; }; struct NamedStreamMapping { StringRef StreamName; uint32_t StreamNumber; }; struct PdbInfoStream { PdbRaw_ImplVer Version = PdbImplVC70; uint32_t Signature = 0; uint32_t Age = 1; codeview::GUID Guid; std::vector<PdbRaw_FeatureSig> Features; std::vector<NamedStreamMapping> NamedStreams; }; struct PdbModiStream { uint32_t Signature; std::vector<CodeViewYAML::SymbolRecord> Symbols; }; struct PdbDbiModuleInfo { StringRef Obj; StringRef Mod; std::vector<StringRef> SourceFiles; std::vector<CodeViewYAML::YAMLDebugSubsection> Subsections; Optional<PdbModiStream> Modi; }; struct PdbDbiStream { PdbRaw_DbiVer VerHeader = PdbDbiV70; uint32_t Age = 1; uint16_t BuildNumber = 0; uint32_t PdbDllVersion = 0; uint16_t PdbDllRbld = 0; uint16_t Flags = 1; PDB_Machine MachineType = PDB_Machine::x86; std::vector<PdbDbiModuleInfo> ModInfos; }; struct PdbTpiStream { PdbRaw_TpiVer Version = PdbTpiV80; std::vector<CodeViewYAML::LeafRecord> Records; }; struct PdbObject { explicit PdbObject(BumpPtrAllocator &Allocator) : Allocator(Allocator) {} Optional<MSFHeaders> Headers; Optional<std::vector<uint32_t>> StreamSizes; Optional<std::vector<StreamBlockList>> StreamMap; Optional<PdbInfoStream> PdbStream; Optional<PdbDbiStream> DbiStream; Optional<PdbTpiStream> TpiStream; Optional<PdbTpiStream> IpiStream; Optional<std::vector<StringRef>> StringTable; BumpPtrAllocator &Allocator; }; } } } LLVM_YAML_DECLARE_MAPPING_TRAITS(pdb::yaml::PdbObject) LLVM_YAML_DECLARE_MAPPING_TRAITS(pdb::yaml::MSFHeaders) LLVM_YAML_DECLARE_MAPPING_TRAITS(msf::SuperBlock) LLVM_YAML_DECLARE_MAPPING_TRAITS(pdb::yaml::StreamBlockList) LLVM_YAML_DECLARE_MAPPING_TRAITS(pdb::yaml::PdbInfoStream) LLVM_YAML_DECLARE_MAPPING_TRAITS(pdb::yaml::PdbDbiStream) LLVM_YAML_DECLARE_MAPPING_TRAITS(pdb::yaml::PdbTpiStream) LLVM_YAML_DECLARE_MAPPING_TRAITS(pdb::yaml::NamedStreamMapping) LLVM_YAML_DECLARE_MAPPING_TRAITS(pdb::yaml::PdbModiStream) LLVM_YAML_DECLARE_MAPPING_TRAITS(pdb::yaml::PdbDbiModuleInfo) #endif // LLVM_TOOLS_LLVMPDBDUMP_PDBYAML_H