diff options
Diffstat (limited to 'llvm/tools/llvm-dwarfdump/llvm-dwarfdump.cpp')
-rw-r--r-- | llvm/tools/llvm-dwarfdump/llvm-dwarfdump.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/llvm/tools/llvm-dwarfdump/llvm-dwarfdump.cpp b/llvm/tools/llvm-dwarfdump/llvm-dwarfdump.cpp index 9e6fc773139..0bd6ca73b1b 100644 --- a/llvm/tools/llvm-dwarfdump/llvm-dwarfdump.cpp +++ b/llvm/tools/llvm-dwarfdump/llvm-dwarfdump.cpp @@ -201,6 +201,10 @@ static opt<bool> SummarizeTypes("summarize-types", desc("Abbreviate the description of type unit entries"), cat(DwarfDumpCategory)); +static cl::opt<bool> + Statistics("statistics", + cl::desc("Emit JSON-formatted debug info quality metrics."), + cat(DwarfDumpCategory)); static opt<bool> Verify("verify", desc("Verify the DWARF debug info"), cat(DwarfDumpCategory)); static opt<bool> Quiet("quiet", desc("Use with -verify to not emit to STDOUT."), @@ -301,6 +305,9 @@ static void filterByName(const StringSet<> &Names, } } +bool collectStatsForObjectFile(ObjectFile &Obj, DWARFContext &DICtx, + Twine Filename, raw_ostream &OS); + static bool dumpObjectFile(ObjectFile &Obj, DWARFContext &DICtx, Twine Filename, raw_ostream &OS) { logAllUnhandledErrors(DICtx.loadRegisterInfo(Obj), errs(), @@ -536,7 +543,10 @@ int main(int argc, char **argv) { return handleFile(Object, verifyObjectFile, OS); })) exit(1); - } else + } else if (Statistics) + for (auto Object : Objects) + handleFile(Object, collectStatsForObjectFile, OS); + else for (auto Object : Objects) handleFile(Object, dumpObjectFile, OS); |