1 ; RUN
: llvm-mc
-triple aarch64-windows
-filetype obj
-o
%t.obj
%s
2 ; RUN
: llvm-readobj
-r
%t.obj | FileCheck
%s
3 ; RUN
: llvm-objdump
-d
%t.obj | FileCheck
%s
-check-prefix DISASM
5 ; IMAGE_REL_ARM64_ADDR32
10 ; IMAGE_REL_ARM64_ADDR32NB
13 ; IMAGE_REL_ARM64_ADDR64
18 ; IMAGE_REL_ARM64_BRANCH26
21 ; IMAGE_REL_ARM64_PAGEBASE_REL21
24 ; IMAGE_REL_ARM64_PAGEOFFSET_12A
27 ; IMAGE_REL_ARM64_PAGEOFFSET_12L
28 ldr x0
, [x0
, :lo12
:foo
]
30 ; IMAGE_REL_ARM64_PAGEBASE_REL21
, even if the symbol offset is known
34 ; IMAGE_REL_ARM64_SECREL
38 ; IMAGE_REL_ARM64_SECTION
42 adrp x0
, baz
+ 0x12345
44 add x0
, x0
, :lo12
:foo
+ 0x12345
45 ldrb w0
, [x0
, :lo12
:foo
+ 0x12345]
46 ldr x0
, [x0
, :lo12
:foo
+ 0x12348]
48 ; IMAGE_REL_ARM64_SECREL_LOW12A
49 add x0
, x0
, :secrel_lo12
:foo
50 ; IMAGE_REL_ARM64_SECREL_HIGH12A
51 add x0
, x0
, :secrel_hi12
:foo
52 ; IMAGE_REL_ARM64_SECREL_LOW12L
53 ldr x0
, [x0
, :secrel_lo12
:foo
]
55 ; IMAGE_REL_ARM64_REL21
58 ; IMAGE_REL_ARM64_BRANCH19
61 ; IMAGE_REL_ARM64_BRANCH14
64 ; CHECK
: Format
: COFF-ARM64
65 ; CHECK
: Arch
: aarch64
66 ; CHECK
: AddressSize
: 64bit
67 ; CHECK
: Relocations
[
68 ; CHECK
: Section
(1) .text {
69 ; CHECK
: 0x4 IMAGE_REL_ARM64_ADDR32 foo
70 ; CHECK
: 0x8 IMAGE_REL_ARM64_ADDR32NB func
71 ; CHECK
: 0xC IMAGE_REL_ARM64_ADDR64 arr
72 ; CHECK
: 0x14 IMAGE_REL_ARM64_BRANCH26 target
73 ; CHECK
: 0x18 IMAGE_REL_ARM64_PAGEBASE_REL21 foo
74 ; CHECK
: 0x1C IMAGE_REL_ARM64_PAGEOFFSET_12A foo
75 ; CHECK
: 0x20 IMAGE_REL_ARM64_PAGEOFFSET_12L foo
76 ; CHECK
: 0x24 IMAGE_REL_ARM64_PAGEBASE_REL21 bar
77 ; CHECK
: 0x28 IMAGE_REL_ARM64_SECREL
.text
78 ; CHECK
: 0x2C IMAGE_REL_ARM64_SECTION func
79 ; CHECK
: 0x30 IMAGE_REL_ARM64_PAGEBASE_REL21 baz
80 ; CHECK
: 0x34 IMAGE_REL_ARM64_PAGEOFFSET_12A foo
81 ; CHECK
: 0x38 IMAGE_REL_ARM64_PAGEOFFSET_12L foo
82 ; CHECK
: 0x3C IMAGE_REL_ARM64_PAGEOFFSET_12L foo
83 ; CHECK
: 0x40 IMAGE_REL_ARM64_SECREL_LOW12A foo
84 ; CHECK
: 0x44 IMAGE_REL_ARM64_SECREL_HIGH12A foo
85 ; CHECK
: 0x48 IMAGE_REL_ARM64_SECREL_LOW12L foo
86 ; CHECK
: 0x4C IMAGE_REL_ARM64_REL21 foo
87 ; CHECK
: 0x50 IMAGE_REL_ARM64_BRANCH19 target
88 ; CHECK
: 0x54 IMAGE_REL_ARM64_BRANCH14 target
92 ; DISASM
: 30: 20 1a 09 b0 adrp x0
, #305418240
93 ; DISASM
: 34: 00 14 0d
91 add x0
, x0
, #837
94 ; DISASM
: 38: 00 14 4d
39 ldrb w0
, [x0
, #837]
95 ; DISASM
: 3c
: 00 a4
41 f9 ldr x0
, [x0
, #840]
96 ; DISASM
: 40: 00 00 00 91 add x0
, x0
, #0
97 ; DISASM
: 44: 00 00 40 91 add x0
, x0
, #0, lsl #12
98 ; DISASM
: 48: 00 00 40 f9 ldr x0
, [x0
]
99 ; DISASM
: 4c
: 20 1a 09 30 adr x0
, #74565