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/PDB/Native/GlobalsStream.h"
16 : #include "llvm/DebugInfo/PDB/Native/RawConstants.h"
17 : #include "llvm/DebugInfo/PDB/Native/RawTypes.h"
18 : #include "llvm/DebugInfo/PDB/PDBTypes.h"
19 : #include "llvm/Support/BinaryStreamArray.h"
20 : #include "llvm/Support/Error.h"
21 :
22 : namespace llvm {
23 : namespace pdb {
24 : class DbiStream;
25 : struct GSIHashHeader;
26 : class PDBFile;
27 :
28 6 : class PublicsStream {
29 : public:
30 : PublicsStream(std::unique_ptr<msf::MappedBlockStream> Stream);
31 : ~PublicsStream();
32 : Error reload();
33 :
34 : uint32_t getSymHash() const;
35 : uint16_t getThunkTableSection() const;
36 : uint32_t getThunkTableOffset() const;
37 3 : const GSIHashTable &getPublicsTable() const { return PublicsTable; }
38 : FixedStreamArray<support::ulittle32_t> getAddressMap() const {
39 : return AddressMap;
40 : }
41 : FixedStreamArray<support::ulittle32_t> getThunkMap() const {
42 : return ThunkMap;
43 : }
44 : FixedStreamArray<SectionOffset> getSectionOffsets() const {
45 : return SectionOffsets;
46 : }
47 :
48 : private:
49 : std::unique_ptr<msf::MappedBlockStream> Stream;
50 : GSIHashTable PublicsTable;
51 : FixedStreamArray<support::ulittle32_t> AddressMap;
52 : FixedStreamArray<support::ulittle32_t> ThunkMap;
53 : FixedStreamArray<SectionOffset> SectionOffsets;
54 :
55 : const PublicsStreamHeader *Header;
56 : };
57 : }
58 : }
59 :
60 : #endif
|