summaryrefslogtreecommitdiff
path: root/test/ELF/arm-thumb-plt-range-thunk-os.s
diff options
context:
space:
mode:
Diffstat (limited to 'test/ELF/arm-thumb-plt-range-thunk-os.s')
-rw-r--r--test/ELF/arm-thumb-plt-range-thunk-os.s114
1 files changed, 0 insertions, 114 deletions
diff --git a/test/ELF/arm-thumb-plt-range-thunk-os.s b/test/ELF/arm-thumb-plt-range-thunk-os.s
deleted file mode 100644
index 08907510be886..0000000000000
--- a/test/ELF/arm-thumb-plt-range-thunk-os.s
+++ /dev/null
@@ -1,114 +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 --shared --icf=all -o %t.so
-// 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 %t.so -start-address=0x2000000 -stop-address=0x2000018 -triple=thumbv7a-linux-gnueabihf | FileCheck -check-prefix=CHECK1 %s
-// RUN: llvm-objdump -d %t.so -start-address=0x2800004 -stop-address=0x2800034 -triple=thumbv7a-linux-gnueabihf | FileCheck -check-prefix=CHECK2 %s
-// RUN: llvm-objdump -d %t.so -start-address=0x4000000 -stop-address=0x4000010 -triple=thumbv7a-linux-gnueabihf | FileCheck -check-prefix=CHECK3 %s
-// RUN: llvm-objdump -d %t.so -start-address=0x4000010 -stop-address=0x4000100 -triple=armv7a-linux-gnueabihf | FileCheck -check-prefix=CHECK4 %s
- .syntax unified
- .thumb
-
-// Make sure that we generate a range extension thunk to a PLT entry
- .section ".text.1", "ax", %progbits
- .global sym1
- .global elsewhere
- .type elsewhere, %function
- .global preemptible
- .type preemptible, %function
- .global far_preemptible
- .type far_preemptible, %function
- .global far_nonpreemptible
- .hidden far_nonpreemptible
- .type far_nonpreemptible, %function
- .global far_nonpreemptible_alias
- .hidden far_nonpreemptible_alias
- .type far_nonpreemptible_alias, %function
-sym1:
- bl elsewhere
- bl preemptible
- bx lr
-preemptible:
- bl far_preemptible
- bl far_nonpreemptible
- bl far_nonpreemptible_alias
- bx lr
-// CHECK1: Disassembly of section .text:
-// CHECK1-NEXT: sym1:
-// CHECK1-NEXT: 2000000: 00 f0 00 d8 bl #8388608
-// CHECK1-NEXT: 2000004: 00 f0 04 d8 bl #8388616
-// CHECK1-NEXT: 2000008: 70 47 bx lr
-// CHECK1: preemptible:
-// CHECK1-NEXT: 200000a: 00 f0 07 d8 bl #8388622
-// CHECK1-NEXT: 200000e: 00 f0 0b d8 bl #8388630
-// CHECK1-NEXT: 2000012: 00 f0 09 d8 bl #8388626
-// CHECK1-NEXT: 2000016: 70 47 bx lr
-
- .section .text.2, "ax", %progbits
- .balign 0x0800000
- bx lr
-// CHECK2: __ThumbV7PILongThunk_elsewhere:
-// CHECK2-NEXT: 2800004: 40 f2 20 0c movw r12, #32
-// CHECK2-NEXT: 2800008: c0 f2 80 1c movt r12, #384
-// CHECK2-NEXT: 280000c: fc 44 add r12, pc
-// CHECK2-NEXT: 280000e: 60 47 bx r12
-// CHECK2: __ThumbV7PILongThunk_preemptible:
-// CHECK2-NEXT: 2800010: 40 f2 24 0c movw r12, #36
-// CHECK2-NEXT: 2800014: c0 f2 80 1c movt r12, #384
-// CHECK2-NEXT: 2800018: fc 44 add r12, pc
-// CHECK2-NEXT: 280001a: 60 47 bx r12
-// CHECK2: __ThumbV7PILongThunk_far_preemptible:
-// CHECK2-NEXT: 280001c: 40 f2 28 0c movw r12, #40
-// CHECK2-NEXT: 2800020: c0 f2 80 1c movt r12, #384
-// CHECK2-NEXT: 2800024: fc 44 add r12, pc
-// CHECK2-NEXT: 2800026: 60 47 bx r12
-// CHECK2: __ThumbV7PILongThunk_far_nonpreemptible:
-// CHECK2-NEXT: 2800028: 4f f6 cd 7c movw r12, #65485
-// CHECK2-NEXT: 280002c: c0 f2 7f 1c movt r12, #383
-// CHECK2-NEXT: 2800030: fc 44 add r12, pc
-// CHECK2-NEXT: 2800032: 60 47 bx r12
-
- .section .text.3, "ax", %progbits
-.balign 0x2000000
-far_preemptible:
-far_nonpreemptible:
- bl elsewhere
-
- .section .text.4, "ax", %progbits
-.balign 0x2000000
-far_nonpreemptible_alias:
- bl elsewhere
-
-// CHECK3: far_preemptible:
-// CHECK3: 4000000: 00 f0 16 e8 blx #44
-
-// CHECK4: Disassembly of section .plt:
-// CHECK4-NEXT: $a:
-// CHECK4-NEXT: 4000010: 04 e0 2d e5 str lr, [sp, #-4]!
-// CHECK4-NEXT: 4000014: 00 e6 8f e2 add lr, pc, #0, #12
-// CHECK4-NEXT: 4000018: 00 ea 8e e2 add lr, lr, #0, #20
-// CHECK4-NEXT: 400001c: ec ff be e5 ldr pc, [lr, #4076]!
-// CHECK4: $d:
-// CHECK4-NEXT: 4000020: d4 d4 d4 d4 .word 0xd4d4d4d4
-// CHECK4-NEXT: 4000024: d4 d4 d4 d4 .word 0xd4d4d4d4
-// CHECK4-NEXT: 4000028: d4 d4 d4 d4 .word 0xd4d4d4d4
-// CHECK4-NEXT: 400002c: d4 d4 d4 d4 .word 0xd4d4d4d4
-// CHECK4: $a:
-// CHECK4-NEXT: 4000030: 00 c6 8f e2 add r12, pc, #0, #12
-// CHECK4-NEXT: 4000034: 00 ca 8c e2 add r12, r12, #0, #20
-// CHECK4-NEXT: 4000038: d4 ff bc e5 ldr pc, [r12, #4052]!
-// CHECK4: $d:
-// CHECK4-NEXT: 400003c: d4 d4 d4 d4 .word 0xd4d4d4d4
-// CHECK4: $a:
-// CHECK4-NEXT: 4000040: 00 c6 8f e2 add r12, pc, #0, #12
-// CHECK4-NEXT: 4000044: 00 ca 8c e2 add r12, r12, #0, #20
-// CHECK4-NEXT: 4000048: c8 ff bc e5 ldr pc, [r12, #4040]!
-// CHECK4: $d:
-// CHECK4-NEXT: 400004c: d4 d4 d4 d4 .word 0xd4d4d4d4
-// CHECK4: $a:
-// CHECK4-NEXT: 4000050: 00 c6 8f e2 add r12, pc, #0, #12
-// CHECK4-NEXT: 4000054: 00 ca 8c e2 add r12, r12, #0, #20
-// CHECK4-NEXT: 4000058: bc ff bc e5 ldr pc, [r12, #4028]!
-// CHECK4: $d:
-// CHECK4-NEXT: 400005c: d4 d4 d4 d4 .word 0xd4d4d4d4