summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-pdbdump/YAMLOutputStyle.cpp
diff options
context:
space:
mode:
authorZachary Turner <zturner@google.com>2016-09-15 18:22:31 +0000
committerZachary Turner <zturner@google.com>2016-09-15 18:22:31 +0000
commitde9ba155115dc56c97e34bf1452bcfaf7b75a6ea (patch)
tree0dbb237f6c403a934c5b832fb839c42bc30a6986 /llvm/tools/llvm-pdbdump/YAMLOutputStyle.cpp
parentd93c4c013736fe8e7d3264ac056c55c3e7450e47 (diff)
downloadbcm5719-llvm-de9ba155115dc56c97e34bf1452bcfaf7b75a6ea.tar.gz
bcm5719-llvm-de9ba155115dc56c97e34bf1452bcfaf7b75a6ea.zip
[pdb] Write the IPI stream.
The IPI stream is structurally identical to the TPI stream, but it contains different record types. So we just re-use the TPI writing code. llvm-svn: 281638
Diffstat (limited to 'llvm/tools/llvm-pdbdump/YAMLOutputStyle.cpp')
-rw-r--r--llvm/tools/llvm-pdbdump/YAMLOutputStyle.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/llvm/tools/llvm-pdbdump/YAMLOutputStyle.cpp b/llvm/tools/llvm-pdbdump/YAMLOutputStyle.cpp
index 0991d5c0ec3..ee1875c6b67 100644
--- a/llvm/tools/llvm-pdbdump/YAMLOutputStyle.cpp
+++ b/llvm/tools/llvm-pdbdump/YAMLOutputStyle.cpp
@@ -50,6 +50,9 @@ Error YAMLOutputStyle::dump() {
if (auto EC = dumpTpiStream())
return EC;
+ if (auto EC = dumpIpiStream())
+ return EC;
+
flush();
return Error::success();
}
@@ -179,6 +182,26 @@ Error YAMLOutputStyle::dumpTpiStream() {
return Error::success();
}
+Error YAMLOutputStyle::dumpIpiStream() {
+ if (!opts::pdb2yaml::IpiStream)
+ return Error::success();
+
+ auto IpiS = File.getPDBIpiStream();
+ if (!IpiS)
+ return IpiS.takeError();
+
+ auto &IS = IpiS.get();
+ Obj.IpiStream.emplace();
+ Obj.IpiStream->Version = IS.getTpiVersion();
+ for (auto &Record : IS.types(nullptr)) {
+ yaml::PdbTpiRecord R;
+ R.Record = Record;
+ Obj.IpiStream->Records.push_back(R);
+ }
+
+ return Error::success();
+}
+
void YAMLOutputStyle::flush() {
Out << Obj;
outs().flush();
OpenPOWER on IntegriCloud