Mercurial > hg > CbC > CbC_llvm
view tools/llvm-pdbutil/PdbYaml.h @ 171:66f3bfe93da9
git version 2c4ca6832fa6b306ee6a7010bfb80a3f2596f824
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 25 May 2020 11:07:02 +0900 |
parents | |
children |
line wrap: on
line source
//===- PdbYAML.h ---------------------------------------------- *- C++ --*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #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 PdbPublicsStream { std::vector<CodeViewYAML::SymbolRecord> PubSyms; }; 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<PdbPublicsStream> PublicsStream; 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::PdbPublicsStream) 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