| // REQUIRES: arm |
| // RUN: llvm-mc -filetype=obj -triple=armv7a-linux-gnueabihf --arm-add-build-attributes %s -o %t.o |
| // RUN: ld.lld --fix-cortex-a8 --shared %t.o -o %t2 |
| // RUN: llvm-objdump -d --no-show-raw-insn %t2 | FileCheck %s |
| |
| /// Test case that for an OutputSection larger than the ThunkSectionSpacing |
| /// --fix-cortex-a8 will cause the size of the ThunkSection to be rounded up to |
| /// the nearest 4KiB |
| .thumb |
| |
| .section .text.01, "ax", %progbits |
| .balign 4096 |
| .globl _start |
| .type _start, %function |
| _start: |
| /// state change thunk required |
| b.w arm_func |
| thumb_target: |
| .space 4096 - 10 |
| /// erratum patch needed |
| nop.w |
| b.w thumb_target |
| |
| /// Expect thunk and patch to be inserted here |
| // CHECK: 00012004 <__ThumbV7PILongThunk_arm_func>: |
| // CHECK-NEXT: 12004: movw r12, #4088 |
| // CHECK-NEXT: movt r12, #256 |
| // CHECK-NEXT: add r12, pc |
| // CHECK-NEXT: bx r12 |
| // CHECK: 00013004 <__CortexA8657417_11FFE>: |
| // CHECK-NEXT: 13004: b.w 0x11004 <thumb_target> |
| .section .text.02 |
| /// Take us over thunk section spacing |
| .space 16 * 1024 * 1024 |
| |
| .section .text.03, "ax", %progbits |
| .arm |
| .balign 4 |
| .type arm_func, %function |
| arm_func: |
| bx lr |