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