Home | History | Annotate | Download | only in Native
      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;
     37   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
     61