LLVM: include/llvm/DebugInfo/PDB/Native/PDBFile.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9#ifndef LLVM_DEBUGINFO_PDB_NATIVE_PDBFILE_H
10#define LLVM_DEBUGINFO_PDB_NATIVE_PDBFILE_H
11
19
20#include
21
22namespace llvm {
23
25
26namespace msf {
28}
29
30namespace pdb {
40
42 friend PDBFileBuilder;
43
44public:
48
51
54
61
68
70 uint32_t NumBytes) const override;
73
75 return ContainerLayout.StreamSizes;
76 }
78 return ContainerLayout.StreamMap;
79 }
80
83
85
86 std::unique_ptrmsf::MappedBlockStream
87 createIndexedStream(uint16_t SN) const;
89 safelyCreateIndexedStream(uint32_t StreamIndex) const;
91 safelyCreateNamedStream(StringRef Name);
92
95
96 Error parseFileHeaders();
97 Error parseStreamData();
98
108
110
111 bool hasPDBDbiStream() const;
112 bool hasPDBGlobalsStream();
113 bool hasPDBInfoStream() const;
114 bool hasPDBIpiStream() const;
115 bool hasPDBPublicsStream();
116 bool hasPDBSymbolStream();
117 bool hasPDBTpiStream() const;
118 bool hasPDBStringTable();
119 bool hasPDBInjectedSourceStream();
120
122
123private:
124 std::string FilePath;
126
127 std::unique_ptr Buffer;
128
130
131 std::unique_ptr Globals;
132 std::unique_ptr Info;
133 std::unique_ptr Dbi;
134 std::unique_ptr Tpi;
135 std::unique_ptr Ipi;
136 std::unique_ptr Publics;
137 std::unique_ptr Symbols;
138 std::unique_ptrmsf::MappedBlockStream DirectoryStream;
139 std::unique_ptrmsf::MappedBlockStream StringTableStream;
141 std::unique_ptr Strings;
142};
143}
144}
145
146#endif
This file defines the BumpPtrAllocator interface.
Analysis containing CSE Info
static std::optional< TypeSize > getPointerSize(const Value *V, const DataLayout &DL, const TargetLibraryInfo &TLI, const Function *F)
ArrayRef - 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.
StringRef - 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
Definition PDBFile.h:74
const msf::MSFLayout & getMsfLayout() const
Definition PDBFile.h:81
uint32_t getNumDirectoryBlocks() const
uint32_t getBlockSize() const override
uint32_t getUnknown1() const
uint32_t getBlockMapIndex() const
BinaryStreamRef getMsfBuffer() const
Definition PDBFile.h:82
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
Definition PDBFile.h:77
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()
Definition PDBFile.h:109
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.