diff options
author | Zachary Turner <zturner@google.com> | 2018-09-30 16:19:18 +0000 |
---|---|---|
committer | Zachary Turner <zturner@google.com> | 2018-09-30 16:19:18 +0000 |
commit | 518cb2d5608b8bedb68c7e626d380a1531d17145 (patch) | |
tree | 579366eede6aff93613a15054ffa1d9c25f887a1 /llvm/tools/llvm-pdbutil | |
parent | 5cd7be3c17ec68ae42d87b586ba608430488dde6 (diff) | |
download | bcm5719-llvm-518cb2d5608b8bedb68c7e626d380a1531d17145.tar.gz bcm5719-llvm-518cb2d5608b8bedb68c7e626d380a1531d17145.zip |
[PDB] Add native support for dumping array types.
llvm-svn: 343412
Diffstat (limited to 'llvm/tools/llvm-pdbutil')
-rw-r--r-- | llvm/tools/llvm-pdbutil/PrettyTypeDumper.cpp | 13 | ||||
-rw-r--r-- | llvm/tools/llvm-pdbutil/PrettyTypeDumper.h | 1 | ||||
-rw-r--r-- | llvm/tools/llvm-pdbutil/llvm-pdbutil.cpp | 11 | ||||
-rw-r--r-- | llvm/tools/llvm-pdbutil/llvm-pdbutil.h | 1 |
4 files changed, 24 insertions, 2 deletions
diff --git a/llvm/tools/llvm-pdbutil/PrettyTypeDumper.cpp b/llvm/tools/llvm-pdbutil/PrettyTypeDumper.cpp index 2de24038dcf..6f924521a75 100644 --- a/llvm/tools/llvm-pdbutil/PrettyTypeDumper.cpp +++ b/llvm/tools/llvm-pdbutil/PrettyTypeDumper.cpp @@ -19,6 +19,7 @@ #include "llvm/DebugInfo/PDB/IPDBSession.h" #include "llvm/DebugInfo/PDB/PDBSymbolExe.h" +#include "llvm/DebugInfo/PDB/PDBSymbolTypeArray.h" #include "llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h" #include "llvm/DebugInfo/PDB/PDBSymbolTypeEnum.h" #include "llvm/DebugInfo/PDB/PDBSymbolTypeFunctionSig.h" @@ -201,6 +202,9 @@ void TypeDumper::start(const PDBSymbolExe &Exe) { if (opts::pretty::Typedefs) dumpSymbolCategory<PDBSymbolTypeTypedef>(Printer, Exe, *this, "Typedefs"); + if (opts::pretty::Arrays) + dumpSymbolCategory<PDBSymbolTypeArray>(Printer, Exe, *this, "Arrays"); + if (opts::pretty::Pointers) dumpSymbolCategory<PDBSymbolTypePointer>(Printer, Exe, *this, "Pointers"); @@ -284,6 +288,15 @@ void TypeDumper::dump(const PDBSymbolTypeTypedef &Symbol) { Dumper.start(Symbol); } +void TypeDumper::dump(const PDBSymbolTypeArray &Symbol) { + auto ElementType = Symbol.getElementType(); + + ElementType->dump(*this); + Printer << "["; + WithColor(Printer, PDB_ColorItem::LiteralValue).get() << Symbol.getCount(); + Printer << "]"; +} + void TypeDumper::dump(const PDBSymbolTypeFunctionSig &Symbol) { FunctionDumper Dumper(Printer); Dumper.start(Symbol, nullptr, FunctionDumper::PointerType::None); diff --git a/llvm/tools/llvm-pdbutil/PrettyTypeDumper.h b/llvm/tools/llvm-pdbutil/PrettyTypeDumper.h index cb6fcb1add7..e63ebe03055 100644 --- a/llvm/tools/llvm-pdbutil/PrettyTypeDumper.h +++ b/llvm/tools/llvm-pdbutil/PrettyTypeDumper.h @@ -26,6 +26,7 @@ public: void dump(const PDBSymbolTypeEnum &Symbol) override; void dump(const PDBSymbolTypeTypedef &Symbol) override; void dump(const PDBSymbolTypeFunctionSig &Symbol) override; + void dump(const PDBSymbolTypeArray &Symbol) override; void dump(const PDBSymbolTypeBuiltin &Symbol) override; void dump(const PDBSymbolTypePointer &Symbol) override; diff --git a/llvm/tools/llvm-pdbutil/llvm-pdbutil.cpp b/llvm/tools/llvm-pdbutil/llvm-pdbutil.cpp index c9162dd1577..f71ff9ff1af 100644 --- a/llvm/tools/llvm-pdbutil/llvm-pdbutil.cpp +++ b/llvm/tools/llvm-pdbutil/llvm-pdbutil.cpp @@ -193,6 +193,8 @@ static cl::opt<bool> Compilands("compilands", static cl::opt<bool> Funcsigs("funcsigs", cl::desc("Dump function signature information"), cl::sub(DiaDumpSubcommand)); +static cl::opt<bool> Arrays("arrays", cl::desc("Dump array types"), + cl::sub(DiaDumpSubcommand)); } // namespace diadump namespace pretty { @@ -245,6 +247,8 @@ cl::opt<bool> Funcsigs("funcsigs", cl::desc("Display function signatures"), cl::cat(TypeCategory), cl::sub(PrettySubcommand)); cl::opt<bool> Pointers("pointers", cl::desc("Display pointer types"), cl::cat(TypeCategory), cl::sub(PrettySubcommand)); +cl::opt<bool> Arrays("arrays", cl::desc("Display arrays"), + cl::cat(TypeCategory), cl::sub(PrettySubcommand)); cl::opt<SymbolSortMode> SymbolOrder( "symbol-order", cl::desc("symbol sort order"), @@ -1015,7 +1019,8 @@ static void dumpDia(StringRef Path) { SymTypes.push_back(PDB_SymType::UDT); if (opts::diadump::Funcsigs) SymTypes.push_back(PDB_SymType::FunctionSig); - + if (opts::diadump::Arrays) + SymTypes.push_back(PDB_SymType::ArrayType); PdbSymbolIdField Ids = opts::diadump::NoSymIndexIds ? PdbSymbolIdField::None : PdbSymbolIdField::All; PdbSymbolIdField Recurse = PdbSymbolIdField::None; @@ -1182,7 +1187,8 @@ static void dumpPretty(StringRef Path) { } if (opts::pretty::Classes || opts::pretty::Enums || opts::pretty::Typedefs || - opts::pretty::Funcsigs || opts::pretty::Pointers) { + opts::pretty::Funcsigs || opts::pretty::Pointers || + opts::pretty::Arrays) { Printer.NewLine(); WithColor(Printer, PDB_ColorItem::SectionHeader).get() << "---TYPES---"; Printer.Indent(); @@ -1275,6 +1281,7 @@ static void dumpPretty(StringRef Path) { dumpInjectedSources(Printer, *Session); } + Printer.NewLine(); outs().flush(); } diff --git a/llvm/tools/llvm-pdbutil/llvm-pdbutil.h b/llvm/tools/llvm-pdbutil/llvm-pdbutil.h index eaedb1a56f9..cbccac29599 100644 --- a/llvm/tools/llvm-pdbutil/llvm-pdbutil.h +++ b/llvm/tools/llvm-pdbutil/llvm-pdbutil.h @@ -83,6 +83,7 @@ extern llvm::cl::opt<bool> Globals; extern llvm::cl::opt<bool> Classes; extern llvm::cl::opt<bool> Enums; extern llvm::cl::opt<bool> Funcsigs; +extern llvm::cl::opt<bool> Arrays; extern llvm::cl::opt<bool> Typedefs; extern llvm::cl::opt<bool> Pointers; extern llvm::cl::opt<bool> All; |