xref: /llvm-project/llvm/test/ExecutionEngine/JITLink/AArch32/ELF_relocations_thumbv6m.s (revision f29352b63b448485177a2e2b31d864f808070c25)
1# Test pre-v7 Thumb features for Thumb-only targets
2#
3# RUN: llvm-mc -triple=thumbv6m-linux-gnueabi -arm-add-build-attributes -filetype=obj -o %t_thumbv6m.o %s
4# RUN: llvm-objdump -r %t_thumbv6m.o | FileCheck --check-prefix=CHECK-TYPE %s
5# RUN: llvm-objdump --disassemble %t_thumbv6m.o | FileCheck --check-prefix=CHECK-INSTR %s
6# RUN: llvm-jitlink -noexec -slab-address 0x76ff0000 -slab-allocate 10Kb \
7# RUN:              -slab-page-size 4096 -abs external_func=0x76bbe880 \
8# RUN:              -check %s %t_thumbv6m.o
9#
10# RUN: llvm-mc -triple=thumbv7m-linux-gnueabi -arm-add-build-attributes -filetype=obj -o %t_thumbv7m.o %s
11# RUN: llvm-objdump -r %t_thumbv7m.o | FileCheck --check-prefix=CHECK-TYPE %s
12# RUN: llvm-objdump --disassemble %t_thumbv7m.o | FileCheck --check-prefix=CHECK-INSTR %s
13# RUN: llvm-jitlink -noexec -slab-address 0x76ff0000 -slab-allocate 10Kb \
14# RUN:              -slab-page-size 4096 -abs external_func=0x76bbe880 \
15# RUN:              -check %s %t_thumbv7m.o
16#
17# RUN: llvm-mc -triple=thumbv7-linux-gnueabi -arm-add-build-attributes -filetype=obj -o %t_thumbv7.o %s
18# RUN: llvm-objdump -r %t_thumbv7.o | FileCheck --check-prefix=CHECK-TYPE %s
19# RUN: llvm-objdump --disassemble %t_thumbv7.o | FileCheck --check-prefix=CHECK-INSTR %s
20# RUN: llvm-jitlink -noexec -slab-address 0x76ff0000 -slab-allocate 10Kb \
21# RUN:              -slab-page-size 4096 -abs external_func=0x76bbe880 \
22# RUN:              -check %s %t_thumbv7.o
23
24
25	.text
26	.syntax unified
27
28# CHECK-TYPE: {{[0-9a-f]+}} R_ARM_THM_CALL call_target_thumb
29# CHECK-INSTR: <call_site>:
30# CHECK-INSTR: f7ff fffe     bl
31# We decode the operand with index 2, because bl generates two leading implicit
32# predicate operands that we have to skip in order to decode the call_target operand
33# jitlink-check: decode_operand(call_site, 2) = call_target_thumb - next_pc(call_site)
34	.globl	call_site
35	.type	call_site,%function
36	.p2align	1
37	.code	16
38	.thumb_func
39call_site:
40	bl	call_target_thumb
41	.size	call_site, .-call_site
42
43	.globl	call_target_thumb
44	.type	call_target_thumb,%function
45	.p2align	1
46	.code	16
47	.thumb_func
48call_target_thumb:
49	bx	lr
50	.size	call_target_thumb, .-call_target_thumb
51
52# Empty main function for jitlink to be happy
53	.globl	main
54	.type	main,%function
55	.p2align	1
56	.code	16
57	.thumb_func
58main:
59	bx	lr
60	.size	main,	.-main
61