]> granicus.if.org Git - llvm/commitdiff
[llvm-symbolizer][test] Extract tests from llvm-symbolizer.test and simplify (#2)
authorJames Henderson <jh7370@my.bristol.ac.uk>
Thu, 31 Jan 2019 14:17:33 +0000 (14:17 +0000)
committerJames Henderson <jh7370@my.bristol.ac.uk>
Thu, 31 Jan 2019 14:17:33 +0000 (14:17 +0000)
This is the third of a series of patches simplifying llvm-symbolizer
tests. See r352752 and r352753 for the previous two. This patch splits
out a number of distinct test cases from llvm-symbolizer.test into
separate tests, and simplifies them in various ways including:

1) using --obj/positional arguments for the input file and addresses
   instead of stdin,
2) using runtime-generated inputs rather than a pre-canned binary, and
3) testing more specifically (i.e. checking only what is interesting to
   the behaviour changed in the original commit for that test case).

This patch also removes the test case for using --obj. The
tools/llvm-symbolizer/basic.s test already tests this case. Finally,
this patch adds a simple test case to the demangle switch test case to
show that demangling happens by default.

See https://bugs.llvm.org/show_bug.cgi?id=40070#c1 for the motivation.

Reviewed by: dblaikie

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352754 91177308-0d34-0410-b5e6-96231b3b80d8

test/DebugInfo/Inputs/llvm-symbolizer-test.c
test/DebugInfo/llvm-symbolizer.test
test/DebugInfo/symbolize-demangling.s [new file with mode: 0644]
test/DebugInfo/symbolize-macho-universal-unknown-arch.test [new file with mode: 0644]
test/DebugInfo/symbolize-macho-universal.test [new file with mode: 0644]
test/tools/llvm-symbolizer/demangle.s [new file with mode: 0644]

index 4c40c00c67360e1dfd7541ef6324def25c18c8e0..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,18 +0,0 @@
-int f(int a, int b) {
-  return a + b;
-}
-
-int g(int a) {
-  return a + 1;
-}
-
-
-int main() {
-  return f(2, g(2));
-}
-
-// Built with Clang 3.3:
-// $ mkdir -p /tmp/dbginfo
-// $ cp llvm-symbolizer-test.c /tmp/dbginfo
-// $ cd /tmp/dbginfo
-// $ clang -g llvm-symbolizer-test.c -o <output>
index ff39ccc1c4901849f8aa49418aafd7e5ac17db9b..cbd15859327dbc46d30d8e1580de3ea77574e0ba 100644 (file)
@@ -15,13 +15,10 @@ RUN: cp "%p/Inputs/dwarfdump-test3.elf-x86-64-space" "%t/dwarfdump-test3.elf-x86
 RUN: echo "\"%t/dwarfdump-test3.elf-x86-64 space\" 0x640" >> %t.input
 RUN: echo "\"%t/dwarfdump-test3.elf-x86-64 space\" 0x633" >> %t.input
 RUN: echo "\"%t/dwarfdump-test3.elf-x86-64 space\" 0x62d" >> %t.input
-RUN: echo "%p/Inputs/macho-universal 0x1f84" >> %t.input
-RUN: echo "%p/Inputs/macho-universal:i386 0x1f67" >> %t.input
-RUN: echo "%p/Inputs/macho-universal:x86_64 0x100000f05" >> %t.input
 
 RUN: cd %t
 RUN: llvm-symbolizer --functions=linkage --inlining --demangle=false \
-RUN:    --default-arch=i386 < %t.input | FileCheck --check-prefix=CHECK --check-prefix=SPLIT --check-prefix=DWO %s
+RUN:    < %t.input | FileCheck --check-prefix=CHECK --check-prefix=SPLIT --check-prefix=DWO %s
 
 CHECK:       main
 CHECK-NEXT: /tmp/dbginfo{{[/\\]}}dwarfdump-test.cc:16
