From dbeaea7b357fb4343d01ffa466f3dcab1e57d392 Mon Sep 17 00:00:00 2001 From: Zachary Turner Date: Mon, 11 Jul 2016 21:45:26 +0000 Subject: Refactor the PDB writing to use a builder approach llvm-svn: 275110 --- llvm/tools/llvm-pdbdump/YAMLOutputStyle.cpp | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) (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 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(); -- cgit v1.2.3