summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-pdbutil/LinePrinter.cpp
diff options
context:
space:
mode:
authorZachary Turner <zturner@google.com>2017-06-23 20:18:38 +0000
committerZachary Turner <zturner@google.com>2017-06-23 20:18:38 +0000
commit6c3e41bbd3ac6eff9a16e1722427d67867b2194b (patch)
tree376811d8ee52000fb4ad40945c20aa1a9a9d77f4 /llvm/tools/llvm-pdbutil/LinePrinter.cpp
parent7e66b6b8ea727ccd4dfcc899453262eb00098037 (diff)
downloadbcm5719-llvm-6c3e41bbd3ac6eff9a16e1722427d67867b2194b.tar.gz
bcm5719-llvm-6c3e41bbd3ac6eff9a16e1722427d67867b2194b.zip
[llvm-pdbutil] Dump raw bytes of pdb name map.
This patch dumps the raw bytes of the pdb name map which contains the mapping of stream name to stream index for the string table and other reserved streams. llvm-svn: 306148
Diffstat (limited to 'llvm/tools/llvm-pdbutil/LinePrinter.cpp')
-rw-r--r--llvm/tools/llvm-pdbutil/LinePrinter.cpp19
1 files changed, 7 insertions, 12 deletions
diff --git a/llvm/tools/llvm-pdbutil/LinePrinter.cpp b/llvm/tools/llvm-pdbutil/LinePrinter.cpp
index a5f48f05859..a9761b4337b 100644
--- a/llvm/tools/llvm-pdbutil/LinePrinter.cpp
+++ b/llvm/tools/llvm-pdbutil/LinePrinter.cpp
@@ -203,11 +203,12 @@ void LinePrinter::formatMsfStreamData(StringRef Label, PDBFile &File,
StreamPurpose, Size, S->getLength());
AutoIndent Indent(*this);
BinaryStreamRef Slice(*S);
- Slice = Slice.keep_front(Offset + Size);
- BinaryStreamReader Reader(Slice);
- consumeError(Reader.skip(Offset));
+ BinarySubstreamRef Substream;
+ Substream.Offset = Offset;
+ Substream.StreamData = Slice.drop_front(Offset).keep_front(Size);
+
auto Layout = File.getStreamLayout(StreamIdx);
- formatMsfStreamData(Label, File, Layout, Reader);
+ formatMsfStreamData(Label, File, Layout, Substream);
}
void LinePrinter::formatMsfStreamData(StringRef Label, PDBFile &File,
@@ -215,13 +216,6 @@ void LinePrinter::formatMsfStreamData(StringRef Label, PDBFile &File,
BinarySubstreamRef Substream) {
BinaryStreamReader Reader(Substream.StreamData);
- consumeError(Reader.skip(Substream.Offset));
- formatMsfStreamData(Label, File, Stream, Reader);
-}
-
-void LinePrinter::formatMsfStreamData(StringRef Label, PDBFile &File,
- const msf::MSFStreamLayout &Stream,
- BinaryStreamReader &Reader) {
auto Runs = computeBlockRuns(File.getBlockSize(), Stream);
NewLine();
@@ -231,7 +225,7 @@ void LinePrinter::formatMsfStreamData(StringRef Label, PDBFile &File,
Run FoundRun;
uint32_t RunOffset;
- std::tie(FoundRun, RunOffset) = findRun(Reader.getOffset(), Runs);
+ std::tie(FoundRun, RunOffset) = findRun(Substream.Offset, Runs);
assert(FoundRun.ByteLen >= RunOffset);
uint32_t Len = FoundRun.ByteLen - RunOffset;
Len = std::min(Len, Reader.bytesRemaining());
@@ -245,6 +239,7 @@ void LinePrinter::formatMsfStreamData(StringRef Label, PDBFile &File,
OS << formatv(" {0}",
fmt_align("<discontinuity>", AlignStyle::Center, 114, '-'));
}
+ Substream.Offset += Len;
}
NewLine();
OS << ")";
OpenPOWER on IntegriCloud