summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-pdbdump/YAMLOutputStyle.cpp
diff options
context:
space:
mode:
authorZachary Turner <zturner@google.com>2016-06-06 20:37:05 +0000
committerZachary Turner <zturner@google.com>2016-06-06 20:37:05 +0000
commit7120a478fafa6157cadcfae68e87ae4cafbc125e (patch)
tree876366a0c272c230f9936749992f89fad423a02b /llvm/tools/llvm-pdbdump/YAMLOutputStyle.cpp
parent59144071852180e2b38eee34f9b2ed0d92e1716d (diff)
downloadbcm5719-llvm-7120a478fafa6157cadcfae68e87ae4cafbc125e.tar.gz
bcm5719-llvm-7120a478fafa6157cadcfae68e87ae4cafbc125e.zip
[llvm-pdbdump] Dump MSF headers to YAML.
This is the simplest possible patch to get some kind of YAML output. All it dumps is the MSF header fields so that in theory an empty MSF file could be reconstructed. Reviewed By: ruiu, majnemer Differential Revision: http://reviews.llvm.org/D20971 llvm-svn: 271939
Diffstat (limited to 'llvm/tools/llvm-pdbdump/YAMLOutputStyle.cpp')
-rw-r--r--llvm/tools/llvm-pdbdump/YAMLOutputStyle.cpp126
1 files changed, 126 insertions, 0 deletions
diff --git a/llvm/tools/llvm-pdbdump/YAMLOutputStyle.cpp b/llvm/tools/llvm-pdbdump/YAMLOutputStyle.cpp
new file mode 100644
index 00000000000..a06a22d93ed
--- /dev/null
+++ b/llvm/tools/llvm-pdbdump/YAMLOutputStyle.cpp
@@ -0,0 +1,126 @@
+//===- YAMLOutputStyle.cpp ------------------------------------ *- C++ --*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "YAMLOutputStyle.h"
+
+#include "PdbYaml.h"
+#include "llvm-pdbdump.h"
+
+#include "llvm/DebugInfo/PDB/Raw/PDBFile.h"
+
+using namespace llvm;
+using namespace llvm::pdb;
+
+YAMLOutputStyle::YAMLOutputStyle(PDBFile &File) : File(File), Out(outs()) {}
+
+Error YAMLOutputStyle::dumpFileHeaders() {
+ if (!opts::DumpHeaders)
+ return Error::success();
+
+ yaml::MsfHeaders Headers;
+ Headers.BlockCount = File.getBlockCount();
+ Headers.BlockMapIndex = File.getBlockMapIndex();
+ Headers.BlockMapOffset = File.getBlockMapOffset();
+ Headers.BlockSize = File.getBlockSize();
+ auto Blocks = File.getDirectoryBlockArray();
+ Headers.DirectoryBlocks.assign(Blocks.begin(), Blocks.end());
+ Headers.NumDirectoryBlocks = File.getNumDirectoryBlocks();
+ Headers.NumDirectoryBytes = File.getNumDirectoryBytes();
+ Headers.NumStreams = File.getNumStreams();
+ Headers.Unknown0 = File.getUnknown0();
+ Headers.Unknown1 = File.getUnknown1();
+
+ Obj.Headers.emplace(Headers);
+
+ return Error::success();
+}
+
+Error YAMLOutputStyle::dumpStreamSummary() {
+ if (!opts::DumpStreamSummary)
+ return Error::success();
+
+ return Error::success();
+}
+
+Error YAMLOutputStyle::dumpStreamBlocks() {
+ if (!opts::DumpStreamBlocks)
+ return Error::success();
+
+ return Error::success();
+}
+
+Error YAMLOutputStyle::dumpStreamData() {
+ uint32_t StreamCount = File.getNumStreams();
+ StringRef DumpStreamStr = opts::DumpStreamDataIdx;
+ uint32_t DumpStreamNum;
+ if (DumpStreamStr.getAsInteger(/*Radix=*/0U, DumpStreamNum) ||
+ DumpStreamNum >= StreamCount)
+ return Error::success();
+
+ return Error::success();
+}
+
+Error YAMLOutputStyle::dumpInfoStream() {
+ if (!opts::DumpHeaders)
+ return Error::success();
+ return Error::success();
+}
+
+Error YAMLOutputStyle::dumpNamedStream() {
+ if (opts::DumpStreamDataName.empty())
+ return Error::success();
+
+ return Error::success();
+}
+
+Error YAMLOutputStyle::dumpTpiStream(uint32_t StreamIdx) {
+ return Error::success();
+}
+
+Error YAMLOutputStyle::dumpDbiStream() { return Error::success(); }
+
+Error YAMLOutputStyle::dumpSectionContribs() {
+ if (!opts::DumpSectionContribs)
+ return Error::success();
+
+ return Error::success();
+}
+
+Error YAMLOutputStyle::dumpSectionMap() {
+ if (!opts::DumpSectionMap)
+ return Error::success();
+
+ return Error::success();
+}
+
+Error YAMLOutputStyle::dumpPublicsStream() {
+ if (!opts::DumpPublics)
+ return Error::success();
+
+ return Error::success();
+}
+
+Error YAMLOutputStyle::dumpSectionHeaders() {
+ if (!opts::DumpSectionHeaders)
+ return Error::success();
+
+ return Error::success();
+}
+
+Error YAMLOutputStyle::dumpFpoStream() {
+ if (!opts::DumpFpo)
+ return Error::success();
+
+ return Error::success();
+}
+
+void YAMLOutputStyle::flush() {
+ Out << Obj;
+ outs().flush();
+}
OpenPOWER on IntegriCloud