10b57cec5SDimitry Andric //===- SymbolStream.cpp - PDB Symbol Stream Access ------------------------===// 20b57cec5SDimitry Andric // 30b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 40b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 50b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 60b57cec5SDimitry Andric // 70b57cec5SDimitry Andric //===----------------------------------------------------------------------===// 80b57cec5SDimitry Andric 90b57cec5SDimitry Andric #include "llvm/DebugInfo/PDB/Native/SymbolStream.h" 100b57cec5SDimitry Andric 110b57cec5SDimitry Andric #include "llvm/DebugInfo/MSF/MappedBlockStream.h" 120b57cec5SDimitry Andric 130b57cec5SDimitry Andric using namespace llvm; 140b57cec5SDimitry Andric using namespace llvm::msf; 150b57cec5SDimitry Andric using namespace llvm::support; 160b57cec5SDimitry Andric using namespace llvm::pdb; 170b57cec5SDimitry Andric 180b57cec5SDimitry Andric SymbolStream::SymbolStream(std::unique_ptr<MappedBlockStream> Stream) 190b57cec5SDimitry Andric : Stream(std::move(Stream)) {} 200b57cec5SDimitry Andric 21*81ad6265SDimitry Andric SymbolStream::~SymbolStream() = default; 220b57cec5SDimitry Andric 230b57cec5SDimitry Andric Error SymbolStream::reload() { 240b57cec5SDimitry Andric BinaryStreamReader Reader(*Stream); 250b57cec5SDimitry Andric 260b57cec5SDimitry Andric if (auto EC = Reader.readArray(SymbolRecords, Stream->getLength())) 270b57cec5SDimitry Andric return EC; 280b57cec5SDimitry Andric 290b57cec5SDimitry Andric return Error::success(); 300b57cec5SDimitry Andric } 310b57cec5SDimitry Andric 320b57cec5SDimitry Andric iterator_range<codeview::CVSymbolArray::Iterator> 330b57cec5SDimitry Andric SymbolStream::getSymbols(bool *HadError) const { 340b57cec5SDimitry Andric return llvm::make_range(SymbolRecords.begin(HadError), SymbolRecords.end()); 350b57cec5SDimitry Andric } 360b57cec5SDimitry Andric 370b57cec5SDimitry Andric Error SymbolStream::commit() { return Error::success(); } 380b57cec5SDimitry Andric 390b57cec5SDimitry Andric codeview::CVSymbol SymbolStream::readRecord(uint32_t Offset) const { 400b57cec5SDimitry Andric return *SymbolRecords.at(Offset); 410b57cec5SDimitry Andric } 42