[llvm-pdbutil] Dig deeper into the PDB and DBI streams when explaining.
This will show more detail when using `llvm-pdbutil explain` on an
offset in the DBI or PDB streams. Specifically, it will dig into
individual header fields and substreams to give a more precise
description of what the byte represents.
llvm-svn: 328878
diff --git a/llvm/tools/llvm-pdbutil/llvm-pdbutil.cpp b/llvm/tools/llvm-pdbutil/llvm-pdbutil.cpp
index f472bfa..c96761f 100644
--- a/llvm/tools/llvm-pdbutil/llvm-pdbutil.cpp
+++ b/llvm/tools/llvm-pdbutil/llvm-pdbutil.cpp
@@ -615,9 +615,8 @@
cl::desc("<input PDB file>"), cl::Required,
cl::sub(ExplainSubcommand));
-cl::opt<uint64_t> Offset("offset", cl::desc("The file offset to explain"),
- cl::sub(ExplainSubcommand), cl::Required,
- cl::OneOrMore);
+cl::list<uint64_t> Offsets("offset", cl::desc("The file offset to explain"),
+ cl::sub(ExplainSubcommand), cl::OneOrMore);
} // namespace explain
}
@@ -1091,9 +1090,12 @@
static void explain() {
std::unique_ptr<IPDBSession> Session;
PDBFile &File = loadPDB(opts::explain::InputFilename.front(), Session);
- auto O = llvm::make_unique<ExplainOutputStyle>(File, opts::explain::Offset);
- ExitOnErr(O->dump());
+ for (uint64_t Off : opts::explain::Offsets) {
+ auto O = llvm::make_unique<ExplainOutputStyle>(File, Off);
+
+ ExitOnErr(O->dump());
+ }
}
static bool parseRange(StringRef Str,