diff options
Diffstat (limited to 'llvm/tools/llvm-pdbdump')
-rw-r--r-- | llvm/tools/llvm-pdbdump/BuiltinDumper.cpp | 3 | ||||
-rw-r--r-- | llvm/tools/llvm-pdbdump/BuiltinDumper.h | 2 | ||||
-rw-r--r-- | llvm/tools/llvm-pdbdump/ClassDefinitionDumper.cpp | 54 | ||||
-rw-r--r-- | llvm/tools/llvm-pdbdump/ClassDefinitionDumper.h | 24 | ||||
-rw-r--r-- | llvm/tools/llvm-pdbdump/CompilandDumper.cpp | 31 | ||||
-rw-r--r-- | llvm/tools/llvm-pdbdump/CompilandDumper.h | 25 | ||||
-rw-r--r-- | llvm/tools/llvm-pdbdump/FunctionDumper.cpp | 47 | ||||
-rw-r--r-- | llvm/tools/llvm-pdbdump/FunctionDumper.h | 28 | ||||
-rw-r--r-- | llvm/tools/llvm-pdbdump/TypeDumper.cpp | 21 | ||||
-rw-r--r-- | llvm/tools/llvm-pdbdump/TypeDumper.h | 13 | ||||
-rw-r--r-- | llvm/tools/llvm-pdbdump/TypedefDumper.cpp | 33 | ||||
-rw-r--r-- | llvm/tools/llvm-pdbdump/TypedefDumper.h | 22 | ||||
-rw-r--r-- | llvm/tools/llvm-pdbdump/VariableDumper.cpp | 47 | ||||
-rw-r--r-- | llvm/tools/llvm-pdbdump/VariableDumper.h | 28 | ||||
-rw-r--r-- | llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp | 12 |
15 files changed, 154 insertions, 236 deletions
diff --git a/llvm/tools/llvm-pdbdump/BuiltinDumper.cpp b/llvm/tools/llvm-pdbdump/BuiltinDumper.cpp index 03f3d42808b..1c1fe89c2cc 100644 --- a/llvm/tools/llvm-pdbdump/BuiltinDumper.cpp +++ b/llvm/tools/llvm-pdbdump/BuiltinDumper.cpp @@ -18,8 +18,7 @@ using namespace llvm; BuiltinDumper::BuiltinDumper(LinePrinter &P) : PDBSymDumper(false), Printer(P) {} -void BuiltinDumper::start(const PDBSymbolTypeBuiltin &Symbol, - llvm::raw_ostream &OS) { +void BuiltinDumper::start(const PDBSymbolTypeBuiltin &Symbol) { PDB_BuiltinType Type = Symbol.getBuiltinType(); switch (Type) { case PDB_BuiltinType::Float: diff --git a/llvm/tools/llvm-pdbdump/BuiltinDumper.h b/llvm/tools/llvm-pdbdump/BuiltinDumper.h index 99e11a11445..8cf984a0ca6 100644 --- a/llvm/tools/llvm-pdbdump/BuiltinDumper.h +++ b/llvm/tools/llvm-pdbdump/BuiltinDumper.h @@ -20,7 +20,7 @@ class BuiltinDumper : public PDBSymDumper { public: BuiltinDumper(LinePrinter &P); - void start(const PDBSymbolTypeBuiltin &Symbol, llvm::raw_ostream &OS); + void start(const PDBSymbolTypeBuiltin &Symbol); private: LinePrinter &Printer; diff --git a/llvm/tools/llvm-pdbdump/ClassDefinitionDumper.cpp b/llvm/tools/llvm-pdbdump/ClassDefinitionDumper.cpp index d6fcaea3eda..20e3fc4c795 100644 --- a/llvm/tools/llvm-pdbdump/ClassDefinitionDumper.cpp +++ b/llvm/tools/llvm-pdbdump/ClassDefinitionDumper.cpp @@ -31,15 +31,14 @@ using namespace llvm; ClassDefinitionDumper::ClassDefinitionDumper(LinePrinter &P) : PDBSymDumper(true), Printer(P) {} -void ClassDefinitionDumper::start(const PDBSymbolTypeUDT &Class, - raw_ostream &OS, int Indent) { +void ClassDefinitionDumper::start(const PDBSymbolTypeUDT &Class) { std::string Name = Class.getName(); WithColor(Printer, PDB_ColorItem::Keyword).get() << "class "; WithColor(Printer, PDB_ColorItem::Type).get() << Class.getName(); Printer << " {"; auto Children = Class.findAllChildren(); if (Children->getChildCount() == 0) { - OS << "}"; + Printer << "}"; return; } @@ -78,22 +77,20 @@ void ClassDefinitionDumper::start(const PDBSymbolTypeUDT &Class, } int Count = 0; - Count += dumpAccessGroup((PDB_MemberAccess)0, Groups[0], OS, Indent); + Count += dumpAccessGroup((PDB_MemberAccess)0, Groups[0]); Count += dumpAccessGroup(PDB_MemberAccess::Public, - Groups[(int)PDB_MemberAccess::Public], OS, Indent); - Count += - dumpAccessGroup(PDB_MemberAccess::Protected, - Groups[(int)PDB_MemberAccess::Protected], OS, Indent); + Groups[(int)PDB_MemberAccess::Public]); + Count += dumpAccessGroup(PDB_MemberAccess::Protected, + Groups[(int)PDB_MemberAccess::Protected]); Count += dumpAccessGroup(PDB_MemberAccess::Private, - Groups[(int)PDB_MemberAccess::Private], OS, Indent); + Groups[(int)PDB_MemberAccess::Private]); if (Count > 0) Printer.NewLine(); - OS << "}"; + Printer << "}"; } int ClassDefinitionDumper::dumpAccessGroup(PDB_MemberAccess Access, - const SymbolGroup &Group, - raw_ostream &OS, int Indent) { + const SymbolGroup &Group) { if (Group.Functions.empty() && Group.Data.empty() && Group.Unknown.empty()) return 0; @@ -115,46 +112,41 @@ int ClassDefinitionDumper::dumpAccessGroup(PDB_MemberAccess Access, for (auto iter = Group.Functions.begin(), end = Group.Functions.end(); iter != end; ++iter) { ++Count; - (*iter)->dump(OS, Indent + 2, *this); + (*iter)->dump(*this); } for (auto iter = Group.Data.begin(), end = Group.Data.end(); iter != end; ++iter) { ++Count; - (*iter)->dump(OS, Indent + 2, *this); + (*iter)->dump(*this); } for (auto iter = Group.Unknown.begin(), end = Group.Unknown.end(); iter != end; ++iter) { ++Count; - (*iter)->dump(OS, Indent + 2, *this); + (*iter)->dump(*this); } Printer.Unindent(); return Count; } -void ClassDefinitionDumper::dump(const PDBSymbolTypeBaseClass &Symbol, - raw_ostream &OS, int Indent) {} +void ClassDefinitionDumper::dump(const PDBSymbolTypeBaseClass &Symbol) {} -void ClassDefinitionDumper::dump(const PDBSymbolData &Symbol, raw_ostream &OS, - int Indent) { +void ClassDefinitionDumper::dump(const PDBSymbolData &Symbol) { VariableDumper Dumper(Printer); - Dumper.start(Symbol, OS, Indent); + Dumper.start(Symbol); } -void ClassDefinitionDumper::dump(const PDBSymbolFunc &Symbol, raw_ostream &OS, - int Indent) { +void ClassDefinitionDumper::dump(const PDBSymbolFunc &Symbol) { if (Printer.IsSymbolExcluded(Symbol.getName())) return; Printer.NewLine(); FunctionDumper Dumper(Printer); - Dumper.start(Symbol, FunctionDumper::PointerType::None, OS, Indent); + Dumper.start(Symbol, FunctionDumper::PointerType::None); } -void ClassDefinitionDumper::dump(const PDBSymbolTypeVTable &Symbol, - raw_ostream &OS, int Indent) {} +void ClassDefinitionDumper::dump(const PDBSymbolTypeVTable &Symbol) {} -void ClassDefinitionDumper::dump(const PDBSymbolTypeEnum &Symbol, - raw_ostream &OS, int Indent) { +void ClassDefinitionDumper::dump(const PDBSymbolTypeEnum &Symbol) { if (Printer.IsTypeExcluded(Symbol.getName())) return; @@ -163,15 +155,13 @@ void ClassDefinitionDumper::dump(const PDBSymbolTypeEnum &Symbol, WithColor(Printer, PDB_ColorItem::Type).get() << Symbol.getName(); } -void ClassDefinitionDumper::dump(const PDBSymbolTypeTypedef &Symbol, - raw_ostream &OS, int Indent) { +void ClassDefinitionDumper::dump(const PDBSymbolTypeTypedef &Symbol) { if (Printer.IsTypeExcluded(Symbol.getName())) return; Printer.NewLine(); TypedefDumper Dumper(Printer); - Dumper.start(Symbol, OS, Indent); + Dumper.start(Symbol); } -void ClassDefinitionDumper::dump(const PDBSymbolTypeUDT &Symbol, - raw_ostream &OS, int Indent) {} +void ClassDefinitionDumper::dump(const PDBSymbolTypeUDT &Symbol) {} diff --git a/llvm/tools/llvm-pdbdump/ClassDefinitionDumper.h b/llvm/tools/llvm-pdbdump/ClassDefinitionDumper.h index 092e3b1f2e0..5b48ba879cf 100644 --- a/llvm/tools/llvm-pdbdump/ClassDefinitionDumper.h +++ b/llvm/tools/llvm-pdbdump/ClassDefinitionDumper.h @@ -26,20 +26,15 @@ class ClassDefinitionDumper : public PDBSymDumper { public: ClassDefinitionDumper(LinePrinter &P); - void start(const PDBSymbolTypeUDT &Exe, raw_ostream &OS, int Indent); + void start(const PDBSymbolTypeUDT &Exe); - void dump(const PDBSymbolTypeBaseClass &Symbol, raw_ostream &OS, - int Indent) override; - void dump(const PDBSymbolData &Symbol, raw_ostream &OS, int Indent) override; - void dump(const PDBSymbolTypeEnum &Symbol, raw_ostream &OS, - int Indent) override; - void dump(const PDBSymbolFunc &Symbol, raw_ostream &OS, int Indent) override; - void dump(const PDBSymbolTypeTypedef &Symbol, raw_ostream &OS, - int Indent) override; - void dump(const PDBSymbolTypeUDT &Symbol, raw_ostream &OS, - int Indent) override; - void dump(const PDBSymbolTypeVTable &Symbol, raw_ostream &OS, - int Indent) override; + void dump(const PDBSymbolTypeBaseClass &Symbol) override; + void dump(const PDBSymbolData &Symbol) override; + void dump(const PDBSymbolTypeEnum &Symbol) override; + void dump(const PDBSymbolFunc &Symbol) override; + void dump(const PDBSymbolTypeTypedef &Symbol) override; + void dump(const PDBSymbolTypeUDT &Symbol) override; + void dump(const PDBSymbolTypeVTable &Symbol) override; private: LinePrinter &Printer; @@ -60,8 +55,7 @@ private: }; typedef std::unordered_map<int, SymbolGroup> SymbolGroupByAccess; - int dumpAccessGroup(PDB_MemberAccess Access, const SymbolGroup &Group, - raw_ostream &OS, int Indent); + int dumpAccessGroup(PDB_MemberAccess Access, const SymbolGroup &Group); }; } diff --git a/llvm/tools/llvm-pdbdump/CompilandDumper.cpp b/llvm/tools/llvm-pdbdump/CompilandDumper.cpp index 14197a8b48e..accb2debd27 100644 --- a/llvm/tools/llvm-pdbdump/CompilandDumper.cpp +++ b/llvm/tools/llvm-pdbdump/CompilandDumper.cpp @@ -38,14 +38,11 @@ using namespace llvm; CompilandDumper::CompilandDumper(LinePrinter &P) : PDBSymDumper(true), Printer(P) {} -void CompilandDumper::dump(const PDBSymbolCompilandDetails &Symbol, - raw_ostream &OS, int Indent) {} +void CompilandDumper::dump(const PDBSymbolCompilandDetails &Symbol) {} -void CompilandDumper::dump(const PDBSymbolCompilandEnv &Symbol, raw_ostream &OS, - int Indent) {} +void CompilandDumper::dump(const PDBSymbolCompilandEnv &Symbol) {} -void CompilandDumper::start(const PDBSymbolCompiland &Symbol, raw_ostream &OS, - int Indent, bool Children) { +void CompilandDumper::start(const PDBSymbolCompiland &Symbol, bool Children) { std::string FullName = Symbol.getName(); if (Printer.IsCompilandExcluded(FullName)) return; @@ -58,12 +55,11 @@ void CompilandDumper::start(const PDBSymbolCompiland &Symbol, raw_ostream &OS, auto ChildrenEnum = Symbol.findAllChildren(); Printer.Indent(); while (auto Child = ChildrenEnum->getNext()) - Child->dump(OS, Indent + 2, *this); + Child->dump(*this); Printer.Unindent(); } -void CompilandDumper::dump(const PDBSymbolData &Symbol, raw_ostream &OS, - int Indent) { +void CompilandDumper::dump(const PDBSymbolData &Symbol) { if (Printer.IsSymbolExcluded(Symbol.getName())) return; @@ -88,8 +84,7 @@ void CompilandDumper::dump(const PDBSymbolData &Symbol, raw_ostream &OS, WithColor(Printer, PDB_ColorItem::Identifier).get() << Symbol.getName(); } -void CompilandDumper::dump(const PDBSymbolFunc &Symbol, raw_ostream &OS, - int Indent) { +void CompilandDumper::dump(const PDBSymbolFunc &Symbol) { if (Symbol.getLength() == 0) return; if (Printer.IsSymbolExcluded(Symbol.getName())) @@ -97,11 +92,10 @@ void CompilandDumper::dump(const PDBSymbolFunc &Symbol, raw_ostream &OS, Printer.NewLine(); FunctionDumper Dumper(Printer); - Dumper.start(Symbol, FunctionDumper::PointerType::None, OS, Indent); + Dumper.start(Symbol, FunctionDumper::PointerType::None); } -void CompilandDumper::dump(const PDBSymbolLabel &Symbol, raw_ostream &OS, - int Indent) { +void CompilandDumper::dump(const PDBSymbolLabel &Symbol) { if (Printer.IsSymbolExcluded(Symbol.getName())) return; @@ -112,8 +106,7 @@ void CompilandDumper::dump(const PDBSymbolLabel &Symbol, raw_ostream &OS, WithColor(Printer, PDB_ColorItem::Identifier).get() << Symbol.getName(); } -void CompilandDumper::dump(const PDBSymbolThunk &Symbol, raw_ostream &OS, - int Indent) { +void CompilandDumper::dump(const PDBSymbolThunk &Symbol) { if (Printer.IsSymbolExcluded(Symbol.getName())) return; @@ -137,11 +130,9 @@ void CompilandDumper::dump(const PDBSymbolThunk &Symbol, raw_ostream &OS, WithColor(Printer, PDB_ColorItem::Identifier).get() << Name; } -void CompilandDumper::dump(const PDBSymbolTypeTypedef &Symbol, raw_ostream &OS, - int Indent) {} +void CompilandDumper::dump(const PDBSymbolTypeTypedef &Symbol) {} -void CompilandDumper::dump(const PDBSymbolUnknown &Symbol, raw_ostream &OS, - int Indent) { +void CompilandDumper::dump(const PDBSymbolUnknown &Symbol) { Printer.NewLine(); Printer << "unknown (" << Symbol.getSymTag() << ")"; } diff --git a/llvm/tools/llvm-pdbdump/CompilandDumper.h b/llvm/tools/llvm-pdbdump/CompilandDumper.h index f17fa449327..0d1d27cd7a4 100644 --- a/llvm/tools/llvm-pdbdump/CompilandDumper.h +++ b/llvm/tools/llvm-pdbdump/CompilandDumper.h @@ -20,21 +20,16 @@ class CompilandDumper : public PDBSymDumper { public: CompilandDumper(LinePrinter &P); - void start(const PDBSymbolCompiland &Symbol, raw_ostream &OS, int Indent, - bool Children); - - void dump(const PDBSymbolCompilandDetails &Symbol, raw_ostream &OS, - int Indent) override; - void dump(const PDBSymbolCompilandEnv &Symbol, raw_ostream &OS, - int Indent) override; - void dump(const PDBSymbolData &Symbol, raw_ostream &OS, int Indent) override; - void dump(const PDBSymbolFunc &Symbol, raw_ostream &OS, int Indent) override; - void dump(const PDBSymbolLabel &Symbol, raw_ostream &OS, int Indent) override; - void dump(const PDBSymbolThunk &Symbol, raw_ostream &OS, int Indent) override; - void dump(const PDBSymbolTypeTypedef &Symbol, raw_ostream &OS, - int Indent) override; - void dump(const PDBSymbolUnknown &Symbol, raw_ostream &OS, - int Indent) override; + void start(const PDBSymbolCompiland &Symbol, bool Children); + + void dump(const PDBSymbolCompilandDetails &Symbol) override; + void dump(const PDBSymbolCompilandEnv &Symbol) override; + void dump(const PDBSymbolData &Symbol) override; + void dump(const PDBSymbolFunc &Symbol) override; + void dump(const PDBSymbolLabel &Symbol) override; + void dump(const PDBSymbolThunk &Symbol) override; + void dump(const PDBSymbolTypeTypedef &Symbol) override; + void dump(const PDBSymbolUnknown &Symbol) override; private: LinePrinter &Printer; diff --git a/llvm/tools/llvm-pdbdump/FunctionDumper.cpp b/llvm/tools/llvm-pdbdump/FunctionDumper.cpp index aafbbfa6468..ac7ab495756 100644 --- a/llvm/tools/llvm-pdbdump/FunctionDumper.cpp +++ b/llvm/tools/llvm-pdbdump/FunctionDumper.cpp @@ -48,10 +48,9 @@ FunctionDumper::FunctionDumper(LinePrinter &P) : PDBSymDumper(true), Printer(P) {} void FunctionDumper::start(const PDBSymbolTypeFunctionSig &Symbol, - const char *Name, PointerType Pointer, - raw_ostream &OS) { + const char *Name, PointerType Pointer) { auto ReturnType = Symbol.getReturnType(); - ReturnType->dump(OS, 0, *this); + ReturnType->dump(*this); Printer << " "; uint32_t ClassParentId = Symbol.getClassParentId(); auto ClassParent = @@ -96,7 +95,7 @@ void FunctionDumper::start(const PDBSymbolTypeFunctionSig &Symbol, if (auto ChildEnum = Symbol.getArguments()) { uint32_t Index = 0; while (auto Arg = ChildEnum->getNext()) { - Arg->dump(OS, 0, *this); + Arg->dump(*this); if (++Index < ChildEnum->getChildCount()) Printer << ", "; } @@ -109,8 +108,7 @@ void FunctionDumper::start(const PDBSymbolTypeFunctionSig &Symbol, WithColor(Printer, PDB_ColorItem::Keyword).get() << " volatile"; } -void FunctionDumper::start(const PDBSymbolFunc &Symbol, PointerType Pointer, - raw_ostream &OS, int Indent) { +void FunctionDumper::start(const PDBSymbolFunc &Symbol, PointerType Pointer) { uint32_t FuncStart = Symbol.getRelativeVirtualAddress(); uint32_t FuncEnd = FuncStart + Symbol.getLength(); @@ -150,7 +148,7 @@ void FunctionDumper::start(const PDBSymbolFunc &Symbol, PointerType Pointer, } auto ReturnType = Signature->getReturnType(); - ReturnType->dump(OS, 0, *this); + ReturnType->dump(*this); Printer << " "; auto ClassParent = Symbol.getClassParent(); @@ -177,7 +175,7 @@ void FunctionDumper::start(const PDBSymbolFunc &Symbol, PointerType Pointer, uint32_t Index = 0; while (auto Arg = Arguments->getNext()) { auto ArgType = Arg->getType(); - ArgType->dump(OS, 0, *this); + ArgType->dump(*this); WithColor(Printer, PDB_ColorItem::Identifier).get() << " " << Arg->getName(); if (++Index < Arguments->getChildCount()) @@ -193,50 +191,44 @@ void FunctionDumper::start(const PDBSymbolFunc &Symbol, PointerType Pointer, Printer << " = 0"; } -void FunctionDumper::dump(const PDBSymbolTypeArray &Symbol, raw_ostream &OS, - int Indent) { +void FunctionDumper::dump(const PDBSymbolTypeArray &Symbol) { uint32_t ElementTypeId = Symbol.getTypeId(); auto ElementType = Symbol.getSession().getSymbolById(ElementTypeId); if (!ElementType) return; - ElementType->dump(OS, 0, *this); + ElementType->dump(*this); Printer << "["; WithColor(Printer, PDB_ColorItem::LiteralValue).get() << Symbol.getLength(); Printer << "]"; } -void FunctionDumper::dump(const PDBSymbolTypeBuiltin &Symbol, raw_ostream &OS, - int Indent) { +void FunctionDumper::dump(const PDBSymbolTypeBuiltin &Symbol) { BuiltinDumper Dumper(Printer); - Dumper.start(Symbol, OS); + Dumper.start(Symbol); } -void FunctionDumper::dump(const PDBSymbolTypeEnum &Symbol, raw_ostream &OS, - int Indent) { +void FunctionDumper::dump(const PDBSymbolTypeEnum &Symbol) { dumpClassParentWithScopeOperator(Symbol, Printer, *this); WithColor(Printer, PDB_ColorItem::Type).get() << Symbol.getName(); } -void FunctionDumper::dump(const PDBSymbolTypeFunctionArg &Symbol, - raw_ostream &OS, int Indent) { +void FunctionDumper::dump(const PDBSymbolTypeFunctionArg &Symbol) { // PDBSymbolTypeFunctionArg is just a shim over the real argument. Just drill // through to the real thing and dump it. uint32_t TypeId = Symbol.getTypeId(); auto Type = Symbol.getSession().getSymbolById(TypeId); if (!Type) return; - Type->dump(OS, 0, *this); + Type->dump(*this); } -void FunctionDumper::dump(const PDBSymbolTypeTypedef &Symbol, raw_ostream &OS, - int Indent) { +void FunctionDumper::dump(const PDBSymbolTypeTypedef &Symbol) { dumpClassParentWithScopeOperator(Symbol, Printer, *this); WithColor(Printer, PDB_ColorItem::Type).get() << Symbol.getName(); } -void FunctionDumper::dump(const PDBSymbolTypePointer &Symbol, raw_ostream &OS, - int Indent) { +void FunctionDumper::dump(const PDBSymbolTypePointer &Symbol) { uint32_t PointeeId = Symbol.getTypeId(); auto PointeeType = Symbol.getSession().getSymbolById(PointeeId); if (!PointeeType) @@ -246,18 +238,17 @@ void FunctionDumper::dump(const PDBSymbolTypePointer &Symbol, raw_ostream &OS, FunctionDumper NestedDumper(Printer); PointerType Pointer = Symbol.isReference() ? PointerType::Reference : PointerType::Pointer; - NestedDumper.start(*FuncSig, nullptr, Pointer, OS); + NestedDumper.start(*FuncSig, nullptr, Pointer); } else { if (Symbol.isConstType()) WithColor(Printer, PDB_ColorItem::Keyword).get() << "const "; if (Symbol.isVolatileType()) WithColor(Printer, PDB_ColorItem::Keyword).get() << "volatile "; - PointeeType->dump(OS, Indent, *this); - OS << (Symbol.isReference() ? "&" : "*"); + PointeeType->dump(*this); + Printer << (Symbol.isReference() ? "&" : "*"); } } -void FunctionDumper::dump(const PDBSymbolTypeUDT &Symbol, raw_ostream &OS, - int Indent) { +void FunctionDumper::dump(const PDBSymbolTypeUDT &Symbol) { WithColor(Printer, PDB_ColorItem::Type).get() << Symbol.getName(); } diff --git a/llvm/tools/llvm-pdbdump/FunctionDumper.h b/llvm/tools/llvm-pdbdump/FunctionDumper.h index 63fde6eb220..19a00145a1f 100644 --- a/llvm/tools/llvm-pdbdump/FunctionDumper.h +++ b/llvm/tools/llvm-pdbdump/FunctionDumper.h @@ -23,24 +23,16 @@ public: enum class PointerType { None, Pointer, Reference }; void start(const PDBSymbolTypeFunctionSig &Symbol, const char *Name, - PointerType Pointer, raw_ostream &OS); - void start(const PDBSymbolFunc &Symbol, PointerType Pointer, raw_ostream &OS, - int Indent); - - void dump(const PDBSymbolTypeArray &Symbol, raw_ostream &OS, - int Indent) override; - void dump(const PDBSymbolTypeBuiltin &Symbol, raw_ostream &OS, - int Indent) override; - void dump(const PDBSymbolTypeEnum &Symbol, raw_ostream &OS, - int Indent) override; - void dump(const PDBSymbolTypeFunctionArg &Symbol, raw_ostream &OS, - int Indent) override; - void dump(const PDBSymbolTypePointer &Symbol, raw_ostream &OS, - int Indent) override; - void dump(const PDBSymbolTypeTypedef &Symbol, raw_ostream &OS, - int Indent) override; - void dump(const PDBSymbolTypeUDT &Symbol, raw_ostream &OS, - int Indent) override; + PointerType Pointer); + void start(const PDBSymbolFunc &Symbol, PointerType Pointer); + + void dump(const PDBSymbolTypeArray &Symbol) override; + void dump(const PDBSymbolTypeBuiltin &Symbol) override; + void dump(const PDBSymbolTypeEnum &Symbol) override; + void dump(const PDBSymbolTypeFunctionArg &Symbol) override; + void dump(const PDBSymbolTypePointer &Symbol) override; + void dump(const PDBSymbolTypeTypedef &Symbol) override; + void dump(const PDBSymbolTypeUDT &Symbol) override; private: LinePrinter &Printer; diff --git a/llvm/tools/llvm-pdbdump/TypeDumper.cpp b/llvm/tools/llvm-pdbdump/TypeDumper.cpp index 8bca68e8d8b..cd0be1227ad 100644 --- a/llvm/tools/llvm-pdbdump/TypeDumper.cpp +++ b/llvm/tools/llvm-pdbdump/TypeDumper.cpp @@ -25,14 +25,14 @@ using namespace llvm; TypeDumper::TypeDumper(LinePrinter &P, bool ClassDefs) : PDBSymDumper(true), Printer(P), FullClassDefs(ClassDefs) {} -void TypeDumper::start(const PDBSymbolExe &Exe, raw_ostream &OS, int Indent) { +void TypeDumper::start(const PDBSymbolExe &Exe) { auto Enums = Exe.findAllChildren<PDBSymbolTypeEnum>(); Printer.NewLine(); WithColor(Printer, PDB_ColorItem::Identifier).get() << "Enums"; Printer << ": (" << Enums->getChildCount() << " items)"; Printer.Indent(); while (auto Enum = Enums->getNext()) - Enum->dump(OS, Indent + 2, *this); + Enum->dump(*this); Printer.Unindent(); auto Typedefs = Exe.findAllChildren<PDBSymbolTypeTypedef>(); @@ -41,7 +41,7 @@ void TypeDumper::start(const PDBSymbolExe &Exe, raw_ostream &OS, int Indent) { Printer << ": (" << Typedefs->getChildCount() << " items)"; Printer.Indent(); while (auto Typedef = Typedefs->getNext()) - Typedef->dump(OS, Indent + 2, *this); + Typedef->dump(*this); Printer.Unindent(); auto Classes = Exe.findAllChildren<PDBSymbolTypeUDT>(); @@ -50,12 +50,11 @@ void TypeDumper::start(const PDBSymbolExe &Exe, raw_ostream &OS, int Indent) { Printer << ": (" << Classes->getChildCount() << " items)"; Printer.Indent(); while (auto Class = Classes->getNext()) - Class->dump(OS, Indent + 2, *this); + Class->dump(*this); Printer.Unindent(); } -void TypeDumper::dump(const PDBSymbolTypeEnum &Symbol, raw_ostream &OS, - int Indent) { +void TypeDumper::dump(const PDBSymbolTypeEnum &Symbol) { if (Symbol.getUnmodifiedTypeId() != 0) return; if (Printer.IsTypeExcluded(Symbol.getName())) @@ -66,18 +65,16 @@ void TypeDumper::dump(const PDBSymbolTypeEnum &Symbol, raw_ostream &OS, WithColor(Printer, PDB_ColorItem::Identifier).get() << Symbol.getName(); } -void TypeDumper::dump(const PDBSymbolTypeTypedef &Symbol, raw_ostream &OS, - int Indent) { +void TypeDumper::dump(const PDBSymbolTypeTypedef &Symbol) { if (Printer.IsTypeExcluded(Symbol.getName())) return; Printer.NewLine(); TypedefDumper Dumper(Printer); - Dumper.start(Symbol, OS, Indent); + Dumper.start(Symbol); } -void TypeDumper::dump(const PDBSymbolTypeUDT &Symbol, raw_ostream &OS, - int Indent) { +void TypeDumper::dump(const PDBSymbolTypeUDT &Symbol) { if (Symbol.getUnmodifiedTypeId() != 0) return; if (Printer.IsTypeExcluded(Symbol.getName())) @@ -87,7 +84,7 @@ void TypeDumper::dump(const PDBSymbolTypeUDT &Symbol, raw_ostream &OS, if (FullClassDefs) { ClassDefinitionDumper Dumper(Printer); - Dumper.start(Symbol, OS, Indent); + Dumper.start(Symbol); } else { WithColor(Printer, PDB_ColorItem::Keyword).get() << "class "; WithColor(Printer, PDB_ColorItem::Identifier).get() << Symbol.getName(); diff --git a/llvm/tools/llvm-pdbdump/TypeDumper.h b/llvm/tools/llvm-pdbdump/TypeDumper.h index 51d2d4a5553..d63019be236 100644 --- a/llvm/tools/llvm-pdbdump/TypeDumper.h +++ b/llvm/tools/llvm-pdbdump/TypeDumper.h @@ -20,14 +20,11 @@ class TypeDumper : public PDBSymDumper { public: TypeDumper(LinePrinter &P, bool ClassDefs); - void start(const PDBSymbolExe &Exe, raw_ostream &OS, int Indent); - - void dump(const PDBSymbolTypeEnum &Symbol, raw_ostream &OS, - int Indent) override; - void dump(const PDBSymbolTypeTypedef &Symbol, raw_ostream &OS, - int Indent) override; - void dump(const PDBSymbolTypeUDT &Symbol, raw_ostream &OS, - int Indent) override; + void start(const PDBSymbolExe &Exe); + + void dump(const PDBSymbolTypeEnum &Symbol) override; + void dump(const PDBSymbolTypeTypedef &Symbol) override; + void dump(const PDBSymbolTypeUDT &Symbol) override; private: LinePrinter &Printer; diff --git a/llvm/tools/llvm-pdbdump/TypedefDumper.cpp b/llvm/tools/llvm-pdbdump/TypedefDumper.cpp index 615b8d57aa1..5e4228c7c70 100644 --- a/llvm/tools/llvm-pdbdump/TypedefDumper.cpp +++ b/llvm/tools/llvm-pdbdump/TypedefDumper.cpp @@ -26,32 +26,27 @@ using namespace llvm; TypedefDumper::TypedefDumper(LinePrinter &P) : PDBSymDumper(true), Printer(P) {} -void TypedefDumper::start(const PDBSymbolTypeTypedef &Symbol, raw_ostream &OS, - int Indent) { +void TypedefDumper::start(const PDBSymbolTypeTypedef &Symbol) { WithColor(Printer, PDB_ColorItem::Keyword).get() << "typedef "; uint32_t TargetId = Symbol.getTypeId(); if (auto TypeSymbol = Symbol.getSession().getSymbolById(TargetId)) - TypeSymbol->dump(OS, 0, *this); + TypeSymbol->dump(*this); WithColor(Printer, PDB_ColorItem::Type).get() << " " << Symbol.getName(); } -void TypedefDumper::dump(const PDBSymbolTypeArray &Symbol, raw_ostream &OS, - int Indent) {} +void TypedefDumper::dump(const PDBSymbolTypeArray &Symbol) {} -void TypedefDumper::dump(const PDBSymbolTypeBuiltin &Symbol, raw_ostream &OS, - int Indent) { +void TypedefDumper::dump(const PDBSymbolTypeBuiltin &Symbol) { BuiltinDumper Dumper(Printer); - Dumper.start(Symbol, OS); + Dumper.start(Symbol); } -void TypedefDumper::dump(const PDBSymbolTypeEnum &Symbol, raw_ostream &OS, - int Indent) { +void TypedefDumper::dump(const PDBSymbolTypeEnum &Symbol) { WithColor(Printer, PDB_ColorItem::Keyword).get() << "enum "; WithColor(Printer, PDB_ColorItem::Type).get() << " " << Symbol.getName(); } -void TypedefDumper::dump(const PDBSymbolTypePointer &Symbol, raw_ostream &OS, - int Indent) { +void TypedefDumper::dump(const PDBSymbolTypePointer &Symbol) { if (Symbol.isConstType()) WithColor(Printer, PDB_ColorItem::Keyword).get() << "const "; if (Symbol.isVolatileType()) @@ -65,21 +60,19 @@ void TypedefDumper::dump(const PDBSymbolTypePointer &Symbol, raw_ostream &OS, if (Symbol.isReference()) Pointer = FunctionDumper::PointerType::Reference; FunctionDumper NestedDumper(Printer); - NestedDumper.start(*FuncSig, nullptr, Pointer, OS); + NestedDumper.start(*FuncSig, nullptr, Pointer); } else { - PointeeType->dump(OS, Indent, *this); - OS << ((Symbol.isReference()) ? "&" : "*"); + PointeeType->dump(*this); + Printer << ((Symbol.isReference()) ? "&" : "*"); } } -void TypedefDumper::dump(const PDBSymbolTypeFunctionSig &Symbol, - raw_ostream &OS, int Indent) { +void TypedefDumper::dump(const PDBSymbolTypeFunctionSig &Symbol) { FunctionDumper Dumper(Printer); - Dumper.start(Symbol, nullptr, FunctionDumper::PointerType::None, OS); + Dumper.start(Symbol, nullptr, FunctionDumper::PointerType::None); } -void TypedefDumper::dump(const PDBSymbolTypeUDT &Symbol, raw_ostream &OS, - int Indent) { +void TypedefDumper::dump(const PDBSymbolTypeUDT &Symbol) { WithColor(Printer, PDB_ColorItem::Keyword).get() << "class "; WithColor(Printer, PDB_ColorItem::Type).get() << " " << Symbol.getName(); } diff --git a/llvm/tools/llvm-pdbdump/TypedefDumper.h b/llvm/tools/llvm-pdbdump/TypedefDumper.h index a5fcf2c4c98..8cd578cc6d2 100644 --- a/llvm/tools/llvm-pdbdump/TypedefDumper.h +++ b/llvm/tools/llvm-pdbdump/TypedefDumper.h @@ -20,20 +20,14 @@ class TypedefDumper : public PDBSymDumper { public: TypedefDumper(LinePrinter &P); - void start(const PDBSymbolTypeTypedef &Symbol, raw_ostream &OS, int Indent); - - void dump(const PDBSymbolTypeArray &Symbol, raw_ostream &OS, - int Indent) override; - void dump(const PDBSymbolTypeBuiltin &Symbol, raw_ostream &OS, - int Indent) override; - void dump(const PDBSymbolTypeEnum &Symbol, raw_ostream &OS, - int Indent) override; - void dump(const PDBSymbolTypeFunctionSig &Symbol, raw_ostream &OS, - int Indent) override; - void dump(const PDBSymbolTypePointer &Symbol, raw_ostream &OS, - int Indent) override; - void dump(const PDBSymbolTypeUDT &Symbol, raw_ostream &OS, - int Indent) override; + void start(const PDBSymbolTypeTypedef &Symbol); + + void dump(const PDBSymbolTypeArray &Symbol) override; + void dump(const PDBSymbolTypeBuiltin &Symbol) override; + void dump(const PDBSymbolTypeEnum &Symbol) override; + void dump(const PDBSymbolTypeFunctionSig &Symbol) override; + void dump(const PDBSymbolTypePointer &Symbol) override; + void dump(const PDBSymbolTypeUDT &Symbol) override; private: LinePrinter &Printer; diff --git a/llvm/tools/llvm-pdbdump/VariableDumper.cpp b/llvm/tools/llvm-pdbdump/VariableDumper.cpp index ec72d16fef9..d520fd10099 100644 --- a/llvm/tools/llvm-pdbdump/VariableDumper.cpp +++ b/llvm/tools/llvm-pdbdump/VariableDumper.cpp @@ -30,8 +30,7 @@ using namespace llvm; VariableDumper::VariableDumper(LinePrinter &P) : PDBSymDumper(true), Printer(P) {} -void VariableDumper::start(const PDBSymbolData &Var, raw_ostream &OS, - int Indent) { +void VariableDumper::start(const PDBSymbolData &Var) { if (Printer.IsSymbolExcluded(Var.getName())) return; @@ -45,11 +44,11 @@ void VariableDumper::start(const PDBSymbolData &Var, raw_ostream &OS, WithColor(Printer, PDB_ColorItem::Address).get() << "[" << format_hex(Var.getRelativeVirtualAddress(), 10) << "] "; WithColor(Printer, PDB_ColorItem::Keyword).get() << "static "; - dumpSymbolTypeAndName(*VarType, Var.getName(), OS); + dumpSymbolTypeAndName(*VarType, Var.getName()); break; case PDB_LocType::Constant: WithColor(Printer, PDB_ColorItem::Keyword).get() << "const "; - dumpSymbolTypeAndName(*VarType, Var.getName(), OS); + dumpSymbolTypeAndName(*VarType, Var.getName()); Printer << "["; WithColor(Printer, PDB_ColorItem::LiteralValue).get() << Var.getValue(); Printer << "]"; @@ -57,31 +56,27 @@ void VariableDumper::start(const PDBSymbolData &Var, raw_ostream &OS, case PDB_LocType::ThisRel: WithColor(Printer, PDB_ColorItem::Offset).get() << "+" << format_hex(Var.getOffset(), 4) << " "; - dumpSymbolTypeAndName(*VarType, Var.getName(), OS); + dumpSymbolTypeAndName(*VarType, Var.getName()); break; default: - OS << "unknown(" << LocType << ") "; + Printer << "unknown(" << LocType << ") "; WithColor(Printer, PDB_ColorItem::Identifier).get() << Var.getName(); break; } } -void VariableDumper::dump(const PDBSymbolTypeBuiltin &Symbol, raw_ostream &OS, - int Indent) { +void VariableDumper::dump(const PDBSymbolTypeBuiltin &Symbol) { BuiltinDumper Dumper(Printer); - Dumper.start(Symbol, OS); + Dumper.start(Symbol); } -void VariableDumper::dump(const PDBSymbolTypeEnum &Symbol, raw_ostream &OS, - int Indent) { +void VariableDumper::dump(const PDBSymbolTypeEnum &Symbol) { WithColor(Printer, PDB_ColorItem::Type).get() << Symbol.getName(); } -void VariableDumper::dump(const PDBSymbolTypeFunctionSig &Symbol, - raw_ostream &OS, int Indent) {} +void VariableDumper::dump(const PDBSymbolTypeFunctionSig &Symbol) {} -void VariableDumper::dump(const PDBSymbolTypePointer &Symbol, raw_ostream &OS, - int Indent) { +void VariableDumper::dump(const PDBSymbolTypePointer &Symbol) { auto PointeeType = Symbol.getPointeeType(); if (!PointeeType) return; @@ -91,30 +86,28 @@ void VariableDumper::dump(const PDBSymbolTypePointer &Symbol, raw_ostream &OS, FunctionDumper::PointerType Pointer = Symbol.isReference() ? FunctionDumper::PointerType::Reference : FunctionDumper::PointerType::Pointer; - NestedDumper.start(*Func, Pointer, OS, Indent); + NestedDumper.start(*Func, Pointer); } else { if (Symbol.isConstType()) WithColor(Printer, PDB_ColorItem::Keyword).get() << "const "; if (Symbol.isVolatileType()) WithColor(Printer, PDB_ColorItem::Keyword).get() << "volatile "; - PointeeType->dump(OS, Indent, *this); + PointeeType->dump(*this); Printer << (Symbol.isReference() ? "&" : "*"); } } -void VariableDumper::dump(const PDBSymbolTypeTypedef &Symbol, raw_ostream &OS, - int Indent) { +void VariableDumper::dump(const PDBSymbolTypeTypedef &Symbol) { WithColor(Printer, PDB_ColorItem::Keyword).get() << "typedef "; WithColor(Printer, PDB_ColorItem::Type).get() << Symbol.getName(); } -void VariableDumper::dump(const PDBSymbolTypeUDT &Symbol, raw_ostream &OS, - int Indent) { +void VariableDumper::dump(const PDBSymbolTypeUDT &Symbol) { WithColor(Printer, PDB_ColorItem::Type).get() << Symbol.getName(); } void VariableDumper::dumpSymbolTypeAndName(const PDBSymbol &Type, - StringRef Name, raw_ostream &OS) { + StringRef Name) { if (auto *ArrayType = dyn_cast<PDBSymbolTypeArray>(&Type)) { std::string IndexSpec; raw_string_ostream IndexStream(IndexSpec); @@ -126,19 +119,19 @@ void VariableDumper::dumpSymbolTypeAndName(const PDBSymbol &Type, ElementType = NestedArray->getElementType(); } IndexStream << "[" << ArrayType->getCount() << "]"; - ElementType->dump(OS, 0, *this); + ElementType->dump(*this); WithColor(Printer, PDB_ColorItem::Identifier).get() << " " << Name; Printer << IndexStream.str(); } else { - if (!tryDumpFunctionPointer(Type, Name, OS)) { - Type.dump(OS, 0, *this); + if (!tryDumpFunctionPointer(Type, Name)) { + Type.dump(*this); WithColor(Printer, PDB_ColorItem::Identifier).get() << " " << Name; } } } bool VariableDumper::tryDumpFunctionPointer(const PDBSymbol &Type, - StringRef Name, raw_ostream &OS) { + StringRef Name) { // Function pointers come across as pointers to function signatures. But the // signature carries no name, so we have to handle this case separately. if (auto *PointerType = dyn_cast<PDBSymbolTypePointer>(&Type)) { @@ -150,7 +143,7 @@ bool VariableDumper::tryDumpFunctionPointer(const PDBSymbol &Type, if (PointerType->isReference()) PT = FunctionDumper::PointerType::Reference; std::string NameStr(Name.begin(), Name.end()); - Dumper.start(*FunctionSig, NameStr.c_str(), PT, OS); + Dumper.start(*FunctionSig, NameStr.c_str(), PT); return true; } } diff --git a/llvm/tools/llvm-pdbdump/VariableDumper.h b/llvm/tools/llvm-pdbdump/VariableDumper.h index 09f1314932a..db8d8ea0e43 100644 --- a/llvm/tools/llvm-pdbdump/VariableDumper.h +++ b/llvm/tools/llvm-pdbdump/VariableDumper.h @@ -21,26 +21,18 @@ class VariableDumper : public PDBSymDumper { public: VariableDumper(LinePrinter &P); - void start(const PDBSymbolData &Var, raw_ostream &OS, int Indent); - - void dump(const PDBSymbolTypeBuiltin &Symbol, raw_ostream &OS, - int Indent) override; - void dump(const PDBSymbolTypeEnum &Symbol, raw_ostream &OS, - int Indent) override; - void dump(const PDBSymbolTypeFunctionSig &Symbol, raw_ostream &OS, - int Indent) override; - void dump(const PDBSymbolTypePointer &Symbol, raw_ostream &OS, - int Indent) override; - void dump(const PDBSymbolTypeTypedef &Symbol, raw_ostream &OS, - int Indent) override; - void dump(const PDBSymbolTypeUDT &Symbol, raw_ostream &OS, - int Indent) override; + void start(const PDBSymbolData &Var); + + void dump(const PDBSymbolTypeBuiltin &Symbol) override; + void dump(const PDBSymbolTypeEnum &Symbol) override; + void dump(const PDBSymbolTypeFunctionSig &Symbol) override; + void dump(const PDBSymbolTypePointer &Symbol) override; + void dump(const PDBSymbolTypeTypedef &Symbol) override; + void dump(const PDBSymbolTypeUDT &Symbol) override; private: - void dumpSymbolTypeAndName(const PDBSymbol &Type, StringRef Name, - raw_ostream &OS); - bool tryDumpFunctionPointer(const PDBSymbol &Type, StringRef Name, - raw_ostream &OS); + void dumpSymbolTypeAndName(const PDBSymbol &Type, StringRef Name); + bool tryDumpFunctionPointer(const PDBSymbol &Type, StringRef Name); LinePrinter &Printer; }; diff --git a/llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp b/llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp index 9ad79ad3b32..e1f0370b55a 100644 --- a/llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp +++ b/llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp @@ -150,7 +150,7 @@ static void dumpInput(StringRef Path) { auto Compilands = GlobalScope->findAllChildren<PDBSymbolCompiland>(); CompilandDumper Dumper(Printer); while (auto Compiland = Compilands->getNext()) - Dumper.start(*Compiland, outs(), 2, false); + Dumper.start(*Compiland, false); Printer.Unindent(); } @@ -159,7 +159,7 @@ static void dumpInput(StringRef Path) { WithColor(Printer, PDB_ColorItem::SectionHeader).get() << "---TYPES---"; Printer.Indent(); TypeDumper Dumper(Printer, opts::ClassDefs); - Dumper.start(*GlobalScope, outs(), 2); + Dumper.start(*GlobalScope); Printer.Unindent(); } @@ -170,7 +170,7 @@ static void dumpInput(StringRef Path) { auto Compilands = GlobalScope->findAllChildren<PDBSymbolCompiland>(); CompilandDumper Dumper(Printer); while (auto Compiland = Compilands->getNext()) - Dumper.start(*Compiland, outs(), 2, true); + Dumper.start(*Compiland, true); Printer.Unindent(); } @@ -183,20 +183,20 @@ static void dumpInput(StringRef Path) { auto Functions = GlobalScope->findAllChildren<PDBSymbolFunc>(); while (auto Function = Functions->getNext()) { Printer.NewLine(); - Dumper.start(*Function, FunctionDumper::PointerType::None, outs(), 2); + Dumper.start(*Function, FunctionDumper::PointerType::None); } } { auto Vars = GlobalScope->findAllChildren<PDBSymbolData>(); VariableDumper Dumper(Printer); while (auto Var = Vars->getNext()) - Dumper.start(*Var, outs(), 2); + Dumper.start(*Var); } { auto Thunks = GlobalScope->findAllChildren<PDBSymbolThunk>(); CompilandDumper Dumper(Printer); while (auto Thunk = Thunks->getNext()) - Dumper.dump(*Thunk, outs(), 2); + Dumper.dump(*Thunk); } Printer.Unindent(); } |