1 ; RUN: llvm-mc -n -triple arm64-apple-darwin10 %s -filetype=obj -o - | llvm-readobj -r --expand-relocs | FileCheck %s 2 3 .text 4 _fred: 5 bl _func 6 bl _func + 20 7 8 adrp x3, _data@page 9 ldr w2, [x3, _data@pageoff] 10 11 add x3, x3, _data@pageoff + 4 12 13 adrp x3, _data@page+1 14 ldr w2, [x3, _data@pageoff + 4] 15 16 adrp x3, _data_ext@gotpage 17 ldr w2, [x3, _data_ext@gotpageoff] 18 adrp x0, L_.str@PAGE 19 20 .data 21 _data: 22 .quad _foo 23 .quad _foo + 4 24 .quad _foo - _bar 25 .quad _foo - _bar + 4 26 27 .long _foo - _bar 28 29 .quad _foo@got 30 .long _foo@got - . 31 32 .section __TEXT,__cstring,cstring_literals 33 L_.str: 34 .asciz "foo" 35 36 37 ; CHECK: Relocations [ 38 ; CHECK-NEXT: Section __text { 39 ; CHECK-NEXT: Relocation { 40 ; CHECK-NEXT: Offset: 0x24 41 ; CHECK-NEXT: PCRel: 1 42 ; CHECK-NEXT: Length: 2 43 ; CHECK-NEXT: Type: ARM64_RELOC_PAGE21 (3) 44 ; CHECK-NEXT: Symbol: L_.str 45 ; CHECK-NEXT: } 46 ; CHECK-NEXT: Relocation { 47 ; CHECK-NEXT: Offset: 0x20 48 ; CHECK-NEXT: PCRel: 0 49 ; CHECK-NEXT: Length: 2 50 ; CHECK-NEXT: Type: ARM64_RELOC_GOT_LOAD_PAGEOFF12 (6) 51 ; CHECK-NEXT: Symbol: _data_ext 52 ; CHECK-NEXT: } 53 ; CHECK-NEXT: Relocation { 54 ; CHECK-NEXT: Offset: 0x1C 55 ; CHECK-NEXT: PCRel: 1 56 ; CHECK-NEXT: Length: 2 57 ; CHECK-NEXT: Type: ARM64_RELOC_GOT_LOAD_PAGE21 (5) 58 ; CHECK-NEXT: Symbol: _data_ext 59 ; CHECK-NEXT: } 60 ; CHECK-NEXT: Relocation { 61 ; CHECK-NEXT: Offset: 0x18 62 ; CHECK-NEXT: PCRel: 0 63 ; CHECK-NEXT: Length: 2 64 ; CHECK-NEXT: Type: ARM64_RELOC_ADDEND (10) 65 ; CHECK-NEXT: Section: - (4) 66 ; CHECK-NEXT: } 67 ; CHECK-NEXT: Relocation { 68 ; CHECK-NEXT: Offset: 0x18 69 ; CHECK-NEXT: PCRel: 0 70 ; CHECK-NEXT: Length: 2 71 ; CHECK-NEXT: Type: ARM64_RELOC_PAGEOFF12 (4) 72 ; CHECK-NEXT: Symbol: _data 73 ; CHECK-NEXT: } 74 ; CHECK-NEXT: Relocation { 75 ; CHECK-NEXT: Offset: 0x14 76 ; CHECK-NEXT: PCRel: 0 77 ; CHECK-NEXT: Length: 2 78 ; CHECK-NEXT: Type: ARM64_RELOC_ADDEND (10) 79 ; CHECK-NEXT: Section: __text 80 ; CHECK-NEXT: } 81 ; CHECK-NEXT: Relocation { 82 ; CHECK-NEXT: Offset: 0x14 83 ; CHECK-NEXT: PCRel: 1 84 ; CHECK-NEXT: Length: 2 85 ; CHECK-NEXT: Type: ARM64_RELOC_PAGE21 (3) 86 ; CHECK-NEXT: Symbol: _data 87 ; CHECK-NEXT: } 88 ; CHECK-NEXT: Relocation { 89 ; CHECK-NEXT: Offset: 0x10 90 ; CHECK-NEXT: PCRel: 0 91 ; CHECK-NEXT: Length: 2 92 ; CHECK-NEXT: Type: ARM64_RELOC_ADDEND (10) 93 ; CHECK-NEXT: Section: - (4) 94 ; CHECK-NEXT: } 95 ; CHECK-NEXT: Relocation { 96 ; CHECK-NEXT: Offset: 0x10 97 ; CHECK-NEXT: PCRel: 0 98 ; CHECK-NEXT: Length: 2 99 ; CHECK-NEXT: Type: ARM64_RELOC_PAGEOFF12 (4) 100 ; CHECK-NEXT: Symbol: _data 101 ; CHECK-NEXT: } 102 ; CHECK-NEXT: Relocation { 103 ; CHECK-NEXT: Offset: 0xC 104 ; CHECK-NEXT: PCRel: 0 105 ; CHECK-NEXT: Length: 2 106 ; CHECK-NEXT: Type: ARM64_RELOC_PAGEOFF12 (4) 107 ; CHECK-NEXT: Symbol: _data 108 ; CHECK-NEXT: } 109 ; CHECK-NEXT: Relocation { 110 ; CHECK-NEXT: Offset: 0x8 111 ; CHECK-NEXT: PCRel: 1 112 ; CHECK-NEXT: Length: 2 113 ; CHECK-NEXT: Type: ARM64_RELOC_PAGE21 (3) 114 ; CHECK-NEXT: Symbol: _data 115 ; CHECK-NEXT: } 116 ; CHECK-NEXT: Relocation { 117 ; CHECK-NEXT: Offset: 0x4 118 ; CHECK-NEXT: PCRel: 0 119 ; CHECK-NEXT: Length: 2 120 ; CHECK-NEXT: Type: ARM64_RELOC_ADDEND (10) 121 ; CHECK-NEXT: Section: - (20) 122 ; CHECK-NEXT: } 123 ; CHECK-NEXT: Relocation { 124 ; CHECK-NEXT: Offset: 0x4 125 ; CHECK-NEXT: PCRel: 1 126 ; CHECK-NEXT: Length: 2 127 ; CHECK-NEXT: Type: ARM64_RELOC_BRANCH26 (2) 128 ; CHECK-NEXT: Symbol: _func 129 ; CHECK-NEXT: } 130 ; CHECK-NEXT: Relocation { 131 ; CHECK-NEXT: Offset: 0x0 132 ; CHECK-NEXT: PCRel: 1 133 ; CHECK-NEXT: Length: 2 134 ; CHECK-NEXT: Type: ARM64_RELOC_BRANCH26 (2) 135 ; CHECK-NEXT: Symbol: _func 136 ; CHECK-NEXT: } 137 ; CHECK-NEXT: } 138 ; CHECK-NEXT: Section __data { 139 ; CHECK-NEXT: Relocation { 140 ; CHECK-NEXT: Offset: 0x2C 141 ; CHECK-NEXT: PCRel: 1 142 ; CHECK-NEXT: Length: 2 143 ; CHECK-NEXT: Type: ARM64_RELOC_POINTER_TO_GOT (7) 144 ; CHECK-NEXT: Symbol: _foo 145 ; CHECK-NEXT: } 146 ; CHECK-NEXT: Relocation { 147 ; CHECK-NEXT: Offset: 0x24 148 ; CHECK-NEXT: PCRel: 0 149 ; CHECK-NEXT: Length: 3 150 ; CHECK-NEXT: Type: ARM64_RELOC_POINTER_TO_GOT (7) 151 ; CHECK-NEXT: Symbol: _foo 152 ; CHECK-NEXT: } 153 ; CHECK-NEXT: Relocation { 154 ; CHECK-NEXT: Offset: 0x20 155 ; CHECK-NEXT: PCRel: 0 156 ; CHECK-NEXT: Length: 2 157 ; CHECK-NEXT: Type: ARM64_RELOC_SUBTRACTOR (1) 158 ; CHECK-NEXT: Symbol: _bar 159 ; CHECK-NEXT: } 160 ; CHECK-NEXT: Relocation { 161 ; CHECK-NEXT: Offset: 0x20 162 ; CHECK-NEXT: PCRel: 0 163 ; CHECK-NEXT: Length: 2 164 ; CHECK-NEXT: Type: ARM64_RELOC_UNSIGNED (0) 165 ; CHECK-NEXT: Symbol: _foo 166 ; CHECK-NEXT: } 167 ; CHECK-NEXT: Relocation { 168 ; CHECK-NEXT: Offset: 0x18 169 ; CHECK-NEXT: PCRel: 0 170 ; CHECK-NEXT: Length: 3 171 ; CHECK-NEXT: Type: ARM64_RELOC_SUBTRACTOR (1) 172 ; CHECK-NEXT: Symbol: _bar 173 ; CHECK-NEXT: } 174 ; CHECK-NEXT: Relocation { 175 ; CHECK-NEXT: Offset: 0x18 176 ; CHECK-NEXT: PCRel: 0 177 ; CHECK-NEXT: Length: 3 178 ; CHECK-NEXT: Type: ARM64_RELOC_UNSIGNED (0) 179 ; CHECK-NEXT: Symbol: _foo 180 ; CHECK-NEXT: } 181 ; CHECK-NEXT: Relocation { 182 ; CHECK-NEXT: Offset: 0x10 183 ; CHECK-NEXT: PCRel: 0 184 ; CHECK-NEXT: Length: 3 185 ; CHECK-NEXT: Type: ARM64_RELOC_SUBTRACTOR (1) 186 ; CHECK-NEXT: Symbol: _bar 187 ; CHECK-NEXT: } 188 ; CHECK-NEXT: Relocation { 189 ; CHECK-NEXT: Offset: 0x10 190 ; CHECK-NEXT: PCRel: 0 191 ; CHECK-NEXT: Length: 3 192 ; CHECK-NEXT: Type: ARM64_RELOC_UNSIGNED (0) 193 ; CHECK-NEXT: Symbol: _foo 194 ; CHECK-NEXT: } 195 ; CHECK-NEXT: Relocation { 196 ; CHECK-NEXT: Offset: 0x8 197 ; CHECK-NEXT: PCRel: 0 198 ; CHECK-NEXT: Length: 3 199 ; CHECK-NEXT: Type: ARM64_RELOC_UNSIGNED (0) 200 ; CHECK-NEXT: Symbol: _foo 201 ; CHECK-NEXT: } 202 ; CHECK-NEXT: Relocation { 203 ; CHECK-NEXT: Offset: 0x0 204 ; CHECK-NEXT: PCRel: 0 205 ; CHECK-NEXT: Length: 3 206 ; CHECK-NEXT: Type: ARM64_RELOC_UNSIGNED (0) 207 ; CHECK-NEXT: Symbol: _foo 208 ; CHECK-NEXT: } 209 ; CHECK-NEXT: } 210 ; CHECK-NEXT: ] 211