@@ -76,58 +73,7 @@ CHECK-NEXT: /tmp/include{{[/\\]}}dwarfdump-test3-decl.h:7
 CHECK: _Z3do2v
 CHECK-NEXT: /tmp/dbginfo{{[/\\]}}include{{[/\\]}}dwarfdump-test3-decl2.h:1
 
-CHECK:      main
-CHECK:      _Z3inci
-CHECK:      _Z3inci
-
 RUN: echo "unexisting-file 0x1234" > %t.input2
 RUN: llvm-symbolizer < %t.input2 2>&1 | FileCheck %s --check-prefix=MISSING-FILE
 
 MISSING-FILE: LLVMSymbolizer: error reading file: {{[Nn]}}o such file or directory
-
-RUN: echo "%p/Inputs/macho-universal 0x1f84" > %t.input3
-RUN: llvm-symbolizer < %t.input3 | FileCheck %s --check-prefix=UNKNOWN-ARCH
-
-UNKNOWN-ARCH-NOT: main
-UNKNOWN-ARCH: ??
-UNKNOWN-ARCH-NOT: main
-
-RUN: echo "0x40113f" > %t.input4
-RUN: echo "0x401020" >> %t.input4
-RUN: llvm-symbolizer --obj %p/Inputs/dwarfdump-test.elf-x86-64 < %t.input4 \
-RUN:   | FileCheck %s --check-prefix=BINARY
-
-BINARY:       main
-BINARY-NEXT: /tmp/dbginfo{{[/\\]}}dwarfdump-test.cc:16
-BINARY:      _start
-
-RUN: echo "0x401140" > %t.input5
-RUN: echo "0x401020" >> %t.input5
-RUN: echo "0x401120" >> %t.input5
-RUN: llvm-symbolizer --obj %p/Inputs/llvm-symbolizer-test.elf-x86-64 < %t.input5 \
-RUN:   | FileCheck %s --check-prefix=BINARY_C
-
-BINARY_C:       main
-BINARY_C-NEXT: /tmp/dbginfo{{[/\\]}}llvm-symbolizer-test.c:10
-BINARY_C:      _start
-BINARY_C:      {{g$}}
-
-; Check that the last of --demangle and --no-demangle wins.
-RUN: echo "%p/Inputs/dwarfdump-test4.elf-x86-64 0x62c" > %t.input7
-RUN: llvm-symbolizer --demangle < %t.input7 \
-RUN:    | FileCheck %s --check-prefix=DEMANGLED_FUNCTION_NAME
-RUN: llvm-symbolizer -C < %t.input7 \
-RUN:    | FileCheck %s --check-prefix=DEMANGLED_FUNCTION_NAME
-RUN: llvm-symbolizer --no-demangle < %t.input7 \
-RUN:    | FileCheck %s --check-prefix=MANGLED_FUNCTION_NAME
-RUN: llvm-symbolizer --demangle --no-demangle < %t.input7 \
-RUN:    | FileCheck %s --check-prefix=MANGLED_FUNCTION_NAME
-RUN: llvm-symbolizer -C --no-demangle < %t.input7 \
-RUN:    | FileCheck %s --check-prefix=MANGLED_FUNCTION_NAME
-RUN: llvm-symbolizer --no-demangle --demangle < %t.input7 \
-RUN:    | FileCheck %s --check-prefix=DEMANGLED_FUNCTION_NAME
-RUN: llvm-symbolizer --no-demangle -C < %t.input7 \
-RUN:    | FileCheck %s --check-prefix=DEMANGLED_FUNCTION_NAME
-
-MANGLED_FUNCTION_NAME: _Z1cv
-DEMANGLED_FUNCTION_NAME: c()
diff --git a/test/DebugInfo/symbolize-demangling.s b/test/DebugInfo/symbolize-demangling.s
new file mode 100644 (file)
index 0000000..acd769a
--- /dev/null
@@ -0,0 +1,24 @@
+# REQUIRES: x86-registered-target
+
+# RUN: llvm-mc --filetype=obj --triple=x86_64-pc-linux %s -o %t.o -g
+
+# RUN: llvm-symbolizer --obj=%t.o 0 1 2 | FileCheck %s
+
+# CHECK:       f()
+# CHECK-NEXT:  symbolize-demangling.s:20
+# CHECK-EMPTY:
+# CHECK-NEXT:  {{^g$}}
+# CHECK-NEXT:  symbolize-demangling.s:22
+# CHECK-EMPTY:
+# CHECK-NEXT:  {{^baz$}}
+# CHECK-NEXT:  symbolize-demangling.s:24
+
+.type _Z1fv,@function
+.type g,@function
+.type baz,@function
+_Z1fv:
+  nop
+g:
+  nop
+baz:
+  nop
diff --git a/test/DebugInfo/symbolize-macho-universal-unknown-arch.test b/test/DebugInfo/symbolize-macho-universal-unknown-arch.test
new file mode 100644 (file)
index 0000000..744a0d3
--- /dev/null
@@ -0,0 +1,5 @@
+RUN: llvm-symbolizer --obj=%p/Inputs/macho-universal 0x1f84 | FileCheck %s
+
+CHECK-NOT: main
+CHECK: ??
+CHECK-NOT: main
diff --git a/test/DebugInfo/symbolize-macho-universal.test b/test/DebugInfo/symbolize-macho-universal.test
new file mode 100644 (file)
index 0000000..f775f68
--- /dev/null
@@ -0,0 +1,7 @@
+RUN: llvm-symbolizer --no-demangle --default-arch=i386 --obj=%p/Inputs/macho-universal 0x1f84 | FileCheck %s --check-prefix=DEFAULT
+RUN: llvm-symbolizer --no-demangle --obj=%p/Inputs/macho-universal:i386 0x1f67 | FileCheck %s --check-prefix=I386
+RUN: llvm-symbolizer --no-demangle --obj=%p/Inputs/macho-universal:x86_64 0x100000f05 | FileCheck %s --check-prefix=X86-64
+
+DEFAULT: main
+I386:    _Z3inci
+X86-64:  _Z3inci
diff --git a/test/tools/llvm-symbolizer/demangle.s b/test/tools/llvm-symbolizer/demangle.s
new file mode 100644 (file)
index 0000000..744e78e
--- /dev/null
@@ -0,0 +1,29 @@
+# REQUIRES: x86-registered-target
+
+# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o -g
+
+.type _Z1cv,@function
+_Z1cv:
+    nop
+
+# Check the default is to demangle and that the last of --demangle and
+# --no-demangle wins.
+# RUN: llvm-symbolizer --obj %t.o 0 \
+# RUN:    | FileCheck %s --check-prefix=DEMANGLED_FUNCTION_NAME
+# RUN: llvm-symbolizer --demangle --obj %t.o 0 \
+# RUN:    | FileCheck %s --check-prefix=DEMANGLED_FUNCTION_NAME
+# RUN: llvm-symbolizer -C --obj %t.o 0 \
+# RUN:    | FileCheck %s --check-prefix=DEMANGLED_FUNCTION_NAME
+# RUN: llvm-symbolizer --no-demangle --obj %t.o 0 \
+# RUN:    | FileCheck %s --check-prefix=MANGLED_FUNCTION_NAME
+# RUN: llvm-symbolizer --demangle --no-demangle --obj %t.o 0 \
+# RUN:    | FileCheck %s --check-prefix=MANGLED_FUNCTION_NAME
+# RUN: llvm-symbolizer -C --no-demangle --obj %t.o 0 \
+# RUN:    | FileCheck %s --check-prefix=MANGLED_FUNCTION_NAME
+# RUN: llvm-symbolizer --no-demangle --demangle --obj %t.o 0 \
+# RUN:    | FileCheck %s --check-prefix=DEMANGLED_FUNCTION_NAME
+# RUN: llvm-symbolizer --no-demangle -C --obj %t.o 0 \
+# RUN:    | FileCheck %s --check-prefix=DEMANGLED_FUNCTION_NAME
+
+# MANGLED_FUNCTION_NAME: _Z1cv
+# DEMANGLED_FUNCTION_NAME: c()