1317017Sdim//===- PublicsStream.h - PDB Public Symbol Stream -------- ------*- C++ -*-===// 2317017Sdim// 3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4353358Sdim// See https://llvm.org/LICENSE.txt for license information. 5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6317017Sdim// 7317017Sdim//===----------------------------------------------------------------------===// 8317017Sdim 9317017Sdim#ifndef LLVM_DEBUGINFO_PDB_RAW_PUBLICSSTREAM_H 10317017Sdim#define LLVM_DEBUGINFO_PDB_RAW_PUBLICSSTREAM_H 11317017Sdim 12317017Sdim#include "llvm/DebugInfo/CodeView/SymbolRecord.h" 13317017Sdim#include "llvm/DebugInfo/MSF/MappedBlockStream.h" 14327952Sdim#include "llvm/DebugInfo/PDB/Native/GlobalsStream.h" 15317017Sdim#include "llvm/DebugInfo/PDB/Native/RawConstants.h" 16317017Sdim#include "llvm/DebugInfo/PDB/Native/RawTypes.h" 17317017Sdim#include "llvm/DebugInfo/PDB/PDBTypes.h" 18317017Sdim#include "llvm/Support/BinaryStreamArray.h" 19317017Sdim#include "llvm/Support/Error.h" 20317017Sdim 21317017Sdimnamespace llvm { 22317017Sdimnamespace pdb { 23317017Sdimclass DbiStream; 24317017Sdimstruct GSIHashHeader; 25317017Sdimclass PDBFile; 26317017Sdim 27317017Sdimclass PublicsStream { 28317017Sdimpublic: 29327952Sdim PublicsStream(std::unique_ptr<msf::MappedBlockStream> Stream); 30317017Sdim ~PublicsStream(); 31317017Sdim Error reload(); 32317017Sdim 33317017Sdim uint32_t getSymHash() const; 34327952Sdim uint16_t getThunkTableSection() const; 35327952Sdim uint32_t getThunkTableOffset() const; 36327952Sdim const GSIHashTable &getPublicsTable() const { return PublicsTable; } 37317017Sdim FixedStreamArray<support::ulittle32_t> getAddressMap() const { 38317017Sdim return AddressMap; 39317017Sdim } 40317017Sdim FixedStreamArray<support::ulittle32_t> getThunkMap() const { 41317017Sdim return ThunkMap; 42317017Sdim } 43317017Sdim FixedStreamArray<SectionOffset> getSectionOffsets() const { 44317017Sdim return SectionOffsets; 45317017Sdim } 46317017Sdim 47317017Sdimprivate: 48317017Sdim std::unique_ptr<msf::MappedBlockStream> Stream; 49327952Sdim GSIHashTable PublicsTable; 50317017Sdim FixedStreamArray<support::ulittle32_t> AddressMap; 51317017Sdim FixedStreamArray<support::ulittle32_t> ThunkMap; 52317017Sdim FixedStreamArray<SectionOffset> SectionOffsets; 53317017Sdim 54320970Sdim const PublicsStreamHeader *Header; 55317017Sdim}; 56317017Sdim} 57317017Sdim} 58317017Sdim 59317017Sdim#endif 60