forked from OSchip/llvm-project
This test includes a source that will produce basic blocks and hence sections with -fbasic-block-sections=all.
The test reorders the basic blocks to be dis-contiguous in the address space and checks if the back trace contains the right symbol. Reviewed By: labath Differential Revision: https://reviews.llvm.org/D89179
This commit is contained in:
parent
701cf4b5a5
commit
2e5b701d93
|
@ -0,0 +1,18 @@
|
|||
int k = 1;
|
||||
|
||||
int bar() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int foo() {
|
||||
return bar();
|
||||
}
|
||||
|
||||
int main() {
|
||||
// Control flow to create basic block sections.
|
||||
if (k)
|
||||
foo();
|
||||
else
|
||||
bar();
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
# Test to check if using basic block sections to reorder basic blocks at
|
||||
# run-time still produces the right backtraces with lldb.
|
||||
|
||||
# UNSUPPORTED: system-darwin, system-windows
|
||||
# REQUIRES: target-x86_64
|
||||
# REQUIRES: lld
|
||||
|
||||
# RUN: %clang_host %p/Inputs/basic-block-sections.c -o %t
|
||||
# RUN: %lldb %t -s %s -o exit | FileCheck %s --check-prefix=DEFAULT
|
||||
|
||||
# RUN: %clang_host %p/Inputs/basic-block-sections.c -o %t -fbasic-block-sections=all
|
||||
# RUN: %lldb %t -s %s -o exit | FileCheck %s --check-prefix=BBSECTIONS
|
||||
|
||||
# Reorder basic blocks so that main's basic blocks are discontiguous
|
||||
# RUN: echo "main.3" > %t.order
|
||||
# RUN: echo "bar" >> %t.order
|
||||
# RUN: echo "main" >> %t.order
|
||||
# RUN: echo "main.2" >> %t.order
|
||||
# RUN: echo "foo" >> %t.order
|
||||
# RUN: echo "main.1" >> %t.order
|
||||
# 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
|
||||
# RUN: %lldb %t -s %s -o exit | FileCheck %s --check-prefix=BBSECTIONS
|
||||
|
||||
# Test the reverse permutation too.
|
||||
# RUN: echo "main.1" > %t.order
|
||||
# RUN: echo "foo" >> %t.order
|
||||
# RUN: echo "main.2" >> %t.order
|
||||
# RUN: echo "main" >> %t.order
|
||||
# RUN: echo "bar" >> %t.order
|
||||
# RUN: echo "main.3" >> %t.order
|
||||
# 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
|
||||
# RUN: %lldb %t -s %s -o exit | FileCheck %s --check-prefix=BBSECTIONS
|
||||
|
||||
breakpoint set -n bar
|
||||
# DEFAULT: Breakpoint 1: where = {{.*}}`bar
|
||||
# BBSECTIONS: Breakpoint 1: where = {{.*}}`bar
|
||||
|
||||
process launch
|
||||
# DEFAULT: stop reason = breakpoint 1.1
|
||||
# BBSECTIONS: stop reason = breakpoint 1.1
|
||||
|
||||
thread backtrace
|
||||
# DEFAULT: frame #0: {{.*}}`bar
|
||||
# DEFAULT: frame #1: {{.*}}`foo
|
||||
# DEFAULT: frame #2: {{.*}}`main +
|
||||
|
||||
# BBSECTIONS: frame #0: {{.*}}`bar
|
||||
# BBSECTIONS: frame #1: {{.*}}`foo
|
||||
# BBSECTIONS: frame #2: {{.*}}`main.1 +
|
Loading…
Reference in New Issue