126 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			126 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C++
		
	
	
	
| //===- 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
 |