From 7034ff81096837cc8e955a692205dc3042735393 Mon Sep 17 00:00:00 2001 From: Aaron Smith Date: Thu, 11 Oct 2018 21:37:18 +0000 Subject: [PATCH] [llvm-pdbutil] Pretty print PDBSymbolUsingNamespace symbols Reviewers: rnk, zturner, llvm-commits Differential Revision: https://reviews.llvm.org/D52799 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@344298 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/tools/llvm-pdbdump/Inputs/UsingNamespaceTest.cpp | 11 +++++++++++ test/tools/llvm-pdbdump/Inputs/UsingNamespaceTest.pdb | 0 test/tools/llvm-pdbdump/usingnamespace.test | 6 ++++++ tools/llvm-pdbutil/PrettyCompilandDumper.cpp | 11 +++++++++++ tools/llvm-pdbutil/PrettyCompilandDumper.h | 1 + 5 files changed, 29 insertions(+) create mode 100644 test/tools/llvm-pdbdump/Inputs/UsingNamespaceTest.cpp create mode 100644 test/tools/llvm-pdbdump/Inputs/UsingNamespaceTest.pdb create mode 100644 test/tools/llvm-pdbdump/usingnamespace.test diff --git a/test/tools/llvm-pdbdump/Inputs/UsingNamespaceTest.cpp b/test/tools/llvm-pdbdump/Inputs/UsingNamespaceTest.cpp new file mode 100644 index 00000000000..403ada17713 --- /dev/null +++ b/test/tools/llvm-pdbdump/Inputs/UsingNamespaceTest.cpp @@ -0,0 +1,11 @@ +// Compile with "cl /c /Zi /GR- UsingNamespaceTest.cpp" +// Link with "link UsingNamespaceTest.obj /debug /nodefaultlib /entry:main" + +namespace NS { + int foo() { return 1; } +} + +using namespace NS; +int main(int argc, char **argv) { + return foo(); +} diff --git a/test/tools/llvm-pdbdump/Inputs/UsingNamespaceTest.pdb b/test/tools/llvm-pdbdump/Inputs/UsingNamespaceTest.pdb new file mode 100644 index 00000000000..e69de29bb2d diff --git a/test/tools/llvm-pdbdump/usingnamespace.test b/test/tools/llvm-pdbdump/usingnamespace.test new file mode 100644 index 00000000000..954ec114010 --- /dev/null +++ b/test/tools/llvm-pdbdump/usingnamespace.test @@ -0,0 +1,6 @@ +; RUN: llvm-pdbutil pretty -module-syms %p/Inputs/UsingNamespaceTest.pdb > %t +; RUN: FileCheck -input-file=%t %s + +; CHECK: ---SYMBOLS--- +; CHECK-NEXT: {{.*}}UsingNamespaceTest.obj +; CHECK-DAG: using namespace NS diff --git a/tools/llvm-pdbutil/PrettyCompilandDumper.cpp b/tools/llvm-pdbutil/PrettyCompilandDumper.cpp index 0d99c9b1245..94a0b2d5e78 100644 --- a/tools/llvm-pdbutil/PrettyCompilandDumper.cpp +++ b/tools/llvm-pdbutil/PrettyCompilandDumper.cpp @@ -28,6 +28,7 @@ #include "llvm/DebugInfo/PDB/PDBSymbolThunk.h" #include "llvm/DebugInfo/PDB/PDBSymbolTypeFunctionSig.h" #include "llvm/DebugInfo/PDB/PDBSymbolUnknown.h" +#include "llvm/DebugInfo/PDB/PDBSymbolUsingNamespace.h" #include "llvm/Support/Format.h" #include "llvm/Support/Path.h" #include "llvm/Support/raw_ostream.h" @@ -216,3 +217,13 @@ void CompilandDumper::dump(const PDBSymbolUnknown &Symbol) { Printer.NewLine(); Printer << "unknown (" << Symbol.getSymTag() << ")"; } + +void CompilandDumper::dump(const PDBSymbolUsingNamespace &Symbol) { + if (Printer.IsSymbolExcluded(Symbol.getName())) + return; + + Printer.NewLine(); + Printer << "using namespace "; + std::string Name = Symbol.getName(); + WithColor(Printer, PDB_ColorItem::Identifier).get() << Name; +} diff --git a/tools/llvm-pdbutil/PrettyCompilandDumper.h b/tools/llvm-pdbutil/PrettyCompilandDumper.h index cae196e9d13..1a840e49607 100644 --- a/tools/llvm-pdbutil/PrettyCompilandDumper.h +++ b/tools/llvm-pdbutil/PrettyCompilandDumper.h @@ -34,6 +34,7 @@ public: void dump(const PDBSymbolThunk &Symbol) override; void dump(const PDBSymbolTypeTypedef &Symbol) override; void dump(const PDBSymbolUnknown &Symbol) override; + void dump(const PDBSymbolUsingNamespace &Symbol) override; private: LinePrinter &Printer; -- 2.11.0