[llvm] r271940 - [llvm-pdbdump] Dump stream sizes and stream blocks to yaml.
Zachary Turner via llvm-commits
llvm-commits at lists.llvm.org
Mon Jun 6 13:37:17 PDT 2016
Author: zturner
Date: Mon Jun 6 15:37:17 2016
New Revision: 271940
URL: http://llvm.org/viewvc/llvm-project?rev=271940&view=rev
Log:
[llvm-pdbdump] Dump stream sizes and stream blocks to yaml.
Modified:
llvm/trunk/tools/llvm-pdbdump/PdbYaml.cpp
llvm/trunk/tools/llvm-pdbdump/PdbYaml.h
llvm/trunk/tools/llvm-pdbdump/YAMLOutputStyle.cpp
Modified: llvm/trunk/tools/llvm-pdbdump/PdbYaml.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbdump/PdbYaml.cpp?rev=271940&r1=271939&r2=271940&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-pdbdump/PdbYaml.cpp (original)
+++ llvm/trunk/tools/llvm-pdbdump/PdbYaml.cpp Mon Jun 6 15:37:17 2016
@@ -12,11 +12,11 @@
#include "llvm/DebugInfo/PDB/Raw/PDBFile.h"
using namespace llvm;
+using namespace llvm::yaml;
using namespace llvm::pdb;
using namespace llvm::pdb::yaml;
-void llvm::yaml::MappingTraits<MsfHeaders>::mapping(
- IO &IO, pdb::yaml::MsfHeaders &Obj) {
+void MappingTraits<MsfHeaders>::mapping(IO &IO, MsfHeaders &Obj) {
IO.mapRequired("BlockSize", Obj.BlockSize);
IO.mapRequired("Unknown0", Obj.Unknown0);
IO.mapRequired("NumBlocks", Obj.BlockCount);
@@ -29,7 +29,16 @@ void llvm::yaml::MappingTraits<MsfHeader
IO.mapRequired("NumStreams", Obj.NumStreams);
}
-void llvm::yaml::MappingTraits<pdb::yaml::PdbObject>::mapping(
- IO &IO, pdb::yaml::PdbObject &Obj) {
+void MappingTraits<PdbObject>::mapping(IO &IO, PdbObject &Obj) {
IO.mapOptional("MSF", Obj.Headers);
+ IO.mapOptional("StreamSizes", Obj.StreamSizes);
+ IO.mapOptional("StreamMap", Obj.StreamMap);
+}
+
+void MappingTraits<StreamSizeEntry>::mapping(IO &IO, StreamSizeEntry &Obj) {
+ IO.mapRequired("Size", Obj.Size);
+}
+
+void MappingTraits<StreamMapEntry>::mapping(IO &IO, StreamMapEntry &Obj) {
+ IO.mapRequired("Blocks", Obj.Blocks);
}
Modified: llvm/trunk/tools/llvm-pdbdump/PdbYaml.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbdump/PdbYaml.h?rev=271940&r1=271939&r2=271940&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-pdbdump/PdbYaml.h (original)
+++ llvm/trunk/tools/llvm-pdbdump/PdbYaml.h Mon Jun 6 15:37:17 2016
@@ -36,13 +36,33 @@ struct MsfHeaders {
uint32_t NumStreams;
};
+struct StreamSizeEntry {
+ uint32_t Size;
+};
+
+struct StreamMapEntry {
+ std::vector<uint32_t> Blocks;
+};
+
struct PdbObject {
Optional<MsfHeaders> Headers;
+ Optional<std::vector<StreamSizeEntry>> StreamSizes;
+ Optional<std::vector<StreamMapEntry>> StreamMap;
};
}
}
+}
+namespace llvm {
namespace yaml {
+template <> struct MappingTraits<pdb::yaml::StreamSizeEntry> {
+ static void mapping(IO &IO, pdb::yaml::StreamSizeEntry &Obj);
+};
+
+template <> struct MappingTraits<pdb::yaml::StreamMapEntry> {
+ static void mapping(IO &IO, pdb::yaml::StreamMapEntry &Obj);
+};
+
template <> struct MappingTraits<pdb::yaml::MsfHeaders> {
static void mapping(IO &IO, pdb::yaml::MsfHeaders &Obj);
};
@@ -53,5 +73,7 @@ template <> struct MappingTraits<pdb::ya
}
LLVM_YAML_IS_SEQUENCE_VECTOR(uint32_t)
+LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::pdb::yaml::StreamSizeEntry)
+LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::pdb::yaml::StreamMapEntry)
#endif // LLVM_TOOLS_LLVMPDBDUMP_PDBYAML_H
Modified: llvm/trunk/tools/llvm-pdbdump/YAMLOutputStyle.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbdump/YAMLOutputStyle.cpp?rev=271940&r1=271939&r2=271940&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-pdbdump/YAMLOutputStyle.cpp (original)
+++ llvm/trunk/tools/llvm-pdbdump/YAMLOutputStyle.cpp Mon Jun 6 15:37:17 2016
@@ -45,6 +45,13 @@ Error YAMLOutputStyle::dumpStreamSummary
if (!opts::DumpStreamSummary)
return Error::success();
+ std::vector<yaml::StreamSizeEntry> Sizes;
+ for (uint32_t I = 0; I < File.getNumStreams(); ++I) {
+ yaml::StreamSizeEntry Entry;
+ Entry.Size = File.getStreamByteSize(I);
+ Sizes.push_back(Entry);
+ }
+ Obj.StreamSizes.emplace(Sizes);
return Error::success();
}
@@ -52,6 +59,15 @@ Error YAMLOutputStyle::dumpStreamBlocks(
if (!opts::DumpStreamBlocks)
return Error::success();
+ std::vector<yaml::StreamMapEntry> Blocks;
+ for (uint32_t I = 0; I < File.getNumStreams(); ++I) {
+ yaml::StreamMapEntry Entry;
+ auto BlockList = File.getStreamBlockList(I);
+ Entry.Blocks.assign(BlockList.begin(), BlockList.end());
+ Blocks.push_back(Entry);
+ }
+ Obj.StreamMap.emplace(Blocks);
+
return Error::success();
}
More information about the llvm-commits
mailing list