• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 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;
getPublicsTable()37   const GSIHashTable &getPublicsTable() const { return PublicsTable; }
getAddressMap()38   FixedStreamArray<support::ulittle32_t> getAddressMap() const {
39     return AddressMap;
40   }
getThunkMap()41   FixedStreamArray<support::ulittle32_t> getThunkMap() const {
42     return ThunkMap;
43   }
getSectionOffsets()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
61