xref: /llvm-project/lldb/test/Shell/Unwind/basic-block-sections.test (revision 7143923f86b5d13cb079010b908e55f7f78cb75e)
12e5b701dSSriraman Tallam# Test to check if using basic block sections to reorder basic blocks at
22e5b701dSSriraman Tallam# run-time still produces the right backtraces with lldb.
32e5b701dSSriraman Tallam
42e5b701dSSriraman Tallam# UNSUPPORTED: system-darwin, system-windows
52e5b701dSSriraman Tallam# REQUIRES: target-x86_64
62e5b701dSSriraman Tallam# REQUIRES: lld
72e5b701dSSriraman Tallam
82e5b701dSSriraman Tallam# RUN: %clang_host %p/Inputs/basic-block-sections.c -o %t
92e5b701dSSriraman Tallam# RUN: %lldb %t -s %s -o exit | FileCheck  %s --check-prefix=DEFAULT
102e5b701dSSriraman Tallam
112e5b701dSSriraman Tallam# RUN: %clang_host %p/Inputs/basic-block-sections.c -o %t -fbasic-block-sections=all
122e5b701dSSriraman Tallam# RUN: %lldb %t -s %s -o exit | FileCheck  %s --check-prefix=BBSECTIONS
132e5b701dSSriraman Tallam
142e5b701dSSriraman Tallam# Reorder basic blocks so that main's basic blocks are discontiguous
15*7143923fSSriraman Tallam# RUN: echo "main.__part.3" > %t.order
162e5b701dSSriraman Tallam# RUN: echo "bar" >> %t.order
172e5b701dSSriraman Tallam# RUN: echo "main" >> %t.order
18*7143923fSSriraman Tallam# RUN: echo "main.__part.2" >> %t.order
192e5b701dSSriraman Tallam# RUN: echo "foo" >> %t.order
20*7143923fSSriraman Tallam# RUN: echo "main.__part.1" >> %t.order
212e5b701dSSriraman Tallam# RUN: %clang_host %p/Inputs/basic-block-sections.c -o %t -fbasic-block-sections=all -fuse-ld=lld -Wl,--symbol-ordering-file,%t.order -Wl,--warn-symbol-ordering -Wl,--fatal-warnings
222e5b701dSSriraman Tallam# RUN: %lldb %t -s %s -o exit | FileCheck  %s --check-prefix=BBSECTIONS
232e5b701dSSriraman Tallam
242e5b701dSSriraman Tallam# Test the reverse permutation too.
25*7143923fSSriraman Tallam# RUN: echo "main.__part.1" > %t.order
262e5b701dSSriraman Tallam# RUN: echo "foo" >> %t.order
27*7143923fSSriraman Tallam# RUN: echo "main.__part.2" >> %t.order
282e5b701dSSriraman Tallam# RUN: echo "main" >> %t.order
292e5b701dSSriraman Tallam# RUN: echo "bar" >> %t.order
30*7143923fSSriraman Tallam# RUN: echo "main.__part.3" >> %t.order
312e5b701dSSriraman Tallam# RUN: %clang_host %p/Inputs/basic-block-sections.c -o %t -fbasic-block-sections=all -fuse-ld=lld -Wl,--symbol-ordering-file,%t.order -Wl,--warn-symbol-ordering -Wl,--fatal-warnings
322e5b701dSSriraman Tallam# RUN: %lldb %t -s %s -o exit | FileCheck  %s --check-prefix=BBSECTIONS
332e5b701dSSriraman Tallam
342e5b701dSSriraman Tallambreakpoint set -n bar
352e5b701dSSriraman Tallam# DEFAULT: Breakpoint 1: where = {{.*}}`bar
362e5b701dSSriraman Tallam# BBSECTIONS: Breakpoint 1: where = {{.*}}`bar
372e5b701dSSriraman Tallam
382e5b701dSSriraman Tallamprocess launch
392e5b701dSSriraman Tallam# DEFAULT: stop reason = breakpoint 1.1
402e5b701dSSriraman Tallam# BBSECTIONS: stop reason = breakpoint 1.1
412e5b701dSSriraman Tallam
422e5b701dSSriraman Tallamthread backtrace
432e5b701dSSriraman Tallam# DEFAULT: frame #0: {{.*}}`bar
442e5b701dSSriraman Tallam# DEFAULT: frame #1: {{.*}}`foo
452e5b701dSSriraman Tallam# DEFAULT: frame #2: {{.*}}`main +
462e5b701dSSriraman Tallam
472e5b701dSSriraman Tallam# BBSECTIONS: frame #0: {{.*}}`bar
482e5b701dSSriraman Tallam# BBSECTIONS: frame #1: {{.*}}`foo
49*7143923fSSriraman Tallam# BBSECTIONS: frame #2: {{.*}}`main.__part.1 +
50