16b6b8c4fSAdrian McCarthy //===- SymbolStream.cpp - PDB Symbol Stream Access ------------------------===// 26b6b8c4fSAdrian McCarthy // 32946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 42946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 52946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 66b6b8c4fSAdrian McCarthy // 76b6b8c4fSAdrian McCarthy //===----------------------------------------------------------------------===// 86b6b8c4fSAdrian McCarthy 96b6b8c4fSAdrian McCarthy #include "llvm/DebugInfo/PDB/Native/SymbolStream.h" 106b6b8c4fSAdrian McCarthy 116b6b8c4fSAdrian McCarthy #include "llvm/DebugInfo/MSF/MappedBlockStream.h" 126b6b8c4fSAdrian McCarthy #include "llvm/Support/Endian.h" 136b6b8c4fSAdrian McCarthy 146b6b8c4fSAdrian McCarthy using namespace llvm; 156b6b8c4fSAdrian McCarthy using namespace llvm::msf; 166b6b8c4fSAdrian McCarthy using namespace llvm::support; 176b6b8c4fSAdrian McCarthy using namespace llvm::pdb; 186b6b8c4fSAdrian McCarthy SymbolStream(std::unique_ptr<MappedBlockStream> Stream)196b6b8c4fSAdrian McCarthySymbolStream::SymbolStream(std::unique_ptr<MappedBlockStream> Stream) 206b6b8c4fSAdrian McCarthy : Stream(std::move(Stream)) {} 216b6b8c4fSAdrian McCarthy 22*3a3cb929SKazu Hirata SymbolStream::~SymbolStream() = default; 236b6b8c4fSAdrian McCarthy reload()246b6b8c4fSAdrian McCarthyError SymbolStream::reload() { 25120faca4SZachary Turner BinaryStreamReader Reader(*Stream); 266b6b8c4fSAdrian McCarthy 276b6b8c4fSAdrian McCarthy if (auto EC = Reader.readArray(SymbolRecords, Stream->getLength())) 286b6b8c4fSAdrian McCarthy return EC; 296b6b8c4fSAdrian McCarthy 306b6b8c4fSAdrian McCarthy return Error::success(); 316b6b8c4fSAdrian McCarthy } 326b6b8c4fSAdrian McCarthy 336b6b8c4fSAdrian McCarthy iterator_range<codeview::CVSymbolArray::Iterator> getSymbols(bool * HadError) const346b6b8c4fSAdrian McCarthySymbolStream::getSymbols(bool *HadError) const { 356b6b8c4fSAdrian McCarthy return llvm::make_range(SymbolRecords.begin(HadError), SymbolRecords.end()); 366b6b8c4fSAdrian McCarthy } 376b6b8c4fSAdrian McCarthy commit()386b6b8c4fSAdrian McCarthyError SymbolStream::commit() { return Error::success(); } 3999c6982bSZachary Turner readRecord(uint32_t Offset) const4099c6982bSZachary Turnercodeview::CVSymbol SymbolStream::readRecord(uint32_t Offset) const { 4199c6982bSZachary Turner return *SymbolRecords.at(Offset); 4299c6982bSZachary Turner } 43