2 // RUN
: llvm-mc
--triple
=armv7a-linux-gnueabihf
-arm-add-build-attributes
-filetype
=obj
-o
%t.o
%s
3 // RUN
: ld.lld
%t.o
--defsym sym
=0x13001 -o
%t 2>&1 | FileCheck
%s
--check-prefix
=WARN
4 // RUN
: llvm-objdump
--no-show-raw-insn
-d
%t | FileCheck
%s
6 /// A similar test to arm-thumb-interwork-notfunc.s this time exercising the
7 /// case where
a symbol does
not have type STT_FUNC but it does have the bottom
8 /// bit set. We use absolute symbols to represent assembler labels as the
9 /// minimum alignment of
a label in code is
2.
13 .type _start, %function
21 // WARN
: branch
and link relocation
: R_ARM_CALL to non STT_FUNC symbol
: sym interworking
not performed; consider using directive
'.type sym, %function' to give symbol type STT_FUNC if interworking between ARM
and Thumb is required
28 // WARN
: branch
and link relocation
: R_ARM_THM_CALL to non STT_FUNC symbol
: sym interworking
not performed; consider using directive
'.type sym, %function' to give symbol type STT_FUNC if interworking between ARM
and Thumb is required
30 // CHECK
: 00021000 <arm_caller
>:
31 // CHECK-NEXT
: 21000: b 0x13000
32 // CHECK-NEXT
: 21004: bl 0x13000
33 // CHECK-NEXT
: 21008: blx
0x13000
35 // CHECK
: 0002100c
<thumb_caller
>:
36 // CHECK-NEXT
: 2100c
: b.w
0x13000
37 // CHECK-NEXT
: 21010: bl 0x13000
38 // CHECK-NEXT
: 21014: blx
0x13004