diff options
author | Zachary Turner <zturner@google.com> | 2016-06-06 20:37:05 +0000 |
---|---|---|
committer | Zachary Turner <zturner@google.com> | 2016-06-06 20:37:05 +0000 |
commit | 7120a478fafa6157cadcfae68e87ae4cafbc125e (patch) | |
tree | 876366a0c272c230f9936749992f89fad423a02b /llvm/tools/llvm-pdbdump/YAMLOutputStyle.cpp | |
parent | 59144071852180e2b38eee34f9b2ed0d92e1716d (diff) | |
download | bcm5719-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.cpp | 126 |
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(); +} |