2 // RUN
: llvm-mc
-arm-add-build-attributes
-filetype
=obj
-triple
=thumbv7a-none-linux-gnueabi
%s
-o
%t
3 // RUN
: llvm-mc
-arm-add-build-attributes
-filetype
=obj
-triple
=thumbv7a-none-linux-gnueabi
%S
/Inputs
/far-arm-thumb-
abs.s
-o
%tfar
4 // RUN
: ld.lld
%t %tfar
-o
%t2
5 // RUN
: llvm-objdump
-d
%t2
8 .section .text, "ax",%progbits
11 .type _start,%function
13 // address of too_far symbols are just out of range of ARM branch with
14 // 26-bit immediate field
and an addend of
-8
19 // CHECK
: Disassembly of section
.text:
21 // CHECK-NEXT
: _start
:
22 // CHECK-NEXT
: 20000: 00 f0 04 f8 bl #8
23 // 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, #5
27 // CHECK-NEXT
: 20010: c0
f2 02 1c movt
r12, #258
28 // CHECK-NEXT
: 20014: 60 47 bx
r12
29 // CHECK
: __Thumbv7ABSLongThunk_too_far2
:
30 // CHECK-NEXT
: 20016: 40 f2 09 0c movw
r12, #9
31 // CHECK-NEXT
: 2001a: c0
f2 02 1c movt
r12, #258
32 // CHECK-NEXT
: 2001e
: 60 47 bx
r12
33 // CHECK
: __Thumbv7ABSLongThunk_too_far3
:
34 // CHECK-NEXT
: 20020: 40 f2 0d
0c movw
r12, #13
35 // CHECK-NEXT
: 20024: c0
f2 12 0c movt
r12, #18
36 // CHECK-NEXT
: 20028: 60 47 bx
r12
37 // CHECK-NEXT
: 2002a: 00 00 movs
r0, r0