[ELF] Make SyntheticSection parameter order match InputSection
[llvm-project.git] / lld / test / ELF / aarch64-lo12-alignment.s
blob7ccb2402a2605f7f3ddfc017f240d0760a9ca2f6
1 // REQUIRES: aarch64
2 // RUN: llvm-mc -filetype=obj -triple=aarch64 %s -o %t
3 // RUN: not ld.lld %t -o /dev/null 2>&1 | FileCheck %s
5 // Test derived from a typical ODR violation where a global is declared
6 // extern int but defined as a half or byte sized type.
7 .section .text
8 .globl _start
9 .type _start, %function
10 // Access foo2 as if it were an aligned 32-bit int, expect an error as
11 // foo is not aligned
13 _start:
14 ldrb w2, [x0, #:lo12:foo1] // Ok as no shift involved
15 ldrh w2, [x0, #:lo12:foo1] // Error foo1 is not 2-byte aligned
16 ldrh w2, [x0, #:lo12:foo2] // Ok as foo2 is 2-byte aligned
17 ldr w2, [x0, #:lo12:foo2] // Error foo2 is not 4-byte aligned
18 ldr w2, [x0, #:lo12:foo4] // Ok as foo4 is 4-byte aligned
19 ldr x3, [x0, #:lo12:foo4] // Error foo4 is not 8-byte aligned
20 ldr x3, [x0, #:lo12:foo8] // Ok as foo8 is 8-byte aligned
21 ldr q0, [x0, #:lo12:foo8] // Error foo8 is not 16-byte aligned
22 ldr q0, [x0, #:lo12:foo16] // Ok as foo16 is 16-byte aligned
24 .section .data.bool, "a", @nobits
25 .balign 16
26 .globl foo16
27 .globl foo1
28 .globl foo2
29 .globl foo4
30 .globl foo8
31 foo16:
32 .space 1
33 foo1:
34 .space 1
35 foo2:
36 .space 2
37 foo4:
38 .space 4
39 foo8:
40 .space 8
42 // CHECK: improper alignment for relocation R_AARCH64_LDST16_ABS_LO12_NC: 0x220181 is not aligned to 2 bytes
43 // CHECK-NEXT: improper alignment for relocation R_AARCH64_LDST32_ABS_LO12_NC: 0x220182 is not aligned to 4 bytes
44 // CHECK-NEXT: improper alignment for relocation R_AARCH64_LDST64_ABS_LO12_NC: 0x220184 is not aligned to 8 bytes
45 // CHECK-NEXT: improper alignment for relocation R_AARCH64_LDST128_ABS_LO12_NC: 0x220188 is not aligned to 16 bytes