summaryrefslogtreecommitdiffstats
path: root/llvm/lib/DebugInfo/CodeView
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/DebugInfo/CodeView')
-rw-r--r--llvm/lib/DebugInfo/CodeView/ByteStream.cpp32
-rw-r--r--llvm/lib/DebugInfo/CodeView/StreamReader.cpp13
-rw-r--r--llvm/lib/DebugInfo/CodeView/SymbolDumper.cpp4
-rw-r--r--llvm/lib/DebugInfo/CodeView/TypeDumper.cpp5
-rw-r--r--llvm/lib/DebugInfo/CodeView/TypeStreamMerger.cpp12
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);
}
OpenPOWER on IntegriCloud