diff options
| author | Zachary Turner <zturner@google.com> | 2016-06-14 18:49:36 +0000 |
|---|---|---|
| committer | Zachary Turner <zturner@google.com> | 2016-06-14 18:49:36 +0000 |
| commit | fe5bc0249208e9f3e5bee12a90969ed6d55af01f (patch) | |
| tree | 3e6b830c5530317273c4574e69748198a60a5a22 /llvm/tools/llvm-pdbdump/PdbYaml.cpp | |
| parent | 957a151fd14de8ab72ee17fd3d21c8550f9d9c7a (diff) | |
| download | bcm5719-llvm-fe5bc0249208e9f3e5bee12a90969ed6d55af01f.tar.gz bcm5719-llvm-fe5bc0249208e9f3e5bee12a90969ed6d55af01f.zip | |
[pdb] Actually write a PDB to disk from YAML.
llvm-svn: 272692
Diffstat (limited to 'llvm/tools/llvm-pdbdump/PdbYaml.cpp')
| -rw-r--r-- | llvm/tools/llvm-pdbdump/PdbYaml.cpp | 34 |
1 files changed, 20 insertions, 14 deletions
diff --git a/llvm/tools/llvm-pdbdump/PdbYaml.cpp b/llvm/tools/llvm-pdbdump/PdbYaml.cpp index efaa986a817..fa15ff2b39d 100644 --- a/llvm/tools/llvm-pdbdump/PdbYaml.cpp +++ b/llvm/tools/llvm-pdbdump/PdbYaml.cpp @@ -16,17 +16,31 @@ using namespace llvm::yaml; using namespace llvm::pdb; using namespace llvm::pdb::yaml; +void MappingTraits<PDBFile::SuperBlock>::mapping(IO &IO, + PDBFile::SuperBlock &SB) { + if (!IO.outputting()) { + ::memcpy(SB.MagicBytes, MsfMagic, sizeof(MsfMagic)); + } + + IO.mapRequired("BlockSize", SB.BlockSize); + IO.mapRequired("Unknown0", SB.Unknown0); + IO.mapRequired("NumBlocks", SB.NumBlocks); + IO.mapRequired("NumDirectoryBytes", SB.NumDirectoryBytes); + IO.mapRequired("Unknown1", SB.Unknown1); + IO.mapRequired("BlockMapAddr", SB.BlockMapAddr); +} + +void MappingTraits<StreamBlockList>::mapping(IO &IO, StreamBlockList &SB) { + IO.mapRequired("Stream", SB.Blocks); +} + void MappingTraits<MsfHeaders>::mapping(IO &IO, MsfHeaders &Obj) { - IO.mapRequired("BlockSize", Obj.BlockSize); - IO.mapRequired("Unknown0", Obj.Unknown0); - IO.mapRequired("NumBlocks", Obj.BlockCount); - IO.mapRequired("NumDirectoryBytes", Obj.NumDirectoryBytes); - IO.mapRequired("Unknown1", Obj.Unknown1); - IO.mapRequired("BlockMapAddr", Obj.BlockMapIndex); + IO.mapRequired("SuperBlock", Obj.SuperBlock); IO.mapRequired("NumDirectoryBlocks", Obj.NumDirectoryBlocks); IO.mapRequired("BlockMapOffset", Obj.BlockMapOffset); IO.mapRequired("DirectoryBlocks", Obj.DirectoryBlocks); IO.mapRequired("NumStreams", Obj.NumStreams); + IO.mapRequired("FileSize", Obj.FileSize); } void MappingTraits<PdbObject>::mapping(IO &IO, PdbObject &Obj) { @@ -34,11 +48,3 @@ void MappingTraits<PdbObject>::mapping(IO &IO, PdbObject &Obj) { 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); -} |

