diff options
Diffstat (limited to 'llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp')
| -rw-r--r-- | llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp b/llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp index 597683291ff..4a4c64b80cc 100644 --- a/llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp +++ b/llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp @@ -15,6 +15,7 @@ #include "llvm-pdbdump.h" #include "CompilandDumper.h" +#include "ExternalSymbolDumper.h" #include "FunctionDumper.h" #include "LinePrinter.h" #include "TypeDumper.h" @@ -58,6 +59,7 @@ cl::list<std::string> InputFilenames(cl::Positional, cl::OptionCategory TypeCategory("Symbol Type Options"); cl::OptionCategory FilterCategory("Filtering Options"); +cl::OptionCategory OtherOptions("Other Options"); cl::opt<bool> Compilands("compilands", cl::desc("Display compilands"), cl::cat(TypeCategory)); @@ -65,11 +67,18 @@ cl::opt<bool> Symbols("symbols", cl::desc("Display symbols for each compiland"), cl::cat(TypeCategory)); cl::opt<bool> Globals("globals", cl::desc("Dump global symbols"), cl::cat(TypeCategory)); +cl::opt<bool> Externals("externals", cl::desc("Dump external symbols"), + cl::cat(TypeCategory)); cl::opt<bool> Types("types", cl::desc("Display types"), cl::cat(TypeCategory)); cl::opt<bool> All("all", cl::desc("Implies all other options in 'Symbol Types' category"), cl::cat(TypeCategory)); +cl::opt<uint64_t> LoadAddress( + "load-address", + cl::desc("Assume the module is loaded at the specified address"), + cl::cat(OtherOptions)); + cl::list<std::string> ExcludeTypes("exclude-types", cl::desc("Exclude types by regular expression"), @@ -121,6 +130,8 @@ static void dumpInput(StringRef Path) { << "'. An unknown error occured.\n"; return; } + if (opts::LoadAddress) + Session->setLoadAddress(opts::LoadAddress); LinePrinter Printer(2, outs()); @@ -215,6 +226,13 @@ static void dumpInput(StringRef Path) { } Printer.Unindent(); } + if (opts::Externals) { + Printer.NewLine(); + WithColor(Printer, PDB_ColorItem::SectionHeader).get() << "---EXTERNALS---"; + Printer.Indent(); + ExternalSymbolDumper Dumper(Printer); + Dumper.start(*GlobalScope); + } outs().flush(); } @@ -240,6 +258,7 @@ int main(int argc_, const char *argv_[]) { opts::Symbols = true; opts::Globals = true; opts::Types = true; + opts::Externals = true; } if (opts::ExcludeCompilerGenerated) { opts::ExcludeTypes.push_back("__vc_attributes"); |

