[llvm-debuginfo-analyzer] Include linkage names while evaluating `--select`
authorNabeel Omer <nabeel.omer@sony.com>
Wed, 17 May 2023 13:12:16 +0000 (13:12 +0000)
committerNabeel Omer <nabeel.omer@sony.com>
Wed, 17 May 2023 13:12:46 +0000 (13:12 +0000)
This patch allows mangled names to be passed to --select.

Differential Revision: https://reviews.llvm.org/D150190

llvm/include/llvm/DebugInfo/LogicalView/Core/LVOptions.h
llvm/test/tools/llvm-debuginfo-analyzer/COFF/01-coff-select-logical-elements.test
llvm/test/tools/llvm-debuginfo-analyzer/DWARF/01-dwarf-select-logical-elements.test

index e154243..a0a360c 100644 (file)
@@ -511,7 +511,9 @@ class LVPatterns final {
   void resolveGenericPatternMatch(T *Element, const U &Requests) {
     assert(Element && "Element must not be nullptr");
     auto CheckPattern = [=]() -> bool {
-      return (Element->isNamed() && matchGenericPattern(Element->getName())) ||
+      return (Element->isNamed() &&
+              (matchGenericPattern(Element->getName()) ||
+               matchGenericPattern(Element->getLinkageName()))) ||
              (Element->isTyped() &&
               matchGenericPattern(Element->getTypeName()));
     };
index 4914272..1e50ba7 100644 (file)
 ; TWO-EMPTY:
 ; TWO-NEXT: [001]           {CompileUnit} 'test.cpp'
 ; TWO-NEXT: [004]           {TypeAlias} 'INTEGER' -> 'int'
+
+; Select logical elements by matching linkage names.
+; The following prints all symbols that
+; contain "?foo@@YAHPEBHI_N@Z" in their linkage names, using a tab layout
+; and given the number of matches.
+
+; RUN: llvm-debuginfo-analyzer --attribute=level \
+; RUN:                         --select=?foo@@YAHPEBHI_N@Z \
+; RUN:                         --report=list \
+; RUN:                         --print=symbols \
+; RUN:                         %p/Inputs/test-codeview-clang.o \
+; RUN:                         %p/Inputs/test-codeview-msvc.o 2>&1 | \
+; RUN: FileCheck --strict-whitespace -check-prefix=THREE %s
+
+; THREE:      Logical View:
+; THREE-NEXT: [000]           {File} 'test-codeview-clang.o'
+; THREE-EMPTY:
+; THREE-NEXT: [001]           {CompileUnit} 'test.cpp'
+; THREE-NEXT: [002]           {Function} extern not_inlined 'foo' -> 'int'
+; THREE-EMPTY:
+; THREE:      Logical View:
+; THREE-NEXT: [000]           {File} 'test-codeview-msvc.o'
+; THREE-EMPTY:
+; THREE-NEXT: [001]           {CompileUnit} 'test.cpp'
+; THREE-NEXT: [002]           {Function} extern not_inlined 'foo' -> 'int'
index cb98176..f84e920 100644 (file)
 ; TWO-NEXT: [001]           {CompileUnit} 'test.cpp'
 ; TWO-NEXT: [004]     4     {TypeAlias} 'INTEGER' -> 'int'
 ; TWO-NEXT: [004]     5     {Variable} 'CONSTANT' -> 'const INTEGER'
+
+; Select logical elements based on linkage names.
+; The following prints all symbols that
+; contain "_Z3fooPKijb" in their linkage names, using a tab layout
+; and given the number of matches.
+
+; RUN: llvm-debuginfo-analyzer --attribute=level \
+; RUN:                         --select=_Z3fooPKijb \
+; RUN:                         --report=list \
+; RUN:                         --print=symbols \
+; RUN:                         %p/Inputs/pr-57040-test-dwarf-clang.o \
+; RUN:                         %p/Inputs/pr-57040-test-dwarf-gcc.o 2>&1 | \
+; RUN: FileCheck --strict-whitespace -check-prefix=THREE %s
+
+; THREE:      Logical View:
+; THREE-NEXT: [000]           {File} 'pr-57040-test-dwarf-clang.o'
+; THREE-EMPTY:
+; THREE-NEXT: [001]           {CompileUnit} 'test.cpp'
+; THREE-NEXT: [002]     2     {Function} extern not_inlined 'foo' -> 'int'
+; THREE-EMPTY:
+; THREE:      Logical View:
+; THREE-NEXT: [000]           {File} 'pr-57040-test-dwarf-gcc.o'
+; THREE-EMPTY:
+; THREE-NEXT: [001]           {CompileUnit} 'test.cpp'
+; THREE-NEXT: [002]     2     {Function} extern not_inlined 'foo' -> 'int'