From d5d37dcf8329b7c5774aadc60c4474c8e4a4e55f Mon Sep 17 00:00:00 2001 From: Zachary Turner Date: Wed, 25 May 2016 20:37:03 +0000 Subject: [codeview] Move StreamInterface and StreamReader to libcodeview. We have need to reuse this functionality, including making additional generic stream types that are smarter about how and when they copy memory versus referencing the original memory. So all of these structures belong in the common library rather than being pdb specific. llvm-svn: 270751 --- llvm/lib/DebugInfo/CodeView/ByteStream.cpp | 72 +++++++++++++++++++++++++++ llvm/lib/DebugInfo/CodeView/CMakeLists.txt | 3 ++ llvm/lib/DebugInfo/CodeView/CodeViewError.cpp | 65 ++++++++++++++++++++++++ llvm/lib/DebugInfo/CodeView/StreamReader.cpp | 51 +++++++++++++++++++ llvm/lib/DebugInfo/PDB/CMakeLists.txt | 2 - llvm/lib/DebugInfo/PDB/Raw/ByteStream.cpp | 72 --------------------------- llvm/lib/DebugInfo/PDB/Raw/DbiStream.cpp | 6 +-- llvm/lib/DebugInfo/PDB/Raw/InfoStream.cpp | 4 +- llvm/lib/DebugInfo/PDB/Raw/ModStream.cpp | 5 +- llvm/lib/DebugInfo/PDB/Raw/NameHashTable.cpp | 5 +- llvm/lib/DebugInfo/PDB/Raw/NameMap.cpp | 4 +- llvm/lib/DebugInfo/PDB/Raw/PublicsStream.cpp | 4 +- llvm/lib/DebugInfo/PDB/Raw/StreamReader.cpp | 50 ------------------- llvm/lib/DebugInfo/PDB/Raw/SymbolStream.cpp | 5 +- llvm/lib/DebugInfo/PDB/Raw/TpiStream.cpp | 6 +-- 15 files changed, 210 insertions(+), 144 deletions(-) create mode 100644 llvm/lib/DebugInfo/CodeView/ByteStream.cpp create mode 100644 llvm/lib/DebugInfo/CodeView/CodeViewError.cpp create mode 100644 llvm/lib/DebugInfo/CodeView/StreamReader.cpp delete mode 100644 llvm/lib/DebugInfo/PDB/Raw/ByteStream.cpp delete mode 100644 llvm/lib/DebugInfo/PDB/Raw/StreamReader.cpp (limited to 'llvm/lib/DebugInfo') diff --git a/llvm/lib/DebugInfo/CodeView/ByteStream.cpp b/llvm/lib/DebugInfo/CodeView/ByteStream.cpp new file mode 100644 index 00000000000..879343afbfd --- /dev/null +++ b/llvm/lib/DebugInfo/CodeView/ByteStream.cpp @@ -0,0 +1,72 @@ +//===- ByteStream.cpp - Reads stream data from a byte sequence ------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "llvm/DebugInfo/CodeView/ByteStream.h" +#include "llvm/DebugInfo/CodeView/CodeViewError.h" +#include "llvm/DebugInfo/CodeView/StreamReader.h" +#include + +using namespace llvm; +using namespace llvm::codeview; + +ByteStream::ByteStream() {} + +ByteStream::ByteStream(MutableArrayRef Bytes) { initialize(Bytes); } + +ByteStream::ByteStream(uint32_t Length) { initialize(Length); } + +ByteStream::~ByteStream() { reset(); } + +void ByteStream::reset() { + Ownership.reset(); + Data = MutableArrayRef(); +} + +void ByteStream::initialize(MutableArrayRef Bytes) { + reset(); + Data = Bytes; +} + +void ByteStream::initialize(uint32_t Length) { + reset(); + if (Length > 0) + Data = MutableArrayRef(new uint8_t[Length], Length); + Ownership.reset(Data.data()); +} + +Error ByteStream::initialize(StreamReader &Reader, uint32_t Length) { + initialize(Length); + auto EC = Reader.readBytes(Data); + if (EC) + reset(); + return EC; +} + +Error ByteStream::readBytes(uint32_t Offset, + MutableArrayRef Buffer) const { + if (Data.size() < Buffer.size() + Offset) + return make_error(cv_error_code::insufficient_buffer); + ::memcpy(Buffer.data(), Data.data() + Offset, Buffer.size()); + return Error::success(); +} + +Error ByteStream::getArrayRef(uint32_t Offset, ArrayRef &Buffer, + uint32_t Length) const { + if (Data.size() < Length + Offset) + return make_error(cv_error_code::insufficient_buffer); + Buffer = Data.slice(Offset, Length); + return Error::success(); +} + +uint32_t ByteStream::getLength() const { return Data.size(); } + +StringRef ByteStream::str() const { + const char *CharData = reinterpret_cast(Data.data()); + return StringRef(CharData, Data.size()); +} diff --git a/llvm/lib/DebugInfo/CodeView/CMakeLists.txt b/llvm/lib/DebugInfo/CodeView/CMakeLists.txt index e0c7119dd91..8e7628dcf05 100644 --- a/llvm/lib/DebugInfo/CodeView/CMakeLists.txt +++ b/llvm/lib/DebugInfo/CodeView/CMakeLists.txt @@ -1,10 +1,13 @@ add_llvm_library(LLVMDebugInfoCodeView + ByteStream.cpp + CodeViewError.cpp FieldListRecordBuilder.cpp Line.cpp ListRecordBuilder.cpp MemoryTypeTableBuilder.cpp MethodListRecordBuilder.cpp RecordSerialization.cpp + StreamReader.cpp SymbolDumper.cpp TypeDumper.cpp TypeRecord.cpp diff --git a/llvm/lib/DebugInfo/CodeView/CodeViewError.cpp b/llvm/lib/DebugInfo/CodeView/CodeViewError.cpp new file mode 100644 index 00000000000..4db6b2941a6 --- /dev/null +++ b/llvm/lib/DebugInfo/CodeView/CodeViewError.cpp @@ -0,0 +1,65 @@ +//===- CodeViewError.cpp - Error extensions for CodeView --------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "llvm/DebugInfo/CodeView/CodeViewError.h" +#include "llvm/Support/ErrorHandling.h" +#include "llvm/Support/ManagedStatic.h" + +using namespace llvm; +using namespace llvm::codeview; + +namespace { +// FIXME: This class is only here to support the transition to llvm::Error. It +// will be removed once this transition is complete. Clients should prefer to +// deal with the Error value directly, rather than converting to error_code. +class CodeViewErrorCategory : public std::error_category { +public: + const char *name() const LLVM_NOEXCEPT override { return "llvm.codeview"; } + + std::string message(int Condition) const override { + switch (static_cast(Condition)) { + case cv_error_code::unspecified: + return "An unknown error has occurred."; + case cv_error_code::insufficient_buffer: + return "The buffer is not large enough to read the requested number of " + "bytes."; + case cv_error_code::corrupt_record: + return "The CodeView record is corrupted."; + } + llvm_unreachable("Unrecognized cv_error_code"); + } +}; +} // end anonymous namespace + +static ManagedStatic Category; + +char CodeViewError::ID = 0; + +CodeViewError::CodeViewError(cv_error_code C) : CodeViewError(C, "") {} + +CodeViewError::CodeViewError(const std::string &Context) + : CodeViewError(cv_error_code::unspecified, Context) {} + +CodeViewError::CodeViewError(cv_error_code C, const std::string &Context) + : Code(C) { + ErrMsg = "CodeView Error: "; + std::error_code EC = convertToErrorCode(); + if (Code != cv_error_code::unspecified) + ErrMsg += EC.message() + " "; + if (!Context.empty()) + ErrMsg += Context; +} + +void CodeViewError::log(raw_ostream &OS) const { OS << ErrMsg << "\n"; } + +const std::string &CodeViewError::getErrorMessage() const { return ErrMsg; } + +std::error_code CodeViewError::convertToErrorCode() const { + return std::error_code(static_cast(Code), *Category); +} diff --git a/llvm/lib/DebugInfo/CodeView/StreamReader.cpp b/llvm/lib/DebugInfo/CodeView/StreamReader.cpp new file mode 100644 index 00000000000..8a2926bc883 --- /dev/null +++ b/llvm/lib/DebugInfo/CodeView/StreamReader.cpp @@ -0,0 +1,51 @@ +//===- StreamReader.cpp - Reads bytes and objects from a stream -----------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "llvm/DebugInfo/CodeView/StreamReader.h" + +#include "llvm/DebugInfo/CodeView/CodeViewError.h" + +using namespace llvm; +using namespace llvm::codeview; + +StreamReader::StreamReader(const StreamInterface &S) : Stream(S), Offset(0) {} + +Error StreamReader::readBytes(MutableArrayRef Buffer) { + if (auto EC = Stream.readBytes(Offset, Buffer)) + return EC; + Offset += Buffer.size(); + return Error::success(); +} + +Error StreamReader::readInteger(uint32_t &Dest) { + support::ulittle32_t P; + if (auto EC = readObject(&P)) + return EC; + Dest = P; + return Error::success(); +} + +Error StreamReader::readZeroString(std::string &Dest) { + Dest.clear(); + char C; + do { + if (auto EC = readObject(&C)) + return EC; + if (C != '\0') + Dest.push_back(C); + } while (C != '\0'); + return Error::success(); +} + +Error StreamReader::getArrayRef(ArrayRef &Array, uint32_t Length) { + if (auto EC = Stream.getArrayRef(Offset, Array, Length)) + return EC; + Offset += Length; + return Error::success(); +} diff --git a/llvm/lib/DebugInfo/PDB/CMakeLists.txt b/llvm/lib/DebugInfo/PDB/CMakeLists.txt index b5053c51f3a..113a2ad0ec4 100644 --- a/llvm/lib/DebugInfo/PDB/CMakeLists.txt +++ b/llvm/lib/DebugInfo/PDB/CMakeLists.txt @@ -28,7 +28,6 @@ if(HAVE_DIA_SDK) endif() add_pdb_impl_folder(Raw - Raw/ByteStream.cpp Raw/DbiStream.cpp Raw/InfoStream.cpp Raw/MappedBlockStream.cpp @@ -40,7 +39,6 @@ add_pdb_impl_folder(Raw Raw/PublicsStream.cpp Raw/RawError.cpp Raw/RawSession.cpp - Raw/StreamReader.cpp Raw/SymbolStream.cpp Raw/TpiStream.cpp) diff --git a/llvm/lib/DebugInfo/PDB/Raw/ByteStream.cpp b/llvm/lib/DebugInfo/PDB/Raw/ByteStream.cpp deleted file mode 100644 index 09b51d96871..00000000000 --- a/llvm/lib/DebugInfo/PDB/Raw/ByteStream.cpp +++ /dev/null @@ -1,72 +0,0 @@ -//===- ByteStream.cpp - Reads stream data from a byte sequence ------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#include "llvm/DebugInfo/PDB/Raw/ByteStream.h" -#include "llvm/DebugInfo/PDB/Raw/RawError.h" -#include "llvm/DebugInfo/PDB/Raw/StreamReader.h" -#include - -using namespace llvm; -using namespace llvm::pdb; - -ByteStream::ByteStream() {} - -ByteStream::ByteStream(MutableArrayRef Bytes) { initialize(Bytes); } - -ByteStream::ByteStream(uint32_t Length) { initialize(Length); } - -ByteStream::~ByteStream() { reset(); } - -void ByteStream::reset() { - Ownership.reset(); - Data = MutableArrayRef(); -} - -void ByteStream::initialize(MutableArrayRef Bytes) { - reset(); - Data = Bytes; -} - -void ByteStream::initialize(uint32_t Length) { - reset(); - if (Length > 0) - Data = MutableArrayRef(new uint8_t[Length], Length); - Ownership.reset(Data.data()); -} - -Error ByteStream::initialize(StreamReader &Reader, uint32_t Length) { - initialize(Length); - auto EC = Reader.readBytes(Data); - if (EC) - reset(); - return EC; -} - -Error ByteStream::readBytes(uint32_t Offset, - MutableArrayRef Buffer) const { - if (Data.size() < Buffer.size() + Offset) - return make_error(raw_error_code::insufficient_buffer); - ::memcpy(Buffer.data(), Data.data() + Offset, Buffer.size()); - return Error::success(); -} - -Error ByteStream::getArrayRef(uint32_t Offset, ArrayRef &Buffer, - uint32_t Length) const { - if (Data.size() < Length + Offset) - return make_error(raw_error_code::insufficient_buffer); - Buffer = Data.slice(Offset, Length); - return Error::success(); -} - -uint32_t ByteStream::getLength() const { return Data.size(); } - -StringRef ByteStream::str() const { - const char *CharData = reinterpret_cast(Data.data()); - return StringRef(CharData, Data.size()); -} diff --git a/llvm/lib/DebugInfo/PDB/Raw/DbiStream.cpp b/llvm/lib/DebugInfo/PDB/Raw/DbiStream.cpp index 6b5cd212ed9..078384ebae3 100644 --- a/llvm/lib/DebugInfo/PDB/Raw/DbiStream.cpp +++ b/llvm/lib/DebugInfo/PDB/Raw/DbiStream.cpp @@ -9,13 +9,13 @@ #include "llvm/DebugInfo/PDB/Raw/DbiStream.h" +#include "llvm/DebugInfo/CodeView/StreamReader.h" #include "llvm/DebugInfo/PDB/Raw/InfoStream.h" #include "llvm/DebugInfo/PDB/Raw/ModInfo.h" #include "llvm/DebugInfo/PDB/Raw/NameHashTable.h" #include "llvm/DebugInfo/PDB/Raw/PDBFile.h" #include "llvm/DebugInfo/PDB/Raw/RawConstants.h" #include "llvm/DebugInfo/PDB/Raw/RawError.h" -#include "llvm/DebugInfo/PDB/Raw/StreamReader.h" using namespace llvm; using namespace llvm::pdb; @@ -80,7 +80,7 @@ DbiStream::DbiStream(PDBFile &File) : Pdb(File), Stream(StreamDBI, File) { DbiStream::~DbiStream() {} Error DbiStream::reload() { - StreamReader Reader(Stream); + codeview::StreamReader Reader(Stream); Header.reset(new HeaderInfo()); @@ -170,7 +170,7 @@ Error DbiStream::reload() { return make_error(raw_error_code::corrupt_file, "Found unexpected bytes in DBI Stream."); - StreamReader ECReader(ECSubstream); + codeview::StreamReader ECReader(ECSubstream); if (auto EC = ECNames.load(ECReader)) return EC; diff --git a/llvm/lib/DebugInfo/PDB/Raw/InfoStream.cpp b/llvm/lib/DebugInfo/PDB/Raw/InfoStream.cpp index ccc4a5e6c9b..e7c8a831c73 100644 --- a/llvm/lib/DebugInfo/PDB/Raw/InfoStream.cpp +++ b/llvm/lib/DebugInfo/PDB/Raw/InfoStream.cpp @@ -10,9 +10,9 @@ #include "llvm/DebugInfo/PDB/Raw/InfoStream.h" #include "llvm/ADT/BitVector.h" #include "llvm/ADT/SmallVector.h" +#include "llvm/DebugInfo/CodeView/StreamReader.h" #include "llvm/DebugInfo/PDB/Raw/RawConstants.h" #include "llvm/DebugInfo/PDB/Raw/RawError.h" -#include "llvm/DebugInfo/PDB/Raw/StreamReader.h" using namespace llvm; using namespace llvm::pdb; @@ -20,7 +20,7 @@ using namespace llvm::pdb; InfoStream::InfoStream(PDBFile &File) : Pdb(File), Stream(StreamPDB, File) {} Error InfoStream::reload() { - StreamReader Reader(Stream); + codeview::StreamReader Reader(Stream); struct Header { support::ulittle32_t Version; diff --git a/llvm/lib/DebugInfo/PDB/Raw/ModStream.cpp b/llvm/lib/DebugInfo/PDB/Raw/ModStream.cpp index dfc7bfc0f5f..c359e7757d0 100644 --- a/llvm/lib/DebugInfo/PDB/Raw/ModStream.cpp +++ b/llvm/lib/DebugInfo/PDB/Raw/ModStream.cpp @@ -8,9 +8,10 @@ //===----------------------------------------------------------------------===// #include "llvm/DebugInfo/PDB/Raw/ModStream.h" + +#include "llvm/DebugInfo/CodeView/StreamReader.h" #include "llvm/DebugInfo/PDB/Raw/ModInfo.h" #include "llvm/DebugInfo/PDB/Raw/RawError.h" -#include "llvm/DebugInfo/PDB/Raw/StreamReader.h" using namespace llvm; using namespace llvm::pdb; @@ -21,7 +22,7 @@ ModStream::ModStream(PDBFile &File, const ModInfo &Module) ModStream::~ModStream() {} Error ModStream::reload() { - StreamReader Reader(Stream); + codeview::StreamReader Reader(Stream); uint32_t SymbolSize = Mod.getSymbolDebugInfoByteSize(); uint32_t C11Size = Mod.getLineInfoByteSize(); diff --git a/llvm/lib/DebugInfo/PDB/Raw/NameHashTable.cpp b/llvm/lib/DebugInfo/PDB/Raw/NameHashTable.cpp index 2005c3958db..a542a51b188 100644 --- a/llvm/lib/DebugInfo/PDB/Raw/NameHashTable.cpp +++ b/llvm/lib/DebugInfo/PDB/Raw/NameHashTable.cpp @@ -10,9 +10,8 @@ #include "llvm/DebugInfo/PDB/Raw/NameHashTable.h" #include "llvm/ADT/ArrayRef.h" -#include "llvm/DebugInfo/PDB/Raw/ByteStream.h" +#include "llvm/DebugInfo/CodeView/StreamReader.h" #include "llvm/DebugInfo/PDB/Raw/RawError.h" -#include "llvm/DebugInfo/PDB/Raw/StreamReader.h" #include "llvm/Support/Endian.h" using namespace llvm; @@ -78,7 +77,7 @@ static inline uint32_t HashStringV2(StringRef Str) { NameHashTable::NameHashTable() : Signature(0), HashVersion(0), NameCount(0) {} -Error NameHashTable::load(StreamReader &Stream) { +Error NameHashTable::load(codeview::StreamReader &Stream) { struct Header { support::ulittle32_t Signature; support::ulittle32_t HashVersion; diff --git a/llvm/lib/DebugInfo/PDB/Raw/NameMap.cpp b/llvm/lib/DebugInfo/PDB/Raw/NameMap.cpp index 202e7173b0e..777d93279c1 100644 --- a/llvm/lib/DebugInfo/PDB/Raw/NameMap.cpp +++ b/llvm/lib/DebugInfo/PDB/Raw/NameMap.cpp @@ -9,15 +9,15 @@ #include "llvm/DebugInfo/PDB/Raw/NameMap.h" #include "llvm/ADT/BitVector.h" +#include "llvm/DebugInfo/CodeView/StreamReader.h" #include "llvm/DebugInfo/PDB/Raw/RawError.h" -#include "llvm/DebugInfo/PDB/Raw/StreamReader.h" using namespace llvm; using namespace llvm::pdb; NameMap::NameMap() {} -Error NameMap::load(StreamReader &Stream) { +Error NameMap::load(codeview::StreamReader &Stream) { // This is some sort of weird string-set/hash table encoded in the stream. // It starts with the number of bytes in the table. diff --git a/llvm/lib/DebugInfo/PDB/Raw/PublicsStream.cpp b/llvm/lib/DebugInfo/PDB/Raw/PublicsStream.cpp index af3cff32eb4..db66f536e5a 100644 --- a/llvm/lib/DebugInfo/PDB/Raw/PublicsStream.cpp +++ b/llvm/lib/DebugInfo/PDB/Raw/PublicsStream.cpp @@ -25,12 +25,12 @@ #include "llvm/DebugInfo/PDB/Raw/PublicsStream.h" #include "llvm/DebugInfo/CodeView/CodeView.h" +#include "llvm/DebugInfo/CodeView/StreamReader.h" #include "llvm/DebugInfo/CodeView/TypeRecord.h" #include "llvm/DebugInfo/PDB/Raw/MappedBlockStream.h" #include "llvm/DebugInfo/PDB/Raw/PDBFile.h" #include "llvm/DebugInfo/PDB/Raw/RawConstants.h" #include "llvm/DebugInfo/PDB/Raw/RawError.h" -#include "llvm/DebugInfo/PDB/Raw/StreamReader.h" #include "llvm/DebugInfo/PDB/Raw/SymbolStream.h" #include "llvm/ADT/BitVector.h" @@ -99,7 +99,7 @@ uint32_t PublicsStream::getAddrMap() const { return Header->AddrMap; } // we skip over the hash table which we believe contains information about // public symbols. Error PublicsStream::reload() { - StreamReader Reader(Stream); + codeview::StreamReader Reader(Stream); // Check stream size. if (Reader.bytesRemaining() < sizeof(HeaderInfo) + sizeof(GSIHashHeader)) diff --git a/llvm/lib/DebugInfo/PDB/Raw/StreamReader.cpp b/llvm/lib/DebugInfo/PDB/Raw/StreamReader.cpp deleted file mode 100644 index ed9c9d400af..00000000000 --- a/llvm/lib/DebugInfo/PDB/Raw/StreamReader.cpp +++ /dev/null @@ -1,50 +0,0 @@ -//===- StreamReader.cpp - Reads bytes and objects from a stream -----------===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#include "llvm/DebugInfo/PDB/Raw/StreamReader.h" -#include "llvm/DebugInfo/PDB/Raw/RawError.h" - -using namespace llvm; -using namespace llvm::pdb; - -StreamReader::StreamReader(const StreamInterface &S) : Stream(S), Offset(0) {} - -Error StreamReader::readBytes(MutableArrayRef Buffer) { - if (auto EC = Stream.readBytes(Offset, Buffer)) - return EC; - Offset += Buffer.size(); - return Error::success(); -} - -Error StreamReader::readInteger(uint32_t &Dest) { - support::ulittle32_t P; - if (auto EC = readObject(&P)) - return EC; - Dest = P; - return Error::success(); -} - -Error StreamReader::readZeroString(std::string &Dest) { - Dest.clear(); - char C; - do { - if (auto EC = readObject(&C)) - return EC; - if (C != '\0') - Dest.push_back(C); - } while (C != '\0'); - return Error::success(); -} - -Error StreamReader::getArrayRef(ArrayRef &Array, uint32_t Length) { - if (auto EC = Stream.getArrayRef(Offset, Array, Length)) - return EC; - Offset += Length; - return Error::success(); -} diff --git a/llvm/lib/DebugInfo/PDB/Raw/SymbolStream.cpp b/llvm/lib/DebugInfo/PDB/Raw/SymbolStream.cpp index 6249524eddd..2037a646de7 100644 --- a/llvm/lib/DebugInfo/PDB/Raw/SymbolStream.cpp +++ b/llvm/lib/DebugInfo/PDB/Raw/SymbolStream.cpp @@ -10,12 +10,11 @@ #include "llvm/DebugInfo/PDB/Raw/SymbolStream.h" #include "llvm/DebugInfo/CodeView/CodeView.h" +#include "llvm/DebugInfo/CodeView/StreamReader.h" #include "llvm/DebugInfo/CodeView/TypeRecord.h" -#include "llvm/DebugInfo/PDB/Raw/ByteStream.h" #include "llvm/DebugInfo/PDB/Raw/MappedBlockStream.h" #include "llvm/DebugInfo/PDB/Raw/RawConstants.h" #include "llvm/DebugInfo/PDB/Raw/RawError.h" -#include "llvm/DebugInfo/PDB/Raw/StreamReader.h" #include "llvm/Support/Endian.h" @@ -29,7 +28,7 @@ SymbolStream::SymbolStream(PDBFile &File, uint32_t StreamNum) SymbolStream::~SymbolStream() {} Error SymbolStream::reload() { - StreamReader Reader(MappedStream); + codeview::StreamReader Reader(MappedStream); if (Stream.initialize(Reader, MappedStream.getLength())) return make_error(raw_error_code::corrupt_file, diff --git a/llvm/lib/DebugInfo/PDB/Raw/TpiStream.cpp b/llvm/lib/DebugInfo/PDB/Raw/TpiStream.cpp index 8ce8c01f608..99daf6e29fd 100644 --- a/llvm/lib/DebugInfo/PDB/Raw/TpiStream.cpp +++ b/llvm/lib/DebugInfo/PDB/Raw/TpiStream.cpp @@ -10,11 +10,11 @@ #include "llvm/DebugInfo/PDB/Raw/TpiStream.h" #include "llvm/DebugInfo/CodeView/CodeView.h" +#include "llvm/DebugInfo/CodeView/StreamReader.h" #include "llvm/DebugInfo/CodeView/TypeRecord.h" #include "llvm/DebugInfo/PDB/Raw/MappedBlockStream.h" #include "llvm/DebugInfo/PDB/Raw/RawConstants.h" #include "llvm/DebugInfo/PDB/Raw/RawError.h" -#include "llvm/DebugInfo/PDB/Raw/StreamReader.h" #include "llvm/Support/Endian.h" @@ -62,7 +62,7 @@ TpiStream::TpiStream(PDBFile &File, uint32_t StreamIdx) TpiStream::~TpiStream() {} Error TpiStream::reload() { - StreamReader Reader(Stream); + codeview::StreamReader Reader(Stream); if (Reader.bytesRemaining() < sizeof(HeaderInfo)) return make_error(raw_error_code::corrupt_file, @@ -98,7 +98,7 @@ Error TpiStream::reload() { // Hash indices, hash values, etc come from the hash stream. MappedBlockStream HS(Header->HashStreamIndex, Pdb); - StreamReader HSR(HS); + codeview::StreamReader HSR(HS); HSR.setOffset(Header->HashValueBuffer.Off); if (auto EC = HashValuesBuffer.initialize(HSR, Header->HashValueBuffer.Length)) -- cgit v1.2.3