diff options
| author | Zachary Turner <zturner@google.com> | 2016-09-15 18:22:31 +0000 |
|---|---|---|
| committer | Zachary Turner <zturner@google.com> | 2016-09-15 18:22:31 +0000 |
| commit | de9ba155115dc56c97e34bf1452bcfaf7b75a6ea (patch) | |
| tree | 0dbb237f6c403a934c5b832fb839c42bc30a6986 /llvm/tools/llvm-pdbdump/YAMLOutputStyle.cpp | |
| parent | d93c4c013736fe8e7d3264ac056c55c3e7450e47 (diff) | |
| download | bcm5719-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.cpp | 23 |
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(); |

