// REQUIRES: arm // RUN: llvm-mc --triple=armv7a-linux-gnueabihf -arm-add-build-attributes -filetype=obj -o %t.o %s // RUN: ld.lld %t.o -o %t // RUN: llvm-objdump --no-show-raw-insn -d %t | FileCheck %s .syntax unified .section .arm_target, "ax", %progbits .balign 0x1000 .arm arm_func_with_notype: .type arm_func_with_explicit_notype, %notype arm_func_with_explicit_notype: bx lr .section .thumb_target, "ax", %progbits .balign 4 .thumb thumb_func_with_notype: .type thumb_func_with_explicit_notype, %notype thumb_func_with_explicit_notype: bx lr /// All the symbols that are targets of the branch relocations do not have /// type STT_FUNC. LLD should not insert interworking thunks as non STT_FUNC /// symbols have no state information, the ABI assumes the user has manually /// done the interworking. .section .arm_caller, "ax", %progbits .balign 4 .arm .global _start _start: b .arm_target b arm_func_with_notype b arm_func_with_explicit_notype b .thumb_target b thumb_func_with_notype b thumb_func_with_explicit_notype .section .thumb_caller, "ax", %progbits .thumb .balign 4 b.w .arm_target b.w arm_func_with_notype b.w arm_func_with_explicit_notype b.w .thumb_target b.w thumb_func_with_notype b.w thumb_func_with_explicit_notype beq.w .arm_target beq.w arm_func_with_notype beq.w arm_func_with_explicit_notype beq.w .thumb_target beq.w thumb_func_with_notype beq.w thumb_func_with_explicit_notype // CHECK: 00012008 _start: // CHECK-NEXT: 12008: b #-16 // CHECK-NEXT: 1200c: b #-20 // CHECK-NEXT: 12010: b #-24 // CHECK-NEXT: 12014: b #-24 // CHECK-NEXT: 12018: b #-28 // CHECK-NEXT: 1201c: b #-32 // CHECK: 12020: b.w #-36 // CHECK-NEXT: 12024: b.w #-40 // CHECK-NEXT: 12028: b.w #-44 // CHECK-NEXT: 1202c: b.w #-44 // CHECK-NEXT: 12030: b.w #-48 // CHECK-NEXT: 12034: b.w #-52 // CHECK-NEXT: 12038: beq.w #-60 // CHECK-NEXT: 1203c: beq.w #-64 // CHECK-NEXT: 12040: beq.w #-68 // CHECK-NEXT: 12044: beq.w #-68 // CHECK-NEXT: 12048: beq.w #-72 // CHECK-NEXT: 1204c: beq.w #-76