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