aboutsummaryrefslogtreecommitdiff
path: root/test/ELF/arm-blx-v4t.s
diff options
context:
space:
mode:
Diffstat (limited to 'test/ELF/arm-blx-v4t.s')
-rw-r--r--test/ELF/arm-blx-v4t.s30
1 files changed, 30 insertions, 0 deletions
diff --git a/test/ELF/arm-blx-v4t.s b/test/ELF/arm-blx-v4t.s
new file mode 100644
index 000000000000..858b93fd5891
--- /dev/null
+++ b/test/ELF/arm-blx-v4t.s
@@ -0,0 +1,30 @@
+// RUN: llvm-mc -filetype=obj -triple=arm-none-linux-gnueabi %s -o %t
+// RUN: ld.lld %t -o %t2 2>&1 | FileCheck %s
+// REQUIRES: arm
+
+// On Arm v4t there is no blx instruction so all interworking must go via
+// a thunk. At present we don't support v4t so we give a warning for unsupported
+// features.
+
+// CHECK: warning: lld uses blx instruction, no object with architecture supporting feature detected.
+// CHECK-NEXT: warning: lld uses extended branch encoding, no object with architecture supporting feature detected.
+// CHECK-NEXT: warning: lld may use movt/movw, no object with architecture supporting feature detected.
+
+ .text
+ .syntax unified
+ .cpu arm7tdmi
+ .eabi_attribute 6, 2 @ Tag_CPU_arch
+ .arm
+ .globl _start
+ .type _start,%function
+ .p2align 2
+_start:
+ bl thumbfunc
+ bx lr
+
+ .thumb
+ .section .text.2, "ax", %progbits
+ .globl thumbfunc
+ .type thumbfunc,%function
+thumbfunc:
+ bx lr