9#ifndef LLVM_DEBUGINFO_PDB_NATIVE_PDBFILE_H
10#define LLVM_DEBUGINFO_PDB_NATIVE_PDBFILE_H
43 friend PDBFileBuilder;
76 return ContainerLayout.StreamSizes;
79 return ContainerLayout.StreamMap;
87 std::unique_ptr<msf::MappedBlockStream>
88 createIndexedStream(
uint16_t SN)
const;
90 safelyCreateIndexedStream(
uint32_t StreamIndex)
const;
97 Error parseFileHeaders();
98 Error parseStreamData();
113 bool hasPDBDbiStream()
const;
114 bool hasPDBGlobalsStream();
115 bool hasPDBInfoStream()
const;
116 bool hasPDBIpiStream()
const;
117 bool hasPDBPublicsStream();
118 bool hasPDBSymbolStream();
119 bool hasPDBTpiStream()
const;
120 bool hasPDBStringTable();
121 bool hasPDBInjectedSourceStream();
126 std::string FilePath;
129 std::unique_ptr<BinaryStream> Buffer;
133 std::unique_ptr<GlobalsStream> Globals;
134 std::unique_ptr<InfoStream> Info;
135 std::unique_ptr<DbiStream> Dbi;
136 std::unique_ptr<TpiStream> Tpi;
137 std::unique_ptr<TpiStream> Ipi;
138 std::unique_ptr<object::DXContainer> Dxc;
139 std::unique_ptr<PublicsStream> Publics;
140 std::unique_ptr<SymbolStream>
Symbols;
141 std::unique_ptr<msf::MappedBlockStream> DirectoryStream;
142 std::unique_ptr<msf::MappedBlockStream> StringTableStream;
144 std::unique_ptr<PDBStringTable> Strings;
This file defines the BumpPtrAllocator interface.
static std::optional< TypeSize > getPointerSize(const Value *V, const DataLayout &DL, const TargetLibraryInfo &TLI, const Function *F)
Represent a constant reference to an array (0 or more elements consecutively in memory),...
BinaryStreamRef is to BinaryStream what ArrayRef is to an Array.
An interface for accessing data in a stream-like format, but which discourages copying.
Lightweight error class with error context and mandatory checking.
Tagged union holding either a T or a Error.
Represent a constant reference to a string, i.e.
Describes the layout of a stream in an MSF layout.
MappedBlockStream represents data stored in an MSF file into chunks of a particular size (called the ...
ArrayRef< support::ulittle32_t > getStreamSizes() const
const msf::MSFLayout & getMsfLayout() const
uint32_t getNumDirectoryBlocks() const
uint32_t getBlockSize() const override
uint32_t getUnknown1() const
uint32_t getBlockMapIndex() const
BinaryStreamRef getMsfBuffer() const
PDBFile(StringRef Path, std::unique_ptr< BinaryStream > PdbFileBuffer, BumpPtrAllocator &Allocator)
uint32_t getBlockCount() const override
StringRef getFileDirectory() const
uint32_t getMaxStreamSize() const
ArrayRef< ArrayRef< support::ulittle32_t > > getStreamMap() const
Error setBlockData(uint32_t BlockIndex, uint32_t Offset, ArrayRef< uint8_t > Data) const override
uint64_t getBlockMapOffset() const
uint64_t getFileSize() const
Expected< ArrayRef< uint8_t > > getBlockData(uint32_t BlockIndex, uint32_t NumBytes) const override
uint32_t getFreeBlockMapBlock() const
BumpPtrAllocator & getAllocator()
uint32_t getStreamByteSize(uint32_t StreamIndex) const override
uint32_t getNumStreams() const override
StringRef getFilePath() const
ArrayRef< support::ulittle32_t > getStreamBlockList(uint32_t StreamIndex) const override
uint32_t getNumDirectoryBytes() const
This is an optimization pass for GlobalISel generic memory operations.
BumpPtrAllocatorImpl<> BumpPtrAllocator
The standard BumpPtrAllocator which just uses the default template parameters.