1# REQUIRES: arm
2# RUN: rm -rf %t; split-file %s %t
3
4# RUN: llvm-mc -filetype=obj -triple=armv4t-apple-darwin %t/armv4t-dtrace.s -o %t/armv4t-dtrace.o
5# RUN: %lld -arch armv4t -o %t/armv4t-dtrace %t/armv4t-dtrace.o
6
7## If references of dtrace symbols are handled by lld, their relocation should be replaced with the following instructions
8# RUN: llvm-objdump --macho -D %t/armv4t-dtrace | FileCheck %s --check-prefix=CHECK-armv4t
9
10# CHECK-armv4t: 00 00 20 e0  eor     r0, r0, r0
11
12# CHECK-armv4t: 00 00 a0 e1  mov     r0, r0
13
14# RUN: llvm-mc -filetype=obj -triple=thumbv7-apple-darwin %t/armv7-dtrace.s -o %t/armv7-dtrace.o
15# RUN: %lld -arch armv7 -o %t/armv7-dtrace %t/armv7-dtrace.o
16
17## If references of dtrace symbols are handled by lld, their relocation should be replaced with the following instructions
18# RUN: llvm-objdump --macho -D %t/armv7-dtrace | FileCheck %s --check-prefix=CHECK-armv7
19
20# CHECK-armv7:      40 40   eors    r0, r0
21# CHECK-armv7-NEXT: c0 46   mov     r8, r8
22
23# CHECK-armv7:      c0 46   mov     r8, r8
24# CHECK-armv7-NEXT: c0 46   mov     r8, r8
25
26;--- armv4t-dtrace.s
27	.globl	_main
28_main:
29	bl	___dtrace_isenabled$Foo$added$v1
30	.reference	___dtrace_typedefs$Foo$v2
31	bl	___dtrace_probe$Foo$added$v1$696e74
32	.reference	___dtrace_stability$Foo$v1$1_1_0_1_1_0_1_1_0_1_1_0_1_1_0
33
34.subsections_via_symbols
35
36;--- armv7-dtrace.s
37	.globl	_main
38	.thumb_func	_main
39_main:
40	bl	___dtrace_isenabled$Foo$added$v1
41	.reference	___dtrace_typedefs$Foo$v2
42	bl	___dtrace_probe$Foo$added$v1$696e74
43	.reference	___dtrace_stability$Foo$v1$1_1_0_1_1_0_1_1_0_1_1_0_1_1_0
44
45.subsections_via_symbols
46