2 // RUN
: llvm-mc
-arm-add-build-attributes
-filetype
=obj
-triple
=armv7a-none-linux-gnueabi
%s
-o
%t
3 // RUN
: ld.lld
%t -o
%t2
4 // The output file is large
, most of it zeroes. We dissassemble only the
5 // parts we need to speed up the test
and avoid
a large output file
6 // RUN
: llvm-objdump
--no-print-imm-hex
-d
%t2
--start-address
=0x100002 --stop-address
=0x10000a | FileCheck
--check-prefix
=CHECK1
%s
7 // RUN
: llvm-objdump
--no-print-imm-hex
-d
%t2
--start-address
=0x1000004 --stop-address
=0x1000026 | FileCheck
--check-prefix
=CHECK2
%s
8 // RUN
: llvm-objdump
--no-print-imm-hex
-d
%t2
--start-address
=0x1100014 --stop-address
=0x1100022 | FileCheck
--check-prefix
=CHECK3
%s
9 // In this test case
a branch that is in range
and does
not need its range
10 // extended can
be pushed out of range by another Thunk
, necessitating another
14 .section .text.\suff\(), "ax", %progbits
18 .type tfunc\suff\(), %function
28 // arm_target is in range but needs an interworking thunk
30 // CHECK1-NEXT
: 100002: f300 d006
bl 0x1000012 <__Thumbv7ABSLongThunk_target
>
31 // CHECK1-NEXT
: 100006: f2ff
97ff b.w
0x1000008 <__Thumbv7ABSLongThunk_arm_target
>
36 .type target2, %function
56 .section .text.16, "ax", %progbits
59 .type arm_target, %function
62 // CHECK2
: 01000004 <arm_target
>:
63 // CHECK2
: <__Thumbv7ABSLongThunk_arm_target
>:
64 // CHECK2-NEXT
: 1000008: f240
0c04 movw
r12, #4
65 // CHECK2-NEXT
: 100000c
: f2c0
1c00 movt
r12, #256
66 // CHECK2-NEXT
: 1000010: 4760 bx
r12
67 // CHECK2
: <__Thumbv7ABSLongThunk_target
>:
68 // CHECK2-NEXT
: 1000012: f0ff bfff b.w
0x1100014 <target
>
69 // CHECK2
: <__Thumbv7ABSLongThunk_target2
>:
70 // CHECK2-NEXT
: 1000016: f4ff
97fc b.w
0x100012 <target2
>
72 .section .text.17, "ax", %progbits
73 // Just enough space so that
bl target is in range if no extension thunks are
78 .section .text.18, "ax", %progbits
81 .type target, %function
82 // target is at maximum ARM branch range away from caller.
84 // Similar case in the backwards direction
90 // CHECK3-NEXT
: 1100014: f6ff ffff
bl 0x1000016 <__Thumbv7ABSLongThunk_target2
>
91 // CHECK3-NEXT
: 1100018: bf00
nop
92 // CHECK3-NEXT
: 110001a: bf00
nop
93 // CHECK3-NEXT
: 110001c
: 4770 bx
lr