From de9ba155115dc56c97e34bf1452bcfaf7b75a6ea Mon Sep 17 00:00:00 2001 From: Zachary Turner Date: Thu, 15 Sep 2016 18:22:31 +0000 Subject: [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 --- llvm/tools/llvm-pdbdump/YAMLOutputStyle.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'llvm/tools/llvm-pdbdump/YAMLOutputStyle.cpp') 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(); -- cgit v1.2.3