xref: /llvm-project/llvm/test/MC/AArch64/fixup-out-of-range.s (revision 54c79fa53c17a93d3d784738cae52d847102d279)
1// RUN: not llvm-mc -triple aarch64 -filetype obj < %s -o /dev/null 2>&1 | FileCheck %s
2// RUN: not llvm-mc -triple aarch64-windows -filetype obj < %s -o /dev/null 2>&1 | FileCheck %s -check-prefixes=CHECK,CHECK-WIN
3
4// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: fixup value out of range
5  adr x0, distant
6
7// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: fixup value out of range
8  ldr x0, distant
9
10// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: fixup not sufficiently aligned
11  ldr x0, unaligned
12
13// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: fixup value out of range
14  b.eq distant
15
16// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: fixup not sufficiently aligned
17  b.eq unaligned
18
19// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: fixup value out of range
20  ldr x0, [x1, distant-.]
21
22// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: fixup must be 8-byte aligned
23  ldr x0, [x1, unaligned-.]
24
25// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: fixup value out of range
26  ldr w0, [x1, distant-.]
27
28// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: fixup must be 4-byte aligned
29  ldr w0, [x1, unaligned-.]
30
31// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: fixup value out of range
32  ldrh w0, [x1, distant-.]
33
34// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: fixup must be 2-byte aligned
35  ldrh w0, [x1, unaligned-.]
36
37// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: fixup value out of range
38  ldrb w0, [x1, distant-.]
39
40// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: fixup value out of range
41  ldr q0, [x1, distant-.]
42
43// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: fixup must be 16-byte aligned
44  ldr q0, [x1, unaligned-.]
45
46// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: fixup value out of range
47  tbz x0, #1, distant
48
49// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: fixup not sufficiently aligned
50  tbz x0, #1, unaligned
51
52// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: fixup value out of range
53  b distant
54
55// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: fixup not sufficiently aligned
56  b unaligned
57
58// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: fixup value out of range
59  movz x0, #:abs_g0:value1
60
61// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: fixup value out of range
62  movz x0, #:abs_g1:value2
63
64// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: fixup value out of range
65  movz x0, #:abs_g0_s:value1
66
67// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: fixup value out of range
68  movz x0, #:abs_g1_s:value2
69
70// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: relocation for a thread-local variable points to an absolute symbol
71  movz x0, #:tprel_g0:value1
72
73// CHECK-WIN: :[[@LINE+1]]:{{[0-9]+}}: error: fixup value out of range
74  adrp x0, external+0x1000000
75
76  .byte 0
77unaligned:
78  .byte 0
79
80  .space 1<<27
81  .balign 8
82distant:
83  .word 0
84value1 = 0x12345678
85value2 = 0x123456789
86