[llvm-symbolizer][test] Extract tests from llvm-symbolizer.test and simplify (#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
This commit is contained in:
James Henderson 2019-01-31 14:17:33 +00:00
parent b10f112cf9
commit 0ca744c845
6 changed files with 66 additions and 73 deletions

View 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>

View 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()

View File

@ -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

View File

@ -0,0 +1,5 @@
RUN: llvm-symbolizer --obj=%p/Inputs/macho-universal 0x1f84 | FileCheck %s
CHECK-NOT: main
CHECK: ??
CHECK-NOT: main

View File

@ -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

View File

@ -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()