aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/DebugInfo/PDB/Raw/ModStream.cpp
diff options
context:
space:
mode:
authorZachary Turner <zturner@google.com>2016-06-02 20:11:22 +0000
committerZachary Turner <zturner@google.com>2016-06-02 20:11:22 +0000
commit7eb6d358afb1461990939b9b364e86f9b1c41eaf (patch)
tree0242b917eef3693fa9c68c7ba1f59ec53b72b27a /llvm/lib/DebugInfo/PDB/Raw/ModStream.cpp
parent43578ec2a853b5dc98d63d3fd4c42cd1083ff909 (diff)
downloadllvm-7eb6d358afb1461990939b9b364e86f9b1c41eaf.zip
llvm-7eb6d358afb1461990939b9b364e86f9b1c41eaf.tar.gz
llvm-7eb6d358afb1461990939b9b364e86f9b1c41eaf.tar.bz2
[llvm-pdbdump] Dump CodeView line information.
This first pass only splits apart the records and dumps the line info kinds and binary data. Subsequent patches will parse out the binary data into more useful information and dump it in detail. llvm-svn: 271576
Diffstat (limited to 'llvm/lib/DebugInfo/PDB/Raw/ModStream.cpp')
-rw-r--r--llvm/lib/DebugInfo/PDB/Raw/ModStream.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/llvm/lib/DebugInfo/PDB/Raw/ModStream.cpp b/llvm/lib/DebugInfo/PDB/Raw/ModStream.cpp
index b7204cb..a6d1977 100644
--- a/llvm/lib/DebugInfo/PDB/Raw/ModStream.cpp
+++ b/llvm/lib/DebugInfo/PDB/Raw/ModStream.cpp
@@ -13,6 +13,7 @@
#include "llvm/DebugInfo/PDB/Raw/ModInfo.h"
#include "llvm/DebugInfo/PDB/Raw/PDBFile.h"
#include "llvm/DebugInfo/PDB/Raw/RawError.h"
+#include "llvm/DebugInfo/PDB/Raw/RawTypes.h"
using namespace llvm;
using namespace llvm::pdb;
@@ -45,9 +46,9 @@ Error ModStream::reload() {
return EC;
if (auto EC = Reader.readStreamRef(C13LinesSubstream, C13Size))
return EC;
- ArrayRef<uint8_t> LineBytes;
- codeview::StreamReader LinesReader(C13LinesSubstream);
- if (auto EC = LinesReader.readBytes(LineBytes, C13LinesSubstream.getLength()))
+
+ codeview::StreamReader LineReader(C13LinesSubstream);
+ if (auto EC = LineReader.readArray(LineInfo, LineReader.bytesRemaining()))
return EC;
uint32_t GlobalRefsSize;
@@ -67,3 +68,8 @@ ModStream::symbols(bool *HadError) const {
return llvm::make_range(SymbolsSubstream.begin(HadError),
SymbolsSubstream.end());
}
+
+iterator_range<ModStream::LineInfoArray::Iterator>
+ModStream::lines(bool *HadError) const {
+ return llvm::make_range(LineInfo.begin(HadError), LineInfo.end());
+}