Skip to content

Commit

Permalink
[llvm-symbolizer][test] Extract tests from llvm-symbolizer.test and s…
Browse files Browse the repository at this point in the history
…implify (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
  • Loading branch information
jh7370 committed Jan 31, 2019
1 parent b10f112 commit 0ca744c
Show file tree
Hide file tree
Showing 6 changed files with 66 additions and 73 deletions.
18 changes: 0 additions & 18 deletions llvm/test/DebugInfo/Inputs/llvm-symbolizer-test.c
Original file line number Diff line number Diff line change
@@ -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>
56 changes: 1 addition & 55 deletions llvm/test/DebugInfo/llvm-symbolizer.test
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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()
24 changes: 24 additions & 0 deletions llvm/test/DebugInfo/symbolize-demangling.s
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
RUN: llvm-symbolizer --obj=%p/Inputs/macho-universal 0x1f84 | FileCheck %s

CHECK-NOT: main
CHECK: ??
CHECK-NOT: main
7 changes: 7 additions & 0 deletions llvm/test/DebugInfo/symbolize-macho-universal.test
Original file line number Diff line number Diff line change
@@ -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
29 changes: 29 additions & 0 deletions llvm/test/tools/llvm-symbolizer/demangle.s
Original file line number Diff line number Diff line change
@@ -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()

0 comments on commit 0ca744c

Please sign in to comment.