From d218c261247edb8b44132fcff3588a67494effb6 Mon Sep 17 00:00:00 2001 From: Zachary Turner Date: Fri, 22 Jul 2016 15:46:37 +0000 Subject: [pdb] Round-trip module & file info to/from YAML. This implements support for writing compiland and compiland source file info to a binary PDB. This is tested by adding support for dumping these fields from an existing PDB to yaml, reading them back in, and dumping them again and verifying the values are as expected. llvm-svn: 276426 --- llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp') diff --git a/llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp b/llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp index 62f215ddc8a..0600bcd952c 100644 --- a/llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp +++ b/llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp @@ -285,6 +285,16 @@ cl::opt PdbStream("pdb-stream", cl::opt DbiStream("dbi-stream", cl::desc("Dump the DBI Stream (Stream 2)"), cl::sub(PdbToYamlSubcommand), cl::init(false)); +cl::opt + DbiModuleInfo("dbi-module-info", + cl::desc("Dump DBI Module Information (implies -dbi-stream)"), + cl::sub(PdbToYamlSubcommand), cl::init(false)); + +cl::opt DbiModuleSourceFileInfo( + "dbi-module-source-info", + cl::desc( + "Dump DBI Module Source File Information (implies -dbi-module-info"), + cl::sub(PdbToYamlSubcommand), cl::init(false)); cl::list InputFilename(cl::Positional, cl::desc(""), cl::Required, @@ -375,6 +385,11 @@ static void yamlToPdb(StringRef Path) { DbiBuilder.setPdbDllRbld(YamlObj.DbiStream->PdbDllRbld); DbiBuilder.setPdbDllVersion(YamlObj.DbiStream->PdbDllVersion); DbiBuilder.setVersionHeader(YamlObj.DbiStream->VerHeader); + for (const auto &MI : YamlObj.DbiStream->ModInfos) { + ExitOnErr(DbiBuilder.addModuleInfo(MI.Obj, MI.Mod)); + for (auto S : MI.SourceFiles) + ExitOnErr(DbiBuilder.addModuleSourceFile(MI.Mod, S)); + } } auto Pdb = Builder.build(); -- cgit v1.2.3