1 // RUN: llvm-mc -arch=aarch64 -show-encoding < %s | FileCheck %s 2 // RUN: llvm-mc -arch=aarch64 -filetype=obj < %s -o %t 3 // RUN: elf-dump %t | FileCheck --check-prefix=CHECK-ELF %s 4 // RUN: llvm-objdump -r %t | FileCheck --check-prefix=CHECK-ELF-NAMES %s 5 6 // CHECK-ELF: .rela.text 7 8 // TLS local-dynamic forms 9 movz x1, #:dtprel_g2:var 10 movn x2, #:dtprel_g2:var 11 movz x3, #:dtprel_g2:var 12 movn x4, #:dtprel_g2:var 13 // CHECK: movz x1, #:dtprel_g2:var // encoding: [0x01'A',A,0xc0'A',0x92'A'] 14 // CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_g2:var, kind: fixup_a64_movw_dtprel_g2 15 // CHECK-NEXT: movn x2, #:dtprel_g2:var // encoding: [0x02'A',A,0xc0'A',0x92'A'] 16 // CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_g2:var, kind: fixup_a64_movw_dtprel_g2 17 // CHECK-NEXT: movz x3, #:dtprel_g2:var // encoding: [0x03'A',A,0xc0'A',0x92'A'] 18 // CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_g2:var, kind: fixup_a64_movw_dtprel_g2 19 // CHECK-NEXT: movn x4, #:dtprel_g2:var // encoding: [0x04'A',A,0xc0'A',0x92'A'] 20 // CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_g2:var, kind: fixup_a64_movw_dtprel_g2 21 22 // CHECK-ELF: # Relocation 0 23 // CHECK-ELF-NEXT: (('r_offset', 0x0000000000000000) 24 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM:0x[0-9a-f]+]]) 25 // CHECK-ELF-NEXT: ('r_type', 0x0000020b) 26 // CHECK-ELF: # Relocation 1 27 // CHECK-ELF-NEXT: (('r_offset', 0x0000000000000004) 28 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 29 // CHECK-ELF-NEXT: ('r_type', 0x0000020b) 30 // CHECK-ELF: # Relocation 2 31 // CHECK-ELF-NEXT: (('r_offset', 0x0000000000000008) 32 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 33 // CHECK-ELF-NEXT: ('r_type', 0x0000020b) 34 // CHECK-ELF: # Relocation 3 35 // CHECK-ELF-NEXT: (('r_offset', 0x000000000000000c) 36 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 37 // CHECK-ELF-NEXT: ('r_type', 0x0000020b) 38 39 // CHECK-ELF-NAMES: 0 R_AARCH64_TLSLD_MOVW_DTPREL_G2 40 // CHECK-ELF-NAMES: 4 R_AARCH64_TLSLD_MOVW_DTPREL_G2 41 // CHECK-ELF-NAMES: 8 R_AARCH64_TLSLD_MOVW_DTPREL_G2 42 // CHECK-ELF-NAMES: 12 R_AARCH64_TLSLD_MOVW_DTPREL_G2 43 44 movz x5, #:dtprel_g1:var 45 movn x6, #:dtprel_g1:var 46 movz w7, #:dtprel_g1:var 47 movn w8, #:dtprel_g1:var 48 // CHECK: movz x5, #:dtprel_g1:var // encoding: [0x05'A',A,0xa0'A',0x92'A'] 49 // CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_g1:var, kind: fixup_a64_movw_dtprel_g1 50 // CHECK-NEXT: movn x6, #:dtprel_g1:var // encoding: [0x06'A',A,0xa0'A',0x92'A'] 51 // CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_g1:var, kind: fixup_a64_movw_dtprel_g1 52 // CHECK-NEXT: movz w7, #:dtprel_g1:var // encoding: [0x07'A',A,0xa0'A',0x12'A'] 53 // CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_g1:var, kind: fixup_a64_movw_dtprel_g1 54 // CHECK-NEXT: movn w8, #:dtprel_g1:var // encoding: [0x08'A',A,0xa0'A',0x12'A'] 55 // CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_g1:var, kind: fixup_a64_movw_dtprel_g1 56 57 // CHECK-ELF: # Relocation 4 58 // CHECK-ELF-NEXT: (('r_offset', 0x0000000000000010) 59 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 60 // CHECK-ELF-NEXT: ('r_type', 0x0000020c) 61 // CHECK-ELF: # Relocation 5 62 // CHECK-ELF-NEXT: (('r_offset', 0x0000000000000014) 63 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 64 // CHECK-ELF-NEXT: ('r_type', 0x0000020c) 65 // CHECK-ELF: # Relocation 6 66 // CHECK-ELF-NEXT: (('r_offset', 0x0000000000000018) 67 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 68 // CHECK-ELF-NEXT: ('r_type', 0x0000020c) 69 // CHECK-ELF: # Relocation 7 70 // CHECK-ELF-NEXT: (('r_offset', 0x000000000000001c) 71 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 72 // CHECK-ELF-NEXT: ('r_type', 0x0000020c) 73 74 // CHECK-ELF-NAMES: 16 R_AARCH64_TLSLD_MOVW_DTPREL_G1 75 // CHECK-ELF-NAMES: 20 R_AARCH64_TLSLD_MOVW_DTPREL_G1 76 // CHECK-ELF-NAMES: 24 R_AARCH64_TLSLD_MOVW_DTPREL_G1 77 // CHECK-ELF-NAMES: 28 R_AARCH64_TLSLD_MOVW_DTPREL_G1 78 79 movk x9, #:dtprel_g1_nc:var 80 movk w10, #:dtprel_g1_nc:var 81 // CHECK: movk x9, #:dtprel_g1_nc:var // encoding: [0x09'A',A,0xa0'A',0xf2'A'] 82 // CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_g1_nc:var, kind: fixup_a64_movw_dtprel_g1_nc 83 // CHECK-NEXT: movk w10, #:dtprel_g1_nc:var // encoding: [0x0a'A',A,0xa0'A',0x72'A'] 84 // CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_g1_nc:var, kind: fixup_a64_movw_dtprel_g1_nc 85 86 // CHECK-ELF: # Relocation 8 87 // CHECK-ELF-NEXT: (('r_offset', 0x0000000000000020) 88 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 89 // CHECK-ELF-NEXT: ('r_type', 0x0000020d) 90 // CHECK-ELF: # Relocation 9 91 // CHECK-ELF-NEXT: (('r_offset', 0x0000000000000024) 92 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 93 // CHECK-ELF-NEXT: ('r_type', 0x0000020d) 94 95 // CHECK-ELF-NAMES: 32 R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC 96 // CHECK-ELF-NAMES: 36 R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC 97 98 movz x11, #:dtprel_g0:var 99 movn x12, #:dtprel_g0:var 100 movz w13, #:dtprel_g0:var 101 movn w14, #:dtprel_g0:var 102 // CHECK: movz x11, #:dtprel_g0:var // encoding: [0x0b'A',A,0x80'A',0x92'A'] 103 // CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_g0:var, kind: fixup_a64_movw_dtprel_g0 104 // CHECK-NEXT: movn x12, #:dtprel_g0:var // encoding: [0x0c'A',A,0x80'A',0x92'A'] 105 // CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_g0:var, kind: fixup_a64_movw_dtprel_g0 106 // CHECK-NEXT: movz w13, #:dtprel_g0:var // encoding: [0x0d'A',A,0x80'A',0x12'A'] 107 // CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_g0:var, kind: fixup_a64_movw_dtprel_g0 108 // CHECK-NEXT: movn w14, #:dtprel_g0:var // encoding: [0x0e'A',A,0x80'A',0x12'A'] 109 110 111 // CHECK-ELF: # Relocation 10 112 // CHECK-ELF-NEXT: (('r_offset', 0x0000000000000028) 113 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 114 // CHECK-ELF-NEXT: ('r_type', 0x0000020e) 115 // CHECK-ELF: # Relocation 11 116 // CHECK-ELF-NEXT: (('r_offset', 0x000000000000002c) 117 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 118 // CHECK-ELF-NEXT: ('r_type', 0x0000020e) 119 // CHECK-ELF: # Relocation 12 120 // CHECK-ELF-NEXT: (('r_offset', 0x0000000000000030) 121 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 122 // CHECK-ELF-NEXT: ('r_type', 0x0000020e) 123 // CHECK-ELF: # Relocation 13 124 // CHECK-ELF-NEXT: (('r_offset', 0x0000000000000034) 125 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 126 // CHECK-ELF-NEXT: ('r_type', 0x0000020e) 127 128 // CHECK-ELF-NAMES: 40 R_AARCH64_TLSLD_MOVW_DTPREL_G0 129 // CHECK-ELF-NAMES: 44 R_AARCH64_TLSLD_MOVW_DTPREL_G0 130 // CHECK-ELF-NAMES: 48 R_AARCH64_TLSLD_MOVW_DTPREL_G0 131 // CHECK-ELF-NAMES: 52 R_AARCH64_TLSLD_MOVW_DTPREL_G0 132 133 134 movk x15, #:dtprel_g0_nc:var 135 movk w16, #:dtprel_g0_nc:var 136 // CHECK: movk x15, #:dtprel_g0_nc:var // encoding: [0x0f'A',A,0x80'A',0xf2'A'] 137 // CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_g0_nc:var, kind: fixup_a64_movw_dtprel_g0_nc 138 // CHECK-NEXT: movk w16, #:dtprel_g0_nc:var // encoding: [0x10'A',A,0x80'A',0x72'A'] 139 // CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_g0_nc:var, kind: fixup_a64_movw_dtprel_g0_nc 140 141 // CHECK-ELF: # Relocation 14 142 // CHECK-ELF-NEXT: (('r_offset', 0x0000000000000038) 143 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 144 // CHECK-ELF-NEXT: ('r_type', 0x0000020f) 145 // CHECK-ELF: # Relocation 15 146 // CHECK-ELF-NEXT: (('r_offset', 0x000000000000003c) 147 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 148 // CHECK-ELF-NEXT: ('r_type', 0x0000020f) 149 150 // CHECK-ELF-NAMES: 56 R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC 151 // CHECK-ELF-NAMES: 60 R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC 152 153 add x17, x18, #:dtprel_hi12:var, lsl #12 154 add w19, w20, #:dtprel_hi12:var, lsl #12 155 // CHECK: add x17, x18, #:dtprel_hi12:var, lsl #12 // encoding: [0x51'A',0x02'A',0x40'A',0x91'A'] 156 // CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_hi12:var, kind: fixup_a64_add_dtprel_hi12 157 // CHECK-NEXT: add w19, w20, #:dtprel_hi12:var, lsl #12 // encoding: [0x93'A',0x02'A',0x40'A',0x11'A'] 158 // CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_hi12:var, kind: fixup_a64_add_dtprel_hi12 159 160 // CHECK-ELF: # Relocation 16 161 // CHECK-ELF-NEXT: (('r_offset', 0x0000000000000040) 162 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 163 // CHECK-ELF-NEXT: ('r_type', 0x00000210) 164 // CHECK-ELF: # Relocation 17 165 // CHECK-ELF-NEXT: (('r_offset', 0x0000000000000044) 166 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 167 // CHECK-ELF-NEXT: ('r_type', 0x00000210) 168 169 // CHECK-ELF-NAMES: 64 R_AARCH64_TLSLD_ADD_DTPREL_HI12 170 // CHECK-ELF-NAMES: 68 R_AARCH64_TLSLD_ADD_DTPREL_HI12 171 172 173 add x21, x22, #:dtprel_lo12:var 174 add w23, w24, #:dtprel_lo12:var 175 // CHECK: add x21, x22, #:dtprel_lo12:var // encoding: [0xd5'A',0x02'A',A,0x91'A'] 176 // CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_lo12:var, kind: fixup_a64_add_dtprel_lo12 177 // CHECK-NEXT: add w23, w24, #:dtprel_lo12:var // encoding: [0x17'A',0x03'A',A,0x11'A'] 178 // CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_lo12:var, kind: fixup_a64_add_dtprel_lo12 179 180 // CHECK-ELF: # Relocation 18 181 // CHECK-ELF-NEXT: (('r_offset', 0x0000000000000048) 182 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 183 // CHECK-ELF-NEXT: ('r_type', 0x00000211) 184 // CHECK-ELF: # Relocation 19 185 // CHECK-ELF-NEXT: (('r_offset', 0x000000000000004c) 186 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 187 // CHECK-ELF-NEXT: ('r_type', 0x00000211) 188 189 // CHECK-ELF-NAMES: 72 R_AARCH64_TLSLD_ADD_DTPREL_LO12 190 // CHECK-ELF-NAMES: 76 R_AARCH64_TLSLD_ADD_DTPREL_LO12 191 192 add x25, x26, #:dtprel_lo12_nc:var 193 add w27, w28, #:dtprel_lo12_nc:var 194 // CHECK: add x25, x26, #:dtprel_lo12_nc:var // encoding: [0x59'A',0x03'A',A,0x91'A'] 195 // CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_lo12_nc:var, kind: fixup_a64_add_dtprel_lo12_nc 196 // CHECK-NEXT: add w27, w28, #:dtprel_lo12_nc:var // encoding: [0x9b'A',0x03'A',A,0x11'A'] 197 // CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_lo12_nc:var, kind: fixup_a64_add_dtprel_lo12_nc 198 199 // CHECK-ELF: # Relocation 20 200 // CHECK-ELF-NEXT: (('r_offset', 0x0000000000000050) 201 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 202 // CHECK-ELF-NEXT: ('r_type', 0x00000212) 203 // CHECK-ELF: # Relocation 21 204 // CHECK-ELF-NEXT: (('r_offset', 0x0000000000000054) 205 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 206 // CHECK-ELF-NEXT: ('r_type', 0x00000212) 207 208 // CHECK-ELF-NAMES: 80 R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC 209 // CHECK-ELF-NAMES: 84 R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC 210 211 ldrb w29, [x30, #:dtprel_lo12:var] 212 ldrsb x29, [x28, #:dtprel_lo12_nc:var] 213 // CHECK: ldrb w29, [x30, #:dtprel_lo12:var] // encoding: [0xdd'A',0x03'A',0x40'A',0x39'A'] 214 // CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_lo12:var, kind: fixup_a64_ldst8_dtprel_lo12 215 // CHECK-NEXT: ldrsb x29, [x28, #:dtprel_lo12_nc:var] // encoding: [0x9d'A',0x03'A',0x80'A',0x39'A'] 216 // CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_lo12_nc:var, kind: fixup_a64_ldst8_dtprel_lo12_nc 217 218 // CHECK-ELF: # Relocation 22 219 // CHECK-ELF-NEXT: (('r_offset', 0x0000000000000058) 220 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 221 // CHECK-ELF-NEXT: ('r_type', 0x00000213) 222 // CHECK-ELF: # Relocation 23 223 // CHECK-ELF-NEXT: (('r_offset', 0x000000000000005c) 224 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 225 // CHECK-ELF-NEXT: ('r_type', 0x00000214) 226 227 // CHECK-ELF-NAMES: 88 R_AARCH64_TLSLD_LDST8_DTPREL_LO12 228 // CHECK-ELF-NAMES: 92 R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC 229 230 strh w27, [x26, #:dtprel_lo12:var] 231 ldrsh x25, [x24, #:dtprel_lo12_nc:var] 232 // CHECK: strh w27, [x26, #:dtprel_lo12:var] // encoding: [0x5b'A',0x03'A',A,0x79'A'] 233 // CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_lo12:var, kind: fixup_a64_ldst16_dtprel_lo12 234 // CHECK-NEXT: ldrsh x25, [x24, #:dtprel_lo12_nc:var] // encoding: [0x19'A',0x03'A',0x80'A',0x79'A'] 235 // CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_lo12_nc:var, kind: fixup_a64_ldst16_dtprel_lo12_n 236 237 // CHECK-ELF: # Relocation 24 238 // CHECK-ELF-NEXT: (('r_offset', 0x0000000000000060) 239 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 240 // CHECK-ELF-NEXT: ('r_type', 0x00000215) 241 // CHECK-ELF: # Relocation 25 242 // CHECK-ELF-NEXT: (('r_offset', 0x0000000000000064) 243 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 244 // CHECK-ELF-NEXT: ('r_type', 0x00000216) 245 246 // CHECK-ELF-NAMES: 96 R_AARCH64_TLSLD_LDST16_DTPREL_LO12 247 // CHECK-ELF-NAMES: 100 R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC 248 249 ldr w23, [x22, #:dtprel_lo12:var] 250 ldrsw x21, [x20, #:dtprel_lo12_nc:var] 251 // CHECK: ldr w23, [x22, #:dtprel_lo12:var] // encoding: [0xd7'A',0x02'A',0x40'A',0xb9'A'] 252 // CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_lo12:var, kind: fixup_a64_ldst32_dtprel_lo12 253 // CHECK-NEXT: ldrsw x21, [x20, #:dtprel_lo12_nc:var] // encoding: [0x95'A',0x02'A',0x80'A',0xb9'A'] 254 // CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_lo12_nc:var, kind: fixup_a64_ldst32_dtprel_lo12_n 255 256 // CHECK-ELF: # Relocation 26 257 // CHECK-ELF-NEXT: (('r_offset', 0x0000000000000068) 258 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 259 // CHECK-ELF-NEXT: ('r_type', 0x00000217) 260 // CHECK-ELF: # Relocation 27 261 // CHECK-ELF-NEXT: (('r_offset', 0x000000000000006c) 262 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 263 // CHECK-ELF-NEXT: ('r_type', 0x00000218) 264 265 // CHECK-ELF-NAMES: 104 R_AARCH64_TLSLD_LDST32_DTPREL_LO12 266 // CHECK-ELF-NAMES: 108 R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC 267 268 ldr x19, [x18, #:dtprel_lo12:var] 269 str x17, [x16, #:dtprel_lo12_nc:var] 270 // CHECK: ldr x19, [x18, #:dtprel_lo12:var] // encoding: [0x53'A',0x02'A',0x40'A',0xf9'A'] 271 // CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_lo12:var, kind: fixup_a64_ldst64_dtprel_lo12 272 // CHECK-NEXT: str x17, [x16, #:dtprel_lo12_nc:var] // encoding: [0x11'A',0x02'A',A,0xf9'A'] 273 // CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_lo12_nc:var, kind: fixup_a64_ldst64_dtprel_lo12_nc 274 275 276 // CHECK-ELF: # Relocation 28 277 // CHECK-ELF-NEXT: (('r_offset', 0x0000000000000070) 278 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 279 // CHECK-ELF-NEXT: ('r_type', 0x00000219) 280 // CHECK-ELF: # Relocation 29 281 // CHECK-ELF-NEXT: (('r_offset', 0x0000000000000074) 282 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 283 // CHECK-ELF-NEXT: ('r_type', 0x0000021a) 284 285 // CHECK-ELF-NAMES: 112 R_AARCH64_TLSLD_LDST64_DTPREL_LO12 286 // CHECK-ELF-NAMES: 116 R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC 287 288 // TLS initial-exec forms 289 movz x15, #:gottprel_g1:var 290 movz w14, #:gottprel_g1:var 291 // CHECK: movz x15, #:gottprel_g1:var // encoding: [0x0f'A',A,0xa0'A',0x92'A'] 292 // CHECK-NEXT: // fixup A - offset: 0, value: :gottprel_g1:var, kind: fixup_a64_movw_gottprel_g1 293 // CHECK-NEXT: movz w14, #:gottprel_g1:var // encoding: [0x0e'A',A,0xa0'A',0x12'A'] 294 // CHECK-NEXT: // fixup A - offset: 0, value: :gottprel_g1:var, kind: fixup_a64_movw_gottprel_g1 295 296 // CHECK-ELF: # Relocation 30 297 // CHECK-ELF-NEXT: (('r_offset', 0x0000000000000078) 298 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 299 // CHECK-ELF-NEXT: ('r_type', 0x0000021b) 300 // CHECK-ELF: # Relocation 31 301 // CHECK-ELF-NEXT: (('r_offset', 0x000000000000007c) 302 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 303 // CHECK-ELF-NEXT: ('r_type', 0x0000021b) 304 305 // CHECK-ELF-NAMES: 120 R_AARCH64_TLSIE_MOVW_GOTTPREL_G1 306 // CHECK-ELF-NAMES: 124 R_AARCH64_TLSIE_MOVW_GOTTPREL_G1 307 308 movk x13, #:gottprel_g0_nc:var 309 movk w12, #:gottprel_g0_nc:var 310 // CHECK: movk x13, #:gottprel_g0_nc:var // encoding: [0x0d'A',A,0x80'A',0xf2'A'] 311 // CHECK-NEXT: // fixup A - offset: 0, value: :gottprel_g0_nc:var, kind: fixup_a64_movw_gottprel_g0_nc 312 // CHECK-NEXT: movk w12, #:gottprel_g0_nc:var // encoding: [0x0c'A',A,0x80'A',0x72'A'] 313 // CHECK-NEXT: // fixup A - offset: 0, value: :gottprel_g0_nc:var, kind: fixup_a64_movw_gottprel_g0_nc 314 315 // CHECK-ELF: # Relocation 32 316 // CHECK-ELF-NEXT: (('r_offset', 0x0000000000000080) 317 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 318 // CHECK-ELF-NEXT: ('r_type', 0x0000021c) 319 // CHECK-ELF: # Relocation 33 320 // CHECK-ELF-NEXT: (('r_offset', 0x0000000000000084) 321 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 322 // CHECK-ELF-NEXT: ('r_type', 0x0000021c) 323 324 // CHECK-ELF-NAMES: 128 R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC 325 // CHECK-ELF-NAMES: 132 R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC 326 327 adrp x11, :gottprel:var 328 ldr x10, [x0, #:gottprel_lo12:var] 329 ldr x9, :gottprel:var 330 // CHECK: adrp x11, :gottprel:var // encoding: [0x0b'A',A,A,0x90'A'] 331 // CHECK-NEXT: // fixup A - offset: 0, value: :gottprel:var, kind: fixup_a64_adr_gottprel_page 332 // CHECK-NEXT: ldr x10, [x0, #:gottprel_lo12:var] // encoding: [0x0a'A',A,0x40'A',0xf9'A'] 333 // CHECK-NEXT: // fixup A - offset: 0, value: :gottprel_lo12:var, kind: fixup_a64_ld64_gottprel_lo12_nc 334 // CHECK-NEXT: ldr x9, :gottprel:var // encoding: [0x09'A',A,A,0x58'A'] 335 // CHECK-NEXT: // fixup A - offset: 0, value: :gottprel:var, kind: fixup_a64_ld_gottprel_prel19 336 337 // CHECK-ELF: # Relocation 34 338 // CHECK-ELF-NEXT: (('r_offset', 0x0000000000000088) 339 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 340 // CHECK-ELF-NEXT: ('r_type', 0x0000021d) 341 // CHECK-ELF: # Relocation 35 342 // CHECK-ELF-NEXT: (('r_offset', 0x000000000000008c) 343 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 344 // CHECK-ELF-NEXT: ('r_type', 0x0000021e) 345 // CHECK-ELF: # Relocation 36 346 // CHECK-ELF-NEXT: (('r_offset', 0x0000000000000090) 347 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 348 // CHECK-ELF-NEXT: ('r_type', 0x0000021f) 349 350 // CHECK-ELF-NAMES: 136 R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE 351 // CHECK-ELF-NAMES: 140 R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC 352 // CHECK-ELF-NAMES: 144 R_AARCH64_TLSIE_LD_GOTTPREL_PREL19 353 354 // TLS local-exec forms 355 movz x3, #:tprel_g2:var 356 movn x4, #:tprel_g2:var 357 // CHECK: movz x3, #:tprel_g2:var // encoding: [0x03'A',A,0xc0'A',0x92'A'] 358 // CHECK-NEXT: // fixup A - offset: 0, value: :tprel_g2:var, kind: fixup_a64_movw_tprel_g2 359 // CHECK-NEXT: movn x4, #:tprel_g2:var // encoding: [0x04'A',A,0xc0'A',0x92'A'] 360 // CHECK-NEXT: // fixup A - offset: 0, value: :tprel_g2:var, kind: fixup_a64_movw_tprel_g2 361 362 // CHECK-ELF: # Relocation 37 363 // CHECK-ELF-NEXT: (('r_offset', 0x0000000000000094) 364 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 365 // CHECK-ELF-NEXT: ('r_type', 0x00000220) 366 // CHECK-ELF: # Relocation 38 367 // CHECK-ELF-NEXT: (('r_offset', 0x0000000000000098) 368 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 369 // CHECK-ELF-NEXT: ('r_type', 0x00000220) 370 371 // CHECK-ELF-NAMES: 148 R_AARCH64_TLSLE_MOVW_TPREL_G2 372 // CHECK-ELF-NAMES: 152 R_AARCH64_TLSLE_MOVW_TPREL_G2 373 374 movz x5, #:tprel_g1:var 375 movn x6, #:tprel_g1:var 376 movz w7, #:tprel_g1:var 377 movn w8, #:tprel_g1:var 378 // CHECK: movz x5, #:tprel_g1:var // encoding: [0x05'A',A,0xa0'A',0x92'A'] 379 // CHECK-NEXT: // fixup A - offset: 0, value: :tprel_g1:var, kind: fixup_a64_movw_tprel_g1 380 // CHECK-NEXT: movn x6, #:tprel_g1:var // encoding: [0x06'A',A,0xa0'A',0x92'A'] 381 // CHECK-NEXT: // fixup A - offset: 0, value: :tprel_g1:var, kind: fixup_a64_movw_tprel_g1 382 // CHECK-NEXT: movz w7, #:tprel_g1:var // encoding: [0x07'A',A,0xa0'A',0x12'A'] 383 // CHECK-NEXT: // fixup A - offset: 0, value: :tprel_g1:var, kind: fixup_a64_movw_tprel_g1 384 // CHECK-NEXT: movn w8, #:tprel_g1:var // encoding: [0x08'A',A,0xa0'A',0x12'A'] 385 // CHECK-NEXT: // fixup A - offset: 0, value: :tprel_g1:var, kind: fixup_a64_movw_tprel_g1 386 387 // CHECK-ELF: # Relocation 39 388 // CHECK-ELF-NEXT: (('r_offset', 0x000000000000009c) 389 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 390 // CHECK-ELF-NEXT: ('r_type', 0x00000221) 391 // CHECK-ELF: # Relocation 40 392 // CHECK-ELF-NEXT: (('r_offset', 0x00000000000000a0) 393 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 394 // CHECK-ELF-NEXT: ('r_type', 0x00000221) 395 // CHECK-ELF: # Relocation 41 396 // CHECK-ELF-NEXT: (('r_offset', 0x00000000000000a4) 397 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 398 // CHECK-ELF-NEXT: ('r_type', 0x00000221) 399 // CHECK-ELF: # Relocation 42 400 // CHECK-ELF-NEXT: (('r_offset', 0x00000000000000a8) 401 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 402 // CHECK-ELF-NEXT: ('r_type', 0x00000221) 403 404 // CHECK-ELF-NAMES: 156 R_AARCH64_TLSLE_MOVW_TPREL_G1 405 // CHECK-ELF-NAMES: 160 R_AARCH64_TLSLE_MOVW_TPREL_G1 406 // CHECK-ELF-NAMES: 164 R_AARCH64_TLSLE_MOVW_TPREL_G1 407 // CHECK-ELF-NAMES: 168 R_AARCH64_TLSLE_MOVW_TPREL_G1 408 409 movk x9, #:tprel_g1_nc:var 410 movk w10, #:tprel_g1_nc:var 411 // CHECK: movk x9, #:tprel_g1_nc:var // encoding: [0x09'A',A,0xa0'A',0xf2'A'] 412 // CHECK-NEXT: // fixup A - offset: 0, value: :tprel_g1_nc:var, kind: fixup_a64_movw_tprel_g1_nc 413 // CHECK-NEXT: movk w10, #:tprel_g1_nc:var // encoding: [0x0a'A',A,0xa0'A',0x72'A'] 414 // CHECK-NEXT: // fixup A - offset: 0, value: :tprel_g1_nc:var, kind: fixup_a64_movw_tprel_g1_nc 415 416 // CHECK-ELF: # Relocation 43 417 // CHECK-ELF-NEXT: (('r_offset', 0x00000000000000ac) 418 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 419 // CHECK-ELF-NEXT: ('r_type', 0x00000222) 420 // CHECK-ELF: # Relocation 44 421 // CHECK-ELF-NEXT: (('r_offset', 0x00000000000000b0) 422 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 423 // CHECK-ELF-NEXT: ('r_type', 0x00000222) 424 425 // CHECK-ELF-NAMES: 172 R_AARCH64_TLSLE_MOVW_TPREL_G1_NC 426 // CHECK-ELF-NAMES: 176 R_AARCH64_TLSLE_MOVW_TPREL_G1_NC 427 428 movz x11, #:tprel_g0:var 429 movn x12, #:tprel_g0:var 430 movz w13, #:tprel_g0:var 431 movn w14, #:tprel_g0:var 432 // CHECK: movz x11, #:tprel_g0:var // encoding: [0x0b'A',A,0x80'A',0x92'A'] 433 // CHECK-NEXT: // fixup A - offset: 0, value: :tprel_g0:var, kind: fixup_a64_movw_tprel_g0 434 // CHECK-NEXT: movn x12, #:tprel_g0:var // encoding: [0x0c'A',A,0x80'A',0x92'A'] 435 // CHECK-NEXT: // fixup A - offset: 0, value: :tprel_g0:var, kind: fixup_a64_movw_tprel_g0 436 // CHECK-NEXT: movz w13, #:tprel_g0:var // encoding: [0x0d'A',A,0x80'A',0x12'A'] 437 // CHECK-NEXT: // fixup A - offset: 0, value: :tprel_g0:var, kind: fixup_a64_movw_tprel_g0 438 // CHECK-NEXT: movn w14, #:tprel_g0:var // encoding: [0x0e'A',A,0x80'A',0x12'A'] 439 // CHECK-NEXT: // fixup A - offset: 0, value: :tprel_g0:var, kind: fixup_a64_movw_tprel_g0 440 441 // CHECK-ELF: # Relocation 45 442 // CHECK-ELF-NEXT: (('r_offset', 0x00000000000000b4) 443 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 444 // CHECK-ELF-NEXT: ('r_type', 0x00000223) 445 // CHECK-ELF: # Relocation 46 446 // CHECK-ELF-NEXT: (('r_offset', 0x00000000000000b8) 447 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 448 // CHECK-ELF-NEXT: ('r_type', 0x00000223) 449 // CHECK-ELF: # Relocation 47 450 // CHECK-ELF-NEXT: (('r_offset', 0x00000000000000bc) 451 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 452 // CHECK-ELF-NEXT: ('r_type', 0x00000223) 453 // CHECK-ELF: # Relocation 48 454 // CHECK-ELF-NEXT: (('r_offset', 0x00000000000000c0) 455 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 456 // CHECK-ELF-NEXT: ('r_type', 0x00000223) 457 458 // CHECK-ELF-NAMES: 180 R_AARCH64_TLSLE_MOVW_TPREL_G0 459 // CHECK-ELF-NAMES: 184 R_AARCH64_TLSLE_MOVW_TPREL_G0 460 // CHECK-ELF-NAMES: 188 R_AARCH64_TLSLE_MOVW_TPREL_G0 461 // CHECK-ELF-NAMES: 192 R_AARCH64_TLSLE_MOVW_TPREL_G0 462 463 movk x15, #:tprel_g0_nc:var 464 movk w16, #:tprel_g0_nc:var 465 // CHECK: movk x15, #:tprel_g0_nc:var // encoding: [0x0f'A',A,0x80'A',0xf2'A'] 466 // CHECK-NEXT: // fixup A - offset: 0, value: :tprel_g0_nc:var, kind: fixup_a64_movw_tprel_g0_nc 467 // CHECK-NEXT: movk w16, #:tprel_g0_nc:var // encoding: [0x10'A',A,0x80'A',0x72'A'] 468 // CHECK-NEXT: // fixup A - offset: 0, value: :tprel_g0_nc:var, kind: fixup_a64_movw_tprel_g0_nc 469 470 // CHECK-ELF: # Relocation 49 471 // CHECK-ELF-NEXT: (('r_offset', 0x00000000000000c4) 472 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 473 // CHECK-ELF-NEXT: ('r_type', 0x00000224) 474 // CHECK-ELF: # Relocation 50 475 // CHECK-ELF-NEXT: (('r_offset', 0x00000000000000c8) 476 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 477 // CHECK-ELF-NEXT: ('r_type', 0x00000224) 478 479 // CHECK-ELF-NAMES: 196 R_AARCH64_TLSLE_MOVW_TPREL_G0_NC 480 // CHECK-ELF-NAMES: 200 R_AARCH64_TLSLE_MOVW_TPREL_G0_NC 481 482 add x17, x18, #:tprel_hi12:var, lsl #12 483 add w19, w20, #:tprel_hi12:var, lsl #12 484 // CHECK: add x17, x18, #:tprel_hi12:var, lsl #12 // encoding: [0x51'A',0x02'A',0x40'A',0x91'A'] 485 // CHECK-NEXT: // fixup A - offset: 0, value: :tprel_hi12:var, kind: fixup_a64_add_tprel_hi12 486 // CHECK-NEXT: add w19, w20, #:tprel_hi12:var, lsl #12 // encoding: [0x93'A',0x02'A',0x40'A',0x11'A'] 487 // CHECK-NEXT: // fixup A - offset: 0, value: :tprel_hi12:var, kind: fixup_a64_add_tprel_hi12 488 489 // CHECK-ELF: # Relocation 51 490 // CHECK-ELF-NEXT: (('r_offset', 0x00000000000000cc) 491 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 492 // CHECK-ELF-NEXT: ('r_type', 0x00000225) 493 // CHECK-ELF: # Relocation 52 494 // CHECK-ELF-NEXT: (('r_offset', 0x00000000000000d0) 495 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 496 // CHECK-ELF-NEXT: ('r_type', 0x00000225) 497 498 // CHECK-ELF-NAMES: 204 R_AARCH64_TLSLE_ADD_TPREL_HI12 499 // CHECK-ELF-NAMES: 208 R_AARCH64_TLSLE_ADD_TPREL_HI12 500 501 add x21, x22, #:tprel_lo12:var 502 add w23, w24, #:tprel_lo12:var 503 // CHECK: add x21, x22, #:tprel_lo12:var // encoding: [0xd5'A',0x02'A',A,0x91'A'] 504 // CHECK-NEXT: // fixup A - offset: 0, value: :tprel_lo12:var, kind: fixup_a64_add_tprel_lo12 505 // CHECK-NEXT: add w23, w24, #:tprel_lo12:var // encoding: [0x17'A',0x03'A',A,0x11'A'] 506 // CHECK-NEXT: // fixup A - offset: 0, value: :tprel_lo12:var, kind: fixup_a64_add_tprel_lo12 507 508 // CHECK-ELF: # Relocation 53 509 // CHECK-ELF-NEXT: (('r_offset', 0x00000000000000d4) 510 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 511 // CHECK-ELF-NEXT: ('r_type', 0x00000226) 512 // CHECK-ELF: # Relocation 54 513 // CHECK-ELF-NEXT: (('r_offset', 0x00000000000000d8) 514 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 515 // CHECK-ELF-NEXT: ('r_type', 0x00000226) 516 517 // CHECK-ELF-NAMES: 212 R_AARCH64_TLSLE_ADD_TPREL_LO12 518 // CHECK-ELF-NAMES: 216 R_AARCH64_TLSLE_ADD_TPREL_LO12 519 520 add x25, x26, #:tprel_lo12_nc:var 521 add w27, w28, #:tprel_lo12_nc:var 522 // CHECK: add x25, x26, #:tprel_lo12_nc:var // encoding: [0x59'A',0x03'A',A,0x91'A'] 523 // CHECK-NEXT: // fixup A - offset: 0, value: :tprel_lo12_nc:var, kind: fixup_a64_add_tprel_lo12_nc 524 // CHECK-NEXT: add w27, w28, #:tprel_lo12_nc:var // encoding: [0x9b'A',0x03'A',A,0x11'A'] 525 // CHECK-NEXT: // fixup A - offset: 0, value: :tprel_lo12_nc:var, kind: fixup_a64_add_tprel_lo12_nc 526 527 // CHECK-ELF: # Relocation 55 528 // CHECK-ELF-NEXT: (('r_offset', 0x00000000000000dc) 529 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 530 // CHECK-ELF-NEXT: ('r_type', 0x00000227) 531 // CHECK-ELF: # Relocation 56 532 // CHECK-ELF-NEXT: (('r_offset', 0x00000000000000e0) 533 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 534 // CHECK-ELF-NEXT: ('r_type', 0x00000227) 535 536 537 // CHECK-ELF-NAMES: 220 R_AARCH64_TLSLE_ADD_TPREL_LO12_NC 538 // CHECK-ELF-NAMES: 224 R_AARCH64_TLSLE_ADD_TPREL_LO12_NC 539 540 ldrb w29, [x30, #:tprel_lo12:var] 541 ldrsb x29, [x28, #:tprel_lo12_nc:var] 542 // CHECK: ldrb w29, [x30, #:tprel_lo12:var] // encoding: [0xdd'A',0x03'A',0x40'A',0x39'A'] 543 // CHECK-NEXT: // fixup A - offset: 0, value: :tprel_lo12:var, kind: fixup_a64_ldst8_tprel_lo12 544 // CHECK-NEXT: ldrsb x29, [x28, #:tprel_lo12_nc:var] // encoding: [0x9d'A',0x03'A',0x80'A',0x39'A'] 545 // CHECK-NEXT: // fixup A - offset: 0, value: :tprel_lo12_nc:var, kind: fixup_a64_ldst8_tprel_lo12_nc 546 547 // CHECK-ELF: # Relocation 57 548 // CHECK-ELF-NEXT: (('r_offset', 0x00000000000000e4) 549 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 550 // CHECK-ELF-NEXT: ('r_type', 0x00000228) 551 // CHECK-ELF: # Relocation 58 552 // CHECK-ELF-NEXT: (('r_offset', 0x00000000000000e8) 553 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 554 // CHECK-ELF-NEXT: ('r_type', 0x00000229) 555 556 // CHECK-ELF-NAMES: 228 R_AARCH64_TLSLE_LDST8_TPREL_LO12 557 // CHECK-ELF-NAMES: 232 R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC 558 559 strh w27, [x26, #:tprel_lo12:var] 560 ldrsh x25, [x24, #:tprel_lo12_nc:var] 561 // CHECK: strh w27, [x26, #:tprel_lo12:var] // encoding: [0x5b'A',0x03'A',A,0x79'A'] 562 // CHECK-NEXT: // fixup A - offset: 0, value: :tprel_lo12:var, kind: fixup_a64_ldst16_tprel_lo12 563 // CHECK-NEXT: ldrsh x25, [x24, #:tprel_lo12_nc:var] // encoding: [0x19'A',0x03'A',0x80'A',0x79'A'] 564 // CHECK-NEXT: // fixup A - offset: 0, value: :tprel_lo12_nc:var, kind: fixup_a64_ldst16_tprel_lo12_n 565 566 // CHECK-ELF: # Relocation 59 567 // CHECK-ELF-NEXT: (('r_offset', 0x00000000000000ec) 568 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 569 // CHECK-ELF-NEXT: ('r_type', 0x0000022a) 570 // CHECK-ELF: # Relocation 60 571 // CHECK-ELF-NEXT: (('r_offset', 0x00000000000000f0) 572 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 573 // CHECK-ELF-NEXT: ('r_type', 0x0000022b) 574 575 // CHECK-ELF-NAMES: 236 R_AARCH64_TLSLE_LDST16_TPREL_LO12 576 // CHECK-ELF-NAMES: 240 R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC 577 578 ldr w23, [x22, #:tprel_lo12:var] 579 ldrsw x21, [x20, #:tprel_lo12_nc:var] 580 // CHECK: ldr w23, [x22, #:tprel_lo12:var] // encoding: [0xd7'A',0x02'A',0x40'A',0xb9'A'] 581 // CHECK-NEXT: // fixup A - offset: 0, value: :tprel_lo12:var, kind: fixup_a64_ldst32_tprel_lo12 582 // CHECK-NEXT: ldrsw x21, [x20, #:tprel_lo12_nc:var] // encoding: [0x95'A',0x02'A',0x80'A',0xb9'A'] 583 // CHECK-NEXT: // fixup A - offset: 0, value: :tprel_lo12_nc:var, kind: fixup_a64_ldst32_tprel_lo12_n 584 585 // CHECK-ELF: # Relocation 61 586 // CHECK-ELF-NEXT: (('r_offset', 0x00000000000000f4) 587 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 588 // CHECK-ELF-NEXT: ('r_type', 0x0000022c) 589 // CHECK-ELF: # Relocation 62 590 // CHECK-ELF-NEXT: (('r_offset', 0x00000000000000f8) 591 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 592 // CHECK-ELF-NEXT: ('r_type', 0x0000022d) 593 594 // CHECK-ELF-NAMES: 244 R_AARCH64_TLSLE_LDST32_TPREL_LO12 595 // CHECK-ELF-NAMES: 248 R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC 596 597 ldr x19, [x18, #:tprel_lo12:var] 598 str x17, [x16, #:tprel_lo12_nc:var] 599 // CHECK: ldr x19, [x18, #:tprel_lo12:var] // encoding: [0x53'A',0x02'A',0x40'A',0xf9'A'] 600 // CHECK-NEXT: // fixup A - offset: 0, value: :tprel_lo12:var, kind: fixup_a64_ldst64_tprel_lo12 601 // CHECK-NEXT: str x17, [x16, #:tprel_lo12_nc:var] // encoding: [0x11'A',0x02'A',A,0xf9'A'] 602 // CHECK-NEXT: // fixup A - offset: 0, value: :tprel_lo12_nc:var, kind: fixup_a64_ldst64_tprel_lo12_nc 603 604 // CHECK-ELF: # Relocation 63 605 // CHECK-ELF-NEXT: (('r_offset', 0x00000000000000fc) 606 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 607 // CHECK-ELF-NEXT: ('r_type', 0x0000022e) 608 // CHECK-ELF: # Relocation 64 609 // CHECK-ELF-NEXT: (('r_offset', 0x0000000000000100) 610 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 611 // CHECK-ELF-NEXT: ('r_type', 0x0000022f) 612 613 // CHECK-ELF-NAMES: 252 R_AARCH64_TLSLE_LDST64_TPREL_LO12 614 // CHECK-ELF-NAMES: 256 R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC 615 616 // TLS descriptor forms 617 adrp x8, :tlsdesc:var 618 ldr x7, [x6, :tlsdesc_lo12:var] 619 add x5, x4, #:tlsdesc_lo12:var 620 .tlsdesccall var 621 blr x3 622 623 // CHECK: adrp x8, :tlsdesc:var // encoding: [0x08'A',A,A,0x90'A'] 624 // CHECK-NEXT: // fixup A - offset: 0, value: :tlsdesc:var, kind: fixup_a64_tlsdesc_adr_page 625 // CHECK-NEXT: ldr x7, [x6, #:tlsdesc_lo12:var] // encoding: [0xc7'A',A,0x40'A',0xf9'A'] 626 // CHECK-NEXT: // fixup A - offset: 0, value: :tlsdesc_lo12:var, kind: fixup_a64_tlsdesc_ld64_lo12_nc 627 // CHECK-NEXT: add x5, x4, #:tlsdesc_lo12:var // encoding: [0x85'A',A,A,0x91'A'] 628 // CHECK-NEXT: // fixup A - offset: 0, value: :tlsdesc_lo12:var, kind: fixup_a64_tlsdesc_add_lo12_nc 629 // CHECK-NEXT: .tlsdesccall var // encoding: [] 630 // CHECK-NEXT: // fixup A - offset: 0, value: :tlsdesc:var, kind: fixup_a64_tlsdesc_call 631 // CHECK: blr x3 // encoding: [0x60,0x00,0x3f,0xd6] 632 633 634 // CHECK-ELF: # Relocation 65 635 // CHECK-ELF-NEXT: (('r_offset', 0x0000000000000104) 636 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 637 // CHECK-ELF-NEXT: ('r_type', 0x00000232) 638 // CHECK-ELF: # Relocation 66 639 // CHECK-ELF-NEXT: (('r_offset', 0x0000000000000108) 640 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 641 // CHECK-ELF-NEXT: ('r_type', 0x00000233) 642 // CHECK-ELF: # Relocation 67 643 // CHECK-ELF-NEXT: (('r_offset', 0x000000000000010c) 644 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 645 // CHECK-ELF-NEXT: ('r_type', 0x00000234) 646 // CHECK-ELF: # Relocation 68 647 // CHECK-ELF-NEXT: (('r_offset', 0x0000000000000110) 648 // CHECK-ELF-NEXT: ('r_sym', [[VARSYM]]) 649 // CHECK-ELF-NEXT: ('r_type', 0x00000239) 650 651 // CHECK-ELF-NAMES: 260 R_AARCH64_TLSDESC_ADR_PAGE 652 // CHECK-ELF-NAMES: 264 R_AARCH64_TLSDESC_LD64_LO12_NC 653 // CHECK-ELF-NAMES: 268 R_AARCH64_TLSDESC_ADD_LO12_NC 654 // CHECK-ELF-NAMES: 272 R_AARCH64_TLSDESC_CALL 655 656 657 // Make sure symbol 5 has type STT_TLS: 658 659 // CHECK-ELF: # Symbol 5 660 // CHECK-ELF-NEXT: (('st_name', 0x00000006) # 'var' 661 // CHECK-ELF-NEXT: ('st_bind', 0x1) 662 // CHECK-ELF-NEXT: ('st_type', 0x6) 663