diff options
Diffstat (limited to 'llvm/lib/DebugInfo/CodeView')
-rw-r--r-- | llvm/lib/DebugInfo/CodeView/ByteStream.cpp | 32 | ||||
-rw-r--r-- | llvm/lib/DebugInfo/CodeView/StreamReader.cpp | 13 | ||||
-rw-r--r-- | llvm/lib/DebugInfo/CodeView/SymbolDumper.cpp | 4 | ||||
-rw-r--r-- | llvm/lib/DebugInfo/CodeView/TypeDumper.cpp | 5 | ||||
-rw-r--r-- | llvm/lib/DebugInfo/CodeView/TypeStreamMerger.cpp | 12 |
5 files changed, 15 insertions, 51 deletions
diff --git a/llvm/lib/DebugInfo/CodeView/ByteStream.cpp b/llvm/lib/DebugInfo/CodeView/ByteStream.cpp index 1ea976b6a26..c0ac0b7a8ff 100644 --- a/llvm/lib/DebugInfo/CodeView/ByteStream.cpp +++ b/llvm/lib/DebugInfo/CodeView/ByteStream.cpp @@ -17,41 +17,13 @@ using namespace llvm::codeview; ByteStream::ByteStream() {} -ByteStream::ByteStream(MutableArrayRef<uint8_t> Data) : Data(Data) {} +ByteStream::ByteStream(ArrayRef<uint8_t> Data) : Data(Data) {} ByteStream::~ByteStream() {} -void ByteStream::reset() { - Ownership.reset(); - Data = MutableArrayRef<uint8_t>(); -} - -void ByteStream::load(uint32_t Length) { - reset(); - if (Length > 0) - Data = MutableArrayRef<uint8_t>(new uint8_t[Length], Length); - Ownership.reset(Data.data()); -} - -Error ByteStream::load(StreamReader &Reader, uint32_t Length) { - load(Length); - auto EC = Reader.readBytes(Data); - if (EC) - reset(); - return EC; -} - -Error ByteStream::readBytes(uint32_t Offset, - MutableArrayRef<uint8_t> Buffer) const { - if (Data.size() < Buffer.size() + Offset) - return make_error<CodeViewError>(cv_error_code::insufficient_buffer); - ::memcpy(Buffer.data() + Offset, Data.data(), Buffer.size()); - return Error::success(); -} - Error ByteStream::readBytes(uint32_t Offset, uint32_t Size, ArrayRef<uint8_t> &Buffer) const { - if (Data.size() < Buffer.size() + Offset) + if (Data.size() < Size + Offset) return make_error<CodeViewError>(cv_error_code::insufficient_buffer); Buffer = Data.slice(Offset, Size); return Error::success(); diff --git a/llvm/lib/DebugInfo/CodeView/StreamReader.cpp b/llvm/lib/DebugInfo/CodeView/StreamReader.cpp index 64985bfd0e2..94a6183cd8a 100644 --- a/llvm/lib/DebugInfo/CodeView/StreamReader.cpp +++ b/llvm/lib/DebugInfo/CodeView/StreamReader.cpp @@ -17,20 +17,13 @@ using namespace llvm::codeview; StreamReader::StreamReader(const StreamInterface &S) : Stream(S), Offset(0) {} -Error StreamReader::readBytes(uint32_t Size, ArrayRef<uint8_t> &Buffer) { +Error StreamReader::readBytes(ArrayRef<uint8_t> &Buffer, uint32_t Size) { if (auto EC = Stream.readBytes(Offset, Size, Buffer)) return EC; Offset += Size; return Error::success(); } -Error StreamReader::readBytes(MutableArrayRef<uint8_t> Buffer) { - if (auto EC = Stream.readBytes(Offset, Buffer)) - return EC; - Offset += Buffer.size(); - return Error::success(); -} - Error StreamReader::readInteger(uint16_t &Dest) { const support::ulittle16_t *P; if (auto EC = readObject(P)) @@ -63,7 +56,7 @@ Error StreamReader::readZeroString(StringRef &Dest) { setOffset(OriginalOffset); ArrayRef<uint8_t> Data; - if (auto EC = readBytes(Length, Data)) + if (auto EC = readBytes(Data, Length)) return EC; Dest = StringRef(reinterpret_cast<const char *>(Data.begin()), Data.size()); @@ -74,7 +67,7 @@ Error StreamReader::readZeroString(StringRef &Dest) { Error StreamReader::readFixedString(StringRef &Dest, uint32_t Length) { ArrayRef<uint8_t> Bytes; - if (auto EC = readBytes(Length, Bytes)) + if (auto EC = readBytes(Bytes, Length)) return EC; Dest = StringRef(reinterpret_cast<const char *>(Bytes.begin()), Bytes.size()); return Error::success(); diff --git a/llvm/lib/DebugInfo/CodeView/SymbolDumper.cpp b/llvm/lib/DebugInfo/CodeView/SymbolDumper.cpp index 7d405ec2453..e2dc9d5b76d 100644 --- a/llvm/lib/DebugInfo/CodeView/SymbolDumper.cpp +++ b/llvm/lib/DebugInfo/CodeView/SymbolDumper.cpp @@ -872,8 +872,8 @@ bool CVSymbolDumper::dump(const CVRecord<SymbolKind> &Record) { return !Dumper.hadError(); } -bool CVSymbolDumper::dump(ArrayRef<uint8_t> Data) { +bool CVSymbolDumper::dump(const CVSymbolArray &Symbols) { CVSymbolDumperImpl Dumper(CVTD, ObjDelegate.get(), W, PrintRecordBytes); - Dumper.visitSymbolStream(Data); + Dumper.visitSymbolStream(Symbols); return !Dumper.hadError(); } diff --git a/llvm/lib/DebugInfo/CodeView/TypeDumper.cpp b/llvm/lib/DebugInfo/CodeView/TypeDumper.cpp index 1db1e54f430..da3919a0773 100644 --- a/llvm/lib/DebugInfo/CodeView/TypeDumper.cpp +++ b/llvm/lib/DebugInfo/CodeView/TypeDumper.cpp @@ -12,7 +12,6 @@ #include "llvm/DebugInfo/CodeView/CVTypeVisitor.h" #include "llvm/DebugInfo/CodeView/TypeIndex.h" #include "llvm/DebugInfo/CodeView/TypeRecord.h" -#include "llvm/DebugInfo/CodeView/TypeStream.h" #include "llvm/Support/ScopedPrinter.h" using namespace llvm; @@ -683,10 +682,10 @@ bool CVTypeDumper::dump(const CVRecord<TypeLeafKind> &Record) { return !Dumper.hadError(); } -bool CVTypeDumper::dump(ArrayRef<uint8_t> Data) { +bool CVTypeDumper::dump(const CVTypeArray &Types) { assert(W && "printer should not be null"); CVTypeDumperImpl Dumper(*this, *W, PrintRecordBytes); - Dumper.visitTypeStream(Data); + Dumper.visitTypeStream(Types); return !Dumper.hadError(); } diff --git a/llvm/lib/DebugInfo/CodeView/TypeStreamMerger.cpp b/llvm/lib/DebugInfo/CodeView/TypeStreamMerger.cpp index 88211d0af95..d16e481e326 100644 --- a/llvm/lib/DebugInfo/CodeView/TypeStreamMerger.cpp +++ b/llvm/lib/DebugInfo/CodeView/TypeStreamMerger.cpp @@ -12,9 +12,9 @@ #include "llvm/ADT/StringExtras.h" #include "llvm/DebugInfo/CodeView/CVTypeVisitor.h" #include "llvm/DebugInfo/CodeView/FieldListRecordBuilder.h" +#include "llvm/DebugInfo/CodeView/StreamRef.h" #include "llvm/DebugInfo/CodeView/TypeIndex.h" #include "llvm/DebugInfo/CodeView/TypeRecord.h" -#include "llvm/DebugInfo/CodeView/TypeStream.h" #include "llvm/Support/ScopedPrinter.h" using namespace llvm; @@ -71,7 +71,7 @@ public: void visitFieldList(TypeLeafKind Leaf, ArrayRef<uint8_t> FieldData); - bool mergeStream(ArrayRef<uint8_t> SrcStream); + bool mergeStream(const CVTypeArray &Types); private: bool hadError() { return FoundBadTypeIndex || CVTypeVisitor::hadError(); } @@ -131,14 +131,14 @@ void TypeStreamMerger::visitUnknownMember(TypeLeafKind LF) { parseError(); } -bool TypeStreamMerger::mergeStream(ArrayRef<uint8_t> SrcStream) { +bool TypeStreamMerger::mergeStream(const CVTypeArray &Types) { assert(IndexMap.empty()); - visitTypeStream(SrcStream); + visitTypeStream(Types); IndexMap.clear(); return !hadError(); } bool llvm::codeview::mergeTypeStreams(TypeTableBuilder &DestStream, - ArrayRef<uint8_t> SrcStream) { - return TypeStreamMerger(DestStream).mergeStream(SrcStream); + const CVTypeArray &Types) { + return TypeStreamMerger(DestStream).mergeStream(Types); } |