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 16namespace llvm { 17namespace msf { 18class MappedBlockStream; 19} 20namespace pdb { 21struct PublicsStreamHeader; 22struct SectionOffset; 23 24class PublicsStream { 25public: 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; 33 const GSIHashTable &getPublicsTable() const { return PublicsTable; } 34 FixedStreamArray<support::ulittle32_t> getAddressMap() const { 35 return AddressMap; 36 } 37 FixedStreamArray<support::ulittle32_t> getThunkMap() const { 38 return ThunkMap; 39 } 40 FixedStreamArray<SectionOffset> getSectionOffsets() const { 41 return SectionOffsets; 42 } 43 44private: 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