summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-pdbdump/YAMLOutputStyle.cpp
diff options
context:
space:
mode:
authorZachary Turner <zturner@google.com>2016-07-11 21:45:26 +0000
committerZachary Turner <zturner@google.com>2016-07-11 21:45:26 +0000
commitdbeaea7b357fb4343d01ffa466f3dcab1e57d392 (patch)
treef1fd778564c5e85b31e96504ee26b49424b00823 /llvm/tools/llvm-pdbdump/YAMLOutputStyle.cpp
parentf6b93824677a9aaab59989f7f402010fda6bd63c (diff)
downloadbcm5719-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.cpp27
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();
OpenPOWER on IntegriCloud