Skip to content

Commit 0ca744c

Browse files
committed
[llvm-symbolizer][test] Extract tests from llvm-symbolizer.test and simplify (llvm#2)
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 llvm-svn: 352754
1 parent b10f112 commit 0ca744c

6 files changed

+66
-73
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,18 +0,0 @@
1-
int f(int a, int b) {
2-
return a + b;
3-
}
4-
5-
int g(int a) {
6-
return a + 1;
7-
}
8-
9-
10-
int main() {
11-
return f(2, g(2));
12-
}
13-
14-
// Built with Clang 3.3:
15-
// $ mkdir -p /tmp/dbginfo
16-
// $ cp llvm-symbolizer-test.c /tmp/dbginfo
17-
// $ cd /tmp/dbginfo
18-
// $ clang -g llvm-symbolizer-test.c -o <output>

llvm/test/DebugInfo/llvm-symbolizer.test

+1-55
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,10 @@ RUN: cp "%p/Inputs/dwarfdump-test3.elf-x86-64-space" "%t/dwarfdump-test3.elf-x86
1515
RUN: echo "\"%t/dwarfdump-test3.elf-x86-64 space\" 0x640" >> %t.input
1616
RUN: echo "\"%t/dwarfdump-test3.elf-x86-64 space\" 0x633" >> %t.input
1717
RUN: echo "\"%t/dwarfdump-test3.elf-x86-64 space\" 0x62d" >> %t.input
18-
RUN: echo "%p/Inputs/macho-universal 0x1f84" >> %t.input
19-
RUN: echo "%p/Inputs/macho-universal:i386 0x1f67" >> %t.input
20-
RUN: echo "%p/Inputs/macho-universal:x86_64 0x100000f05" >> %t.input
2118

2219
RUN: cd %t
2320
RUN: llvm-symbolizer --functions=linkage --inlining --demangle=false \
24-
RUN: --default-arch=i386 < %t.input | FileCheck --check-prefix=CHECK --check-prefix=SPLIT --check-prefix=DWO %s
21+
RUN: < %t.input | FileCheck --check-prefix=CHECK --check-prefix=SPLIT --check-prefix=DWO %s
2522

2623
CHECK: main
2724
CHECK-NEXT: /tmp/dbginfo{{[/\\]}}dwarfdump-test.cc:16
@@ -76,58 +73,7 @@ CHECK-NEXT: /tmp/include{{[/\\]}}dwarfdump-test3-decl.h:7
7673
CHECK: _Z3do2v
7774
CHECK-NEXT: /tmp/dbginfo{{[/\\]}}include{{[/\\]}}dwarfdump-test3-decl2.h:1
7875

79-
CHECK: main
80-
CHECK: _Z3inci
81-
CHECK: _Z3inci
82-
8376
RUN: echo "unexisting-file 0x1234" > %t.input2
8477
RUN: llvm-symbolizer < %t.input2 2>&1 | FileCheck %s --check-prefix=MISSING-FILE
8578

8679
MISSING-FILE: LLVMSymbolizer: error reading file: {{[Nn]}}o such file or directory
87-
88-
RUN: echo "%p/Inputs/macho-universal 0x1f84" > %t.input3
89-
RUN: llvm-symbolizer < %t.input3 | FileCheck %s --check-prefix=UNKNOWN-ARCH
90-
91-
UNKNOWN-ARCH-NOT: main
92-
UNKNOWN-ARCH: ??
93-
UNKNOWN-ARCH-NOT: main
94-
95-
RUN: echo "0x40113f" > %t.input4
96-
RUN: echo "0x401020" >> %t.input4
97-
RUN: llvm-symbolizer --obj %p/Inputs/dwarfdump-test.elf-x86-64 < %t.input4 \
98-
RUN: | FileCheck %s --check-prefix=BINARY
99-
100-
BINARY: main
101-
BINARY-NEXT: /tmp/dbginfo{{[/\\]}}dwarfdump-test.cc:16
102-
BINARY: _start
103-
104-
RUN: echo "0x401140" > %t.input5
105-
RUN: echo "0x401020" >> %t.input5
106-
RUN: echo "0x401120" >> %t.input5
107-
RUN: llvm-symbolizer --obj %p/Inputs/llvm-symbolizer-test.elf-x86-64 < %t.input5 \
108-
RUN: | FileCheck %s --check-prefix=BINARY_C
109-
110-
BINARY_C: main
111-
BINARY_C-NEXT: /tmp/dbginfo{{[/\\]}}llvm-symbolizer-test.c:10
112-
BINARY_C: _start
113-
BINARY_C: {{g$}}
114-
115-
; Check that the last of --demangle and --no-demangle wins.
116-
RUN: echo "%p/Inputs/dwarfdump-test4.elf-x86-64 0x62c" > %t.input7
117-
RUN: llvm-symbolizer --demangle < %t.input7 \
118-
RUN: | FileCheck %s --check-prefix=DEMANGLED_FUNCTION_NAME
119-
RUN: llvm-symbolizer -C < %t.input7 \
120-
RUN: | FileCheck %s --check-prefix=DEMANGLED_FUNCTION_NAME
121-
RUN: llvm-symbolizer --no-demangle < %t.input7 \
122-
RUN: | FileCheck %s --check-prefix=MANGLED_FUNCTION_NAME
123-
RUN: llvm-symbolizer --demangle --no-demangle < %t.input7 \
124-
RUN: | FileCheck %s --check-prefix=MANGLED_FUNCTION_NAME
125-
RUN: llvm-symbolizer -C --no-demangle < %t.input7 \
126-
RUN: | FileCheck %s --check-prefix=MANGLED_FUNCTION_NAME
127-
RUN: llvm-symbolizer --no-demangle --demangle < %t.input7 \
128-
RUN: | FileCheck %s --check-prefix=DEMANGLED_FUNCTION_NAME
129-
RUN: llvm-symbolizer --no-demangle -C < %t.input7 \
130-
RUN: | FileCheck %s --check-prefix=DEMANGLED_FUNCTION_NAME
131-
132-
MANGLED_FUNCTION_NAME: _Z1cv
133-
DEMANGLED_FUNCTION_NAME: c()
+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# REQUIRES: x86-registered-target
2+
3+
# RUN: llvm-mc --filetype=obj --triple=x86_64-pc-linux %s -o %t.o -g
4+
5+
# RUN: llvm-symbolizer --obj=%t.o 0 1 2 | FileCheck %s
6+
7+
# CHECK: f()
8+
# CHECK-NEXT: symbolize-demangling.s:20
9+
# CHECK-EMPTY:
10+
# CHECK-NEXT: {{^g$}}
11+
# CHECK-NEXT: symbolize-demangling.s:22
12+
# CHECK-EMPTY:
13+
# CHECK-NEXT: {{^baz$}}
14+
# CHECK-NEXT: symbolize-demangling.s:24
15+
16+
.type _Z1fv,@function
17+
.type g,@function
18+
.type baz,@function
19+
_Z1fv:
20+
nop
21+
g:
22+
nop
23+
baz:
24+
nop
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
RUN: llvm-symbolizer --obj=%p/Inputs/macho-universal 0x1f84 | FileCheck %s
2+
3+
CHECK-NOT: main
4+
CHECK: ??
5+
CHECK-NOT: main
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
RUN: llvm-symbolizer --no-demangle --default-arch=i386 --obj=%p/Inputs/macho-universal 0x1f84 | FileCheck %s --check-prefix=DEFAULT
2+
RUN: llvm-symbolizer --no-demangle --obj=%p/Inputs/macho-universal:i386 0x1f67 | FileCheck %s --check-prefix=I386
3+
RUN: llvm-symbolizer --no-demangle --obj=%p/Inputs/macho-universal:x86_64 0x100000f05 | FileCheck %s --check-prefix=X86-64
4+
5+
DEFAULT: main
6+
I386: _Z3inci
7+
X86-64: _Z3inci
+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# REQUIRES: x86-registered-target
2+
3+
# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o -g
4+
5+
.type _Z1cv,@function
6+
_Z1cv:
7+
nop
8+
9+
# Check the default is to demangle and that the last of --demangle and
10+
# --no-demangle wins.
11+
# RUN: llvm-symbolizer --obj %t.o 0 \
12+
# RUN: | FileCheck %s --check-prefix=DEMANGLED_FUNCTION_NAME
13+
# RUN: llvm-symbolizer --demangle --obj %t.o 0 \
14+
# RUN: | FileCheck %s --check-prefix=DEMANGLED_FUNCTION_NAME
15+
# RUN: llvm-symbolizer -C --obj %t.o 0 \
16+
# RUN: | FileCheck %s --check-prefix=DEMANGLED_FUNCTION_NAME
17+
# RUN: llvm-symbolizer --no-demangle --obj %t.o 0 \
18+
# RUN: | FileCheck %s --check-prefix=MANGLED_FUNCTION_NAME
19+
# RUN: llvm-symbolizer --demangle --no-demangle --obj %t.o 0 \
20+
# RUN: | FileCheck %s --check-prefix=MANGLED_FUNCTION_NAME
21+
# RUN: llvm-symbolizer -C --no-demangle --obj %t.o 0 \
22+
# RUN: | FileCheck %s --check-prefix=MANGLED_FUNCTION_NAME
23+
# RUN: llvm-symbolizer --no-demangle --demangle --obj %t.o 0 \
24+
# RUN: | FileCheck %s --check-prefix=DEMANGLED_FUNCTION_NAME
25+
# RUN: llvm-symbolizer --no-demangle -C --obj %t.o 0 \
26+
# RUN: | FileCheck %s --check-prefix=DEMANGLED_FUNCTION_NAME
27+
28+
# MANGLED_FUNCTION_NAME: _Z1cv
29+
# DEMANGLED_FUNCTION_NAME: c()

0 commit comments

Comments
 (0)