diff options
author | Zachary Turner <zturner@google.com> | 2015-02-22 21:45:38 +0000 |
---|---|---|
committer | Zachary Turner <zturner@google.com> | 2015-02-22 21:45:38 +0000 |
commit | fc4ecedb754b67e00b31b0ff8be2e450e2505467 (patch) | |
tree | 5a7358bd84469a0d600ca22db50dda729c754be7 /llvm/tools | |
parent | 5e5d7840fbf292753232cef33b92c94fbee1d2e9 (diff) | |
download | bcm5719-llvm-fc4ecedb754b67e00b31b0ff8be2e450e2505467.tar.gz bcm5719-llvm-fc4ecedb754b67e00b31b0ff8be2e450e2505467.zip |
[llvm-pdbdump] Simplify options and output.
This removes a wealth of options, and instead now only provides
three options. -symbols, -types, and -compilands. This greatly
simplifies use of the tool, and makes it easier to understand
what you're going to see when you run the tool.
llvm-svn: 230182
Diffstat (limited to 'llvm/tools')
-rw-r--r-- | llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp | 86 |
1 files changed, 15 insertions, 71 deletions
diff --git a/llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp b/llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp index f350c430a8b..cc51dc0d222 100644 --- a/llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp +++ b/llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp @@ -45,71 +45,10 @@ cl::list<std::string> InputFilenames(cl::Positional, cl::desc("<input PDB files>"), cl::OneOrMore); -cl::opt<bool> DumpHidden( - "hidden", - cl::desc("Attempt to find hidden symbols. This can find additional\n" - "symbols that cannot be found otherwise. For example, vtables\n" - "can only be found with an exhaustive search such as this. Be\n" - "warned that the performance can be prohibitive on large PDB " - "files.")); - -cl::opt<bool> DumpAll( - "all", - cl::desc("Specifies all other options except -hidden and -group-by")); -cl::opt<bool> DumpObjFiles("compilands", cl::desc("Display object files")); -cl::opt<bool> DumpFuncs("functions", cl::desc("Display function information")); -cl::opt<bool> DumpData( - "data", - cl::desc("Display global, class, and constant variable information.")); -cl::opt<bool> DumpLabels("labels", cl::desc("Display labels")); -cl::opt<bool> DumpPublic("public", cl::desc("Display public symbols")); -cl::opt<bool> DumpClasses("classes", cl::desc("Display class type information")); -cl::opt<bool> DumpEnums("enums", cl::desc("Display enum information")); -cl::opt<bool> DumpFuncsigs("funcsigs", - cl::desc("Display unique function signatures")); -cl::opt<bool> DumpTypedefs("typedefs", cl::desc("Display typedefs")); -cl::opt<bool> DumpThunks("thunks", cl::desc("Display thunks")); -cl::opt<bool> DumpVtables( - "vtables", - cl::desc("Display virtual function tables (only with --exhaustive)")); - -static cl::opt<PDB_DumpType> DumpMode( - "group-by", cl::init(PDB_DumpType::ByType), cl::desc("Dump mode:"), - cl::values( - clEnumValN(PDB_DumpType::ByType, "type", - "(Default) Display symbols grouped by type"), - clEnumValN(PDB_DumpType::ByObjFile, "compiland", - "Display symbols grouped under their containing object " - "file."), - clEnumValN(PDB_DumpType::Both, "both", - "Display symbols grouped by type, and then by object file."), - clEnumValEnd)); -} - -#define SET_DUMP_FLAG_FROM_OPT(Var, Flag, Opt) \ - if (opts::Opt) \ - Var |= Flag; - -PDB_DumpFlags CalculateDumpFlags() { - PDB_DumpFlags Flags = PDB_DF_None; - - SET_DUMP_FLAG_FROM_OPT(Flags, PDB_DF_Hidden, DumpHidden) - - if (opts::DumpAll) - return Flags | PDB_DF_All; - - SET_DUMP_FLAG_FROM_OPT(Flags, PDB_DF_ObjFiles, DumpObjFiles) - SET_DUMP_FLAG_FROM_OPT(Flags, PDB_DF_Functions, DumpFuncs) - SET_DUMP_FLAG_FROM_OPT(Flags, PDB_DF_Data, DumpData) - SET_DUMP_FLAG_FROM_OPT(Flags, PDB_DF_Labels, DumpLabels) - SET_DUMP_FLAG_FROM_OPT(Flags, PDB_DF_PublicSyms, DumpPublic) - SET_DUMP_FLAG_FROM_OPT(Flags, PDB_DF_Classes, DumpClasses) - SET_DUMP_FLAG_FROM_OPT(Flags, PDB_DF_Enums, DumpEnums) - SET_DUMP_FLAG_FROM_OPT(Flags, PDB_DF_Funcsigs, DumpFuncsigs) - SET_DUMP_FLAG_FROM_OPT(Flags, PDB_DF_Typedefs, DumpTypedefs) - SET_DUMP_FLAG_FROM_OPT(Flags, PDB_DF_Thunks, DumpThunks) - SET_DUMP_FLAG_FROM_OPT(Flags, PDB_DF_VTables, DumpVtables) - return Flags; +cl::opt<bool> DumpCompilands("compilands", cl::desc("Display compilands")); +cl::opt<bool> DumpSymbols("symbols", + cl::desc("Display symbols (implies --compilands")); +cl::opt<bool> DumpTypes("types", cl::desc("Display types")); } static void dumpInput(StringRef Path) { @@ -120,19 +59,24 @@ static void dumpInput(StringRef Path) { outs() << " is available for your platform."; return; } - PDB_DumpFlags Flags = CalculateDumpFlags(); - if (opts::DumpMode != opts::PDB_DumpType::ByObjFile) - Flags |= PDB_DF_Children; auto GlobalScope(Session->getGlobalScope()); + PDB_DumpFlags Flags = PDB_DF_None; + if (opts::DumpTypes) + Flags |= PDB_DF_Children | PDB_DF_Enums | PDB_DF_Funcsigs | + PDB_DF_Typedefs | PDB_DF_VTables; GlobalScope->dump(outs(), 0, PDB_DumpLevel::Normal, Flags); outs() << "\n"; - if (opts::DumpMode != opts::PDB_DumpType::ByType) { + if (opts::DumpSymbols || opts::DumpCompilands) { + outs() << "Dumping compilands\n"; auto Compilands = GlobalScope->findAllChildren<PDBSymbolCompiland>(); + Flags = PDB_DF_None; + if (opts::DumpSymbols) + Flags |= PDB_DF_Children | PDB_DF_Data | PDB_DF_Functions | + PDB_DF_Thunks | PDB_DF_Labels; while (auto Compiland = Compilands->getNext()) { - Compiland->dump(outs(), 0, PDB_DumpLevel::Detailed, - Flags | PDB_DF_Children); + Compiland->dump(outs(), 2, PDB_DumpLevel::Detailed, Flags); outs() << "\n"; } } |