summaryrefslogtreecommitdiff
path: root/test/ELF/arm-thumb-range-thunk-os.s
diff options
context:
space:
mode:
Diffstat (limited to 'test/ELF/arm-thumb-range-thunk-os.s')
-rw-r--r--test/ELF/arm-thumb-range-thunk-os.s149
1 files changed, 0 insertions, 149 deletions
diff --git a/test/ELF/arm-thumb-range-thunk-os.s b/test/ELF/arm-thumb-range-thunk-os.s
deleted file mode 100644
index 281e79a4eb1c1..0000000000000
--- a/test/ELF/arm-thumb-range-thunk-os.s
+++ /dev/null
@@ -1,149 +0,0 @@
-// REQUIRES: arm
-// RUN: llvm-mc -arm-add-build-attributes -filetype=obj -triple=thumbv7a-none-linux-gnueabi %s -o %t
-// RUN: ld.lld %t -o %t2 2>&1
-// The output file is large, most of it zeroes. We dissassemble only the
-// parts we need to speed up the test and avoid a large output file
-// RUN: llvm-objdump -d %t2 -start-address=1048576 -stop-address=1048588 -triple=thumbv7a-linux-gnueabihf | FileCheck -check-prefix=CHECK1 %s
-// RUN: llvm-objdump -d %t2 -start-address=2097152 -stop-address=2097154 -triple=thumbv7a-linux-gnueabihf | FileCheck -check-prefix=CHECK2 %s
-// RUN: llvm-objdump -d %t2 -start-address=3145728 -stop-address=3145730 -triple=thumbv7a-linux-gnueabihf | FileCheck -check-prefix=CHECK3 %s
-// RUN: llvm-objdump -d %t2 -start-address=4194304 -stop-address=4194310 -triple=thumbv7a-linux-gnueabihf | FileCheck -check-prefix=CHECK4 %s
-// RUN: llvm-objdump -d %t2 -start-address=16777216 -stop-address=16777270 -triple=thumbv7a-linux-gnueabihf | FileCheck -check-prefix=CHECK5 %s
-// RUN: llvm-objdump -d %t2 -start-address=17825792 -stop-address=17825808 -triple=thumbv7a-linux-gnueabihf | FileCheck -check-prefix=CHECK6 %s
-// RUN: llvm-objdump -d %t2 -start-address=20971524 -stop-address=20971532 -triple=thumbv7a-linux-gnueabihf | FileCheck -check-prefix=CHECK7 %s
-// RUN: llvm-objdump -d %t2 -start-address=31457280 -stop-address=31457286 -triple=thumbv7a-linux-gnueabihf | FileCheck -check-prefix=CHECK8 %s
-// RUN: llvm-objdump -d %t2 -start-address=35651584 -stop-address=35651594 -triple=thumbv7a-linux-gnueabihf | FileCheck -check-prefix=CHECK9 %s
-// RUN: llvm-objdump -d %t2 -start-address=36700160 -stop-address=36700170 -triple=thumbv7a-linux-gnueabihf | FileCheck -check-prefix=CHECK10 %s
-
-// Test the Range extension Thunks for Thumb when all the code is in a single
-// OutputSection. The Thumb unconditional branch b.w and branch and link bl
-// instructions have a range of 16Mb. We create a series of Functions a
-// megabyte apart. We expect range extension thunks to be created when a
-// branch is out of range. Thunks will be reused whenever they are in range
- .syntax unified
-
-// Define a function aligned on a megabyte boundary
- .macro FUNCTION suff
- .section .text.\suff\(), "ax", %progbits
- .thumb
- .balign 0x100000
- .globl tfunc\suff\()
- .type tfunc\suff\(), %function
-tfunc\suff\():
- bx lr
- .endm
-
- .section .text, "ax", %progbits
- .thumb
- .globl _start
-_start:
-// tfunc00 and tfunc15 are within 16Mb no Range Thunks expected
- bl tfunc00
- bl tfunc15
-// tfunc16 is > 16Mb away, expect a Range Thunk to be generated, to go into
-// the first of the pre-created ThunkSections.
- bl tfunc16
-// CHECK1: Disassembly of section .text:
-// CHECK1-NEXT: _start:
-// CHECK1-NEXT: 100000: ff f0 fe ff bl #1048572
-// CHECK1-NEXT: 100004: ff f3 fc d7 bl #16777208
-// CHECK1-NEXT: 100008: ff f2 fc d7 bl #15728632
-
- FUNCTION 00
-// CHECK2: tfunc00:
-// CHECK2-NEXT: 200000: 70 47 bx lr
- FUNCTION 01
-// CHECK3: tfunc01:
-// CHECK3-NEXT: 300000: 70 47 bx lr
- FUNCTION 02
-// tfunc28 is > 16Mb away, expect a Range Thunk to be generated, to go into
-// the first of the pre-created ThunkSections.
- b.w tfunc28
-// CHECK4: tfunc02:
-// CHECK4-NEXT: 400000: 70 47 bx lr
-// CHECK4-NEXT: 400002: 00 f0 01 90 b.w #12582914 <__Thumbv7ABSLongThunk_tfunc28>
- FUNCTION 03
- FUNCTION 04
- FUNCTION 05
- FUNCTION 06
- FUNCTION 07
- FUNCTION 08
- FUNCTION 09
- FUNCTION 10
- FUNCTION 11
- FUNCTION 12
- FUNCTION 13
- FUNCTION 14
-// Expect precreated ThunkSection here
-// CHECK5: __Thumbv7ABSLongThunk_tfunc16:
-// CHECK5-NEXT: 1000004: ff f1 fc bf b.w #2097144 <tfunc16>
-// CHECK5: __Thumbv7ABSLongThunk_tfunc28:
-// CHECK5-NEXT: 1000008: ff f1 fa 97 b.w #14680052 <tfunc28>
-// CHECK5: __Thumbv7ABSLongThunk_tfunc32:
-// CHECK5-NEXT: 100000c: 40 f2 01 0c movw r12, #1
-// CHECK5-NEXT: 1000010: c0 f2 20 2c movt r12, #544
-// CHECK5-NEXT: 1000014: 60 47 bx r12
-// CHECK5: __Thumbv7ABSLongThunk_tfunc33:
-// CHECK5-NEXT: 1000016: 40 f2 01 0c movw r12, #1
-// CHECK5-NEXT: 100001a: c0 f2 30 2c movt r12, #560
-// CHECK5-NEXT: 100001e: 60 47 bx r12
-// CHECK5: __Thumbv7ABSLongThunk_tfunc02:
-// CHECK5-NEXT: 1000020: ff f7 ee 97 b.w #-12582948 <tfunc02>
- FUNCTION 15
-// tfunc00 and tfunc01 are < 16Mb away, expect no range extension thunks
- bl tfunc00
- bl tfunc01
-// tfunc32 and tfunc33 are > 16Mb away, expect range extension thunks in the
-// precreated thunk section
- bl tfunc32
- bl tfunc33
-// CHECK6: tfunc15:
-// CHECK6-NEXT: 1100000: 70 47 bx lr
-// CHECK6-NEXT: 1100002: ff f4 fd d7 bl #-15728646
-// CHECK6-NEXT: 1100006: ff f5 fb d7 bl #-14680074
-// CHECK6-NEXT: 110000a: ff f6 ff ff bl #-1048578
-// CHECK6-NEXT: 110000e: 00 f7 02 f8 bl #-1048572
- FUNCTION 16
- FUNCTION 17
- FUNCTION 18
-// Expect another precreated thunk section here
-// CHECK7: __Thumbv7ABSLongThunk_tfunc15:
-// CHECK7-NEXT: 1400004: ff f4 fc bf b.w #-3145736 <tfunc15>
-// CHECK7: __Thumbv7ABSLongThunk_tfunc16:
-// CHECK7-NEXT: 1400008: ff f5 fa bf b.w #-2097164 <tfunc16>
- FUNCTION 19
- FUNCTION 20
- FUNCTION 21
- FUNCTION 22
- FUNCTION 23
- FUNCTION 24
- FUNCTION 25
- FUNCTION 26
- FUNCTION 27
- FUNCTION 28
-// tfunc02 is > 16Mb away, expect range extension thunks in precreated thunk
-// section
-// CHECK8: tfunc28:
-// CHECK8-NEXT: 1e00000: 70 47 bx lr
-// CHECK8-NEXT: 1e00002: 00 f6 0d 90 b.w #-14680038 <__Thumbv7ABSLongThunk_tfunc02>
-
- b.w tfunc02
- FUNCTION 29
- FUNCTION 30
- FUNCTION 31
- FUNCTION 32
- // tfunc15 and tfunc16 are > 16 Mb away expect Thunks in the nearest
- // precreated thunk section.
- bl tfunc15
- bl tfunc16
-// CHECK9: tfunc32:
-// CHECK9: 2200000: 70 47 bx lr
-// CHECK9-NEXT: 2200002: ff f5 ff d7 bl #-14680066
-// CHECK9-NEXT: 2200006: ff f5 ff d7 bl #-14680066
-
- FUNCTION 33
- bl tfunc15
- bl tfunc16
-// CHECK10: tfunc33:
-// CHECK10: 2300000: 70 47 bx lr
-// CHECK10-NEXT: 2300002: ff f4 ff d7 bl #-15728642
-// CHECK10-NEXT: 2300006: ff f4 ff d7 bl #-15728642