38 lines · plain
1// REQUIRES: arm2// RUN: llvm-mc -arm-add-build-attributes -filetype=obj -triple=thumbv7a-none-linux-gnueabi %s -o %t3// RUN: llvm-mc -arm-add-build-attributes -filetype=obj -triple=thumbv7a-none-linux-gnueabi %S/Inputs/far-arm-thumb-abs.s -o %tfar4// RUN: ld.lld %t %tfar -o %t25// RUN: llvm-objdump -d %t26 .syntax unified7 .thumb8 .section .text, "ax",%progbits9 .globl _start10 .balign 0x1000011 .type _start,%function12_start:13 // address of too_far symbols are just out of range of ARM branch with14 // 26-bit immediate field and an addend of -815 bl too_far116 b too_far217 beq.w too_far318 19// CHECK: Disassembly of section .text:20// CHECK-EMPTY:21// CHECK-NEXT: _start:22// CHECK-NEXT: 20000: 00 f0 04 f8 bl #823// CHECK-NEXT: 20004: 00 f0 07 b8 b.w #14 <__Thumbv7ABSLongThunk_too_far2>24// CHECK-NEXT: 20008: 00 f0 0a 80 beq.w #20 <__Thumbv7ABSLongThunk_too_far3>25// CHECK: __Thumbv7ABSLongThunk_too_far1:26// CHECK-NEXT: 2000c: 40 f2 05 0c movw r12, #527// CHECK-NEXT: 20010: c0 f2 02 1c movt r12, #25828// CHECK-NEXT: 20014: 60 47 bx r1229// CHECK: __Thumbv7ABSLongThunk_too_far2:30// CHECK-NEXT: 20016: 40 f2 09 0c movw r12, #931// CHECK-NEXT: 2001a: c0 f2 02 1c movt r12, #25832// CHECK-NEXT: 2001e: 60 47 bx r1233// CHECK: __Thumbv7ABSLongThunk_too_far3:34// CHECK-NEXT: 20020: 40 f2 0d 0c movw r12, #1335// CHECK-NEXT: 20024: c0 f2 12 0c movt r12, #1836// CHECK-NEXT: 20028: 60 47 bx r1237// CHECK-NEXT: 2002a: 00 00 movs r0, r038