forked from OSchip/llvm-project
47 lines
1.7 KiB
Plaintext
47 lines
1.7 KiB
Plaintext
# Test to check if machine function splitter still produces the right backtraces
|
|
# with lldb when a function is split into a hot and cold part and the cold part
|
|
# is executed. The cold part has the same function symbol name but with a
|
|
# ".cold" suffix and this test checks that the back trace is clear.
|
|
|
|
# UNSUPPORTED: system-darwin, system-windows
|
|
# REQUIRES: target-x86_64
|
|
# REQUIRES: lld
|
|
|
|
# RUN: split-file %s %t.split
|
|
#
|
|
# RUN: %clang_host %p/Inputs/split-machine-functions.ll -o %t
|
|
# RUN: %lldb %t -s %t.split/commands -o exit | FileCheck %s --check-prefix=DEFAULT
|
|
#
|
|
# RUN: %clang_host %p/Inputs/split-machine-functions.ll -fsplit-machine-functions -o %t
|
|
# RUN: %lldb %t -s %t.split/commands -o exit | FileCheck %s --check-prefix=SPLIT
|
|
#
|
|
# Test a permutation where foo.cold is very far from foo. The default ordering does not
|
|
# ensure that there will be a gap between foo and foo.cold. Using a symbol ordering
|
|
# file guarantees this
|
|
# RUN: %clang_host %p/Inputs/split-machine-functions.ll -fsplit-machine-functions -o %t -fuse-ld=lld -Wl,--symbol-ordering-file,%t.split/sym_order_1.txt -Wl,--warn-symbol-ordering -Wl,--fatal-warnings
|
|
# RUN: %lldb %t -s %t.split/commands -o exit | FileCheck %s --check-prefix=SPLIT
|
|
|
|
#--- commands
|
|
breakpoint set -n bar
|
|
# DEFAULT: Breakpoint 1: where = {{.*}}`bar
|
|
# SPLIT: Breakpoint 1: where = {{.*}}`bar
|
|
|
|
process launch
|
|
# DEFAULT: stop reason = breakpoint 1.1
|
|
# SPLIT: stop reason = breakpoint 1.1
|
|
|
|
thread backtrace
|
|
# DEFAULT: frame #0: {{.*}}`bar
|
|
# DEFAULT: frame #1: {{.*}}`foo() +
|
|
# DEFAULT: frame #2: {{.*}}`main +
|
|
# SPLIT: frame #0: {{.*}}`bar
|
|
# SPLIT: frame #1: {{.*}}`foo() (.cold) +
|
|
# SPLIT: frame #2: {{.*}}`main +
|
|
|
|
#--- sym_order_1.txt
|
|
_Z3foov
|
|
main
|
|
_Z3barv
|
|
_Z3bazv
|
|
_Z3foov.cold
|