1 //===- PublicsStream.h - PDB Public Symbol Stream -------- ------*- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #ifndef LLVM_DEBUGINFO_PDB_NATIVE_PUBLICSSTREAM_H 10 #define LLVM_DEBUGINFO_PDB_NATIVE_PUBLICSSTREAM_H 11 12 #include "llvm/DebugInfo/PDB/Native/GlobalsStream.h" 13 #include "llvm/Support/BinaryStreamArray.h" 14 #include "llvm/Support/Error.h" 15 16 namespace llvm { 17 namespace msf { 18 class MappedBlockStream; 19 } 20 namespace pdb { 21 struct PublicsStreamHeader; 22 struct SectionOffset; 23 24 class PublicsStream { 25 public: 26 PublicsStream(std::unique_ptr<msf::MappedBlockStream> Stream); 27 ~PublicsStream(); 28 Error reload(); 29 30 uint32_t getSymHash() const; 31 uint16_t getThunkTableSection() const; 32 uint32_t getThunkTableOffset() const; getPublicsTable()33 const GSIHashTable &getPublicsTable() const { return PublicsTable; } getAddressMap()34 FixedStreamArray<support::ulittle32_t> getAddressMap() const { 35 return AddressMap; 36 } getThunkMap()37 FixedStreamArray<support::ulittle32_t> getThunkMap() const { 38 return ThunkMap; 39 } getSectionOffsets()40 FixedStreamArray<SectionOffset> getSectionOffsets() const { 41 return SectionOffsets; 42 } 43 44 private: 45 std::unique_ptr<msf::MappedBlockStream> Stream; 46 GSIHashTable PublicsTable; 47 FixedStreamArray<support::ulittle32_t> AddressMap; 48 FixedStreamArray<support::ulittle32_t> ThunkMap; 49 FixedStreamArray<SectionOffset> SectionOffsets; 50 51 const PublicsStreamHeader *Header; 52 }; 53 } 54 } 55 56 #endif 57