Line data Source code
1 : //===- PublicsStream.h - PDB Public Symbol Stream -------- ------*- C++ -*-===//
2 : //
3 : // The LLVM Compiler Infrastructure
4 : //
5 : // This file is distributed under the University of Illinois Open Source
6 : // License. See LICENSE.TXT for details.
7 : //
8 : //===----------------------------------------------------------------------===//
9 :
10 : #ifndef LLVM_DEBUGINFO_PDB_RAW_PUBLICSSTREAM_H
11 : #define LLVM_DEBUGINFO_PDB_RAW_PUBLICSSTREAM_H
12 :
13 : #include "llvm/DebugInfo/CodeView/SymbolRecord.h"
14 : #include "llvm/DebugInfo/MSF/MappedBlockStream.h"
15 : #include "llvm/DebugInfo/MSF/StreamArray.h"
16 : #include "llvm/DebugInfo/PDB/PDBTypes.h"
17 : #include "llvm/DebugInfo/PDB/Raw/RawConstants.h"
18 : #include "llvm/DebugInfo/PDB/Raw/RawTypes.h"
19 :
20 : #include "llvm/Support/Error.h"
21 :
22 : namespace llvm {
23 : namespace pdb {
24 : class DbiStream;
25 : struct GSIHashHeader;
26 : class PDBFile;
27 :
28 4 : class PublicsStream {
29 : struct HeaderInfo;
30 :
31 : public:
32 : PublicsStream(PDBFile &File, std::unique_ptr<msf::MappedBlockStream> Stream);
33 : ~PublicsStream();
34 : Error reload();
35 :
36 : uint32_t getSymHash() const;
37 : uint32_t getAddrMap() const;
38 : uint32_t getNumBuckets() const { return NumBuckets; }
39 : iterator_range<codeview::CVSymbolArray::Iterator>
40 : getSymbols(bool *HadError) const;
41 : msf::FixedStreamArray<support::ulittle32_t> getHashBuckets() const {
42 : return HashBuckets;
43 : }
44 : msf::FixedStreamArray<support::ulittle32_t> getAddressMap() const {
45 : return AddressMap;
46 : }
47 : msf::FixedStreamArray<support::ulittle32_t> getThunkMap() const {
48 : return ThunkMap;
49 : }
50 : msf::FixedStreamArray<SectionOffset> getSectionOffsets() const {
51 : return SectionOffsets;
52 : }
53 :
54 : Error commit();
55 :
56 : private:
57 : PDBFile &Pdb;
58 :
59 : std::unique_ptr<msf::MappedBlockStream> Stream;
60 : uint32_t NumBuckets = 0;
61 : ArrayRef<uint8_t> Bitmap;
62 : msf::FixedStreamArray<PSHashRecord> HashRecords;
63 : msf::FixedStreamArray<support::ulittle32_t> HashBuckets;
64 : msf::FixedStreamArray<support::ulittle32_t> AddressMap;
65 : msf::FixedStreamArray<support::ulittle32_t> ThunkMap;
66 : msf::FixedStreamArray<SectionOffset> SectionOffsets;
67 :
68 : const HeaderInfo *Header;
69 : const GSIHashHeader *HashHdr;
70 : };
71 : }
72 : }
73 :
74 : #endif
|