diff options
| author | Zachary Turner <zturner@google.com> | 2016-07-11 21:45:26 +0000 |
|---|---|---|
| committer | Zachary Turner <zturner@google.com> | 2016-07-11 21:45:26 +0000 |
| commit | dbeaea7b357fb4343d01ffa466f3dcab1e57d392 (patch) | |
| tree | f1fd778564c5e85b31e96504ee26b49424b00823 /llvm/tools/llvm-pdbdump/YAMLOutputStyle.cpp | |
| parent | f6b93824677a9aaab59989f7f402010fda6bd63c (diff) | |
| download | bcm5719-llvm-dbeaea7b357fb4343d01ffa466f3dcab1e57d392.tar.gz bcm5719-llvm-dbeaea7b357fb4343d01ffa466f3dcab1e57d392.zip | |
Refactor the PDB writing to use a builder approach
llvm-svn: 275110
Diffstat (limited to 'llvm/tools/llvm-pdbdump/YAMLOutputStyle.cpp')
| -rw-r--r-- | llvm/tools/llvm-pdbdump/YAMLOutputStyle.cpp | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/llvm/tools/llvm-pdbdump/YAMLOutputStyle.cpp b/llvm/tools/llvm-pdbdump/YAMLOutputStyle.cpp index f3c730fc6b3..aa68128cd80 100644 --- a/llvm/tools/llvm-pdbdump/YAMLOutputStyle.cpp +++ b/llvm/tools/llvm-pdbdump/YAMLOutputStyle.cpp @@ -12,6 +12,7 @@ #include "PdbYaml.h" #include "llvm-pdbdump.h" +#include "llvm/DebugInfo/PDB/Raw/DbiStream.h" #include "llvm/DebugInfo/PDB/Raw/InfoStream.h" #include "llvm/DebugInfo/PDB/Raw/PDBFile.h" #include "llvm/DebugInfo/PDB/Raw/RawConstants.h" @@ -22,7 +23,8 @@ using namespace llvm::pdb; YAMLOutputStyle::YAMLOutputStyle(PDBFile &File) : File(File), Out(outs()) {} Error YAMLOutputStyle::dump() { - if (opts::pdb2yaml::StreamDirectory || opts::pdb2yaml::PdbStream) + if (opts::pdb2yaml::StreamDirectory || opts::pdb2yaml::PdbStream || + opts::pdb2yaml::DbiStream) opts::pdb2yaml::StreamMetadata = true; if (auto EC = dumpFileHeaders()) @@ -37,6 +39,9 @@ Error YAMLOutputStyle::dump() { if (auto EC = dumpPDBStream()) return EC; + if (auto EC = dumpDbiStream()) + return EC; + flush(); return Error::success(); } @@ -105,6 +110,26 @@ Error YAMLOutputStyle::dumpPDBStream() { return Error::success(); } +Error YAMLOutputStyle::dumpDbiStream() { + if (!opts::pdb2yaml::DbiStream) + return Error::success(); + + auto DbiS = File.getPDBDbiStream(); + if (!DbiS) + return DbiS.takeError(); + + auto &DS = DbiS.get(); + Obj.DbiStream.emplace(); + Obj.DbiStream->Age = DS.getAge(); + Obj.DbiStream->BuildNumber = DS.getBuildNumber(); + Obj.DbiStream->Flags = DS.getFlags(); + Obj.DbiStream->MachineType = DS.getMachineType(); + Obj.DbiStream->PdbDllRbld = DS.getPdbDllRbld(); + Obj.DbiStream->PdbDllVersion = DS.getPdbDllVersion(); + Obj.DbiStream->VerHeader = DS.getDbiVersion(); + return Error::success(); +} + void YAMLOutputStyle::flush() { Out << Obj; outs().flush(); |

