Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / PowerPC / aix-tls-xcoff-reloc.ll
blobc17b038a6960ccbef32f0f350f9fb1d7a819052b
1 ; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mattr=-altivec -mtriple powerpc-ibm-aix-xcoff \
2 ; RUN:     -xcoff-traceback-table=false -data-sections=false -filetype=obj -o %t.o < %s
3 ; RUN: llvm-readobj --relocs --expand-relocs %t.o | FileCheck -D#NFA=2 --check-prefix=RELOC %s
4 ; RUN: llvm-readobj --syms %t.o | FileCheck -D#NFA=2 --check-prefix=SYM %s
5 ; RUN: llvm-objdump -D -r --symbol-description %t.o | FileCheck -D#NFA=2 --check-prefix=DIS %s
7 @const_ivar = constant i32 6, align 4
8 @GInit = global i32 1, align 4
9 @TGInit = thread_local global i32 1, align 4
10 ; @TIUninit is local-dynamic indeed
11 @TIUninit = internal thread_local global i32 0, align 4
13 ; Function Attrs: nofree norecurse nounwind willreturn writeonly
14 define void @storesTIUninit(i32 %Val) #0 {
15 entry:
16   store i32 %Val, ptr @TIUninit, align 4
17   ret void
20 ; Function Attrs: norecurse nounwind readonly willreturn
21 define i32 @loadsTGInit() #1 {
22 entry:
23   %0 = load i32, ptr @TGInit, align 4
24   %1 = load i32, ptr @GInit, align 4
25   %add = add nsw i32 %1, %0
26   ret i32 %add
29 ; RELOC:      File:
30 ; RELOC-NEXT: Format: aixcoff-rs6000
31 ; RELOC-NEXT: Arch: powerpc
32 ; RELOC-NEXT: AddressSize: 32bit
33 ; RELOC-NEXT: Relocations [
34 ; RELOC-NEXT:   Section (index: 1) .text {
35 ; RELOC-NEXT:   Relocation {
36 ; RELOC-NEXT:     Virtual Address: 0xE
37 ; RELOC-NEXT:     Symbol: _$TLSML ([[#NFA+25]])
38 ; RELOC-NEXT:     IsSigned: No
39 ; RELOC-NEXT:     FixupBitValue: 0
40 ; RELOC-NEXT:     Length: 16
41 ; RELOC-NEXT:     Type: R_TOC (0x3)
42 ; RELOC-NEXT:   }
43 ; RELOC-NEXT:   Relocation {
44 ; RELOC-NEXT:     Virtual Address: 0x14
45 ; RELOC-NEXT:     Symbol: .__tls_get_mod ([[#NFA+1]])
46 ; RELOC-NEXT:     IsSigned: No
47 ; RELOC-NEXT:     FixupBitValue: 0
48 ; RELOC-NEXT:     Length: 26
49 ; RELOC-NEXT:     Type: R_RBA (0x18)
50 ; RELOC-NEXT:   }
51 ; RELOC-NEXT:   Relocation {
52 ; RELOC-NEXT:     Virtual Address: 0x1A
53 ; RELOC-NEXT:     Symbol: TIUninit ([[#NFA+27]])
54 ; RELOC-NEXT:     IsSigned: No
55 ; RELOC-NEXT:     FixupBitValue: 0
56 ; RELOC-NEXT:     Length: 16
57 ; RELOC-NEXT:     Type: R_TOC (0x3)
58 ; RELOC-NEXT:   }
59 ; RELOC-NEXT:   Relocation {
60 ; RELOC-NEXT:     Virtual Address: 0x3A
61 ; RELOC-NEXT:     Symbol: .TGInit ([[#NFA+29]])
62 ; RELOC-NEXT:     IsSigned: No
63 ; RELOC-NEXT:     FixupBitValue: 0
64 ; RELOC-NEXT:     Length: 16
65 ; RELOC-NEXT:     Type: R_TOC (0x3)
66 ; RELOC-NEXT:   }
67 ; RELOC-NEXT:   Relocation {
68 ; RELOC-NEXT:     Virtual Address: 0x3E
69 ; RELOC-NEXT:     Symbol: TGInit ([[#NFA+31]])
70 ; RELOC-NEXT:     IsSigned: No
71 ; RELOC-NEXT:     FixupBitValue: 0
72 ; RELOC-NEXT:     Length: 16
73 ; RELOC-NEXT:     Type: R_TOC (0x3)
74 ; RELOC-NEXT:   }
75 ; RELOC-NEXT:   Relocation {
76 ; RELOC-NEXT:     Virtual Address: 0x44
77 ; RELOC-NEXT:     Symbol: .__tls_get_addr ([[#NFA+3]])
78 ; RELOC-NEXT:     IsSigned: No
79 ; RELOC-NEXT:     FixupBitValue: 0
80 ; RELOC-NEXT:     Length: 26
81 ; RELOC-NEXT:     Type: R_RBA (0x18)
82 ; RELOC-NEXT:   }
83 ; RELOC-NEXT:   Relocation {
84 ; RELOC-NEXT:     Virtual Address: 0x4A
85 ; RELOC-NEXT:     Symbol: GInit ([[#NFA+33]])
86 ; RELOC-NEXT:     IsSigned: No
87 ; RELOC-NEXT:     FixupBitValue: 0
88 ; RELOC-NEXT:     Length: 16
89 ; RELOC-NEXT:     Type: R_TOC (0x3)
90 ; RELOC-NEXT:   }
91 ; RELOC-NEXT: }
92 ; RELOC-NEXT: Section (index: 2) .data {
93 ; RELOC-NEXT: Relocation {
94 ; RELOC-NEXT:   Virtual Address: 0x70
95 ; RELOC-NEXT:   Symbol: .storesTIUninit ([[#NFA+7]])
96 ; RELOC-NEXT:   IsSigned: No
97 ; RELOC-NEXT:   FixupBitValue: 0
98 ; RELOC-NEXT:   Length: 32
99 ; RELOC-NEXT:   Type: R_POS (0x0)
100 ; RELOC-NEXT: }
101 ; RELOC-NEXT: Relocation {
102 ; RELOC-NEXT:   Virtual Address: 0x74
103 ; RELOC-NEXT:   Symbol: TOC ([[#NFA+23]])
104 ; RELOC-NEXT:   IsSigned: No
105 ; RELOC-NEXT:   FixupBitValue: 0
106 ; RELOC-NEXT:   Length: 32
107 ; RELOC-NEXT:   Type: R_POS (0x0)
108 ; RELOC-NEXT: }
109 ; RELOC-NEXT: Relocation {
110 ; RELOC-NEXT:   Virtual Address: 0x7C
111 ; RELOC-NEXT:   Symbol: .loadsTGInit ([[#NFA+9]])
112 ; RELOC-NEXT:   IsSigned: No
113 ; RELOC-NEXT:   FixupBitValue: 0
114 ; RELOC-NEXT:   Length: 32
115 ; RELOC-NEXT:   Type: R_POS (0x0)
116 ; RELOC-NEXT: }
117 ; RELOC-NEXT: Relocation {
118 ; RELOC-NEXT:   Virtual Address: 0x80
119 ; RELOC-NEXT:   Symbol: TOC ([[#NFA+23]])
120 ; RELOC-NEXT:   IsSigned: No
121 ; RELOC-NEXT:   FixupBitValue: 0
122 ; RELOC-NEXT:   Length: 32
123 ; RELOC-NEXT:   Type: R_POS (0x0)
124 ; RELOC-NEXT: }
125 ; RELOC-NEXT: Relocation {
126 ; RELOC-NEXT:   Virtual Address: 0x88
127 ; RELOC-NEXT:   Symbol: _$TLSML ([[#NFA+25]])
128 ; RELOC-NEXT:   IsSigned: No
129 ; RELOC-NEXT:   FixupBitValue: 0
130 ; RELOC-NEXT:   Length: 32
131 ; RELOC-NEXT:   Type: R_TLSML (0x25)
132 ; RELOC-NEXT: }
133 ; RELOC-NEXT: Relocation {
134 ; RELOC-NEXT:   Virtual Address: 0x8C
135 ; RELOC-NEXT:   Symbol: TIUninit ([[#NFA+39]])
136 ; RELOC-NEXT:   IsSigned: No
137 ; RELOC-NEXT:   FixupBitValue: 0
138 ; RELOC-NEXT:   Length: 32
139 ; RELOC-NEXT:   Type: R_TLS_LD (0x22)
140 ; RELOC-NEXT: }
141 ; RELOC-NEXT: Relocation {
142 ; RELOC-NEXT:   Virtual Address: 0x90
143 ; RELOC-NEXT:   Symbol: TGInit ([[#NFA+37]])
144 ; RELOC-NEXT:   IsSigned: No
145 ; RELOC-NEXT:   FixupBitValue: 0
146 ; RELOC-NEXT:   Length: 32
147 ; RELOC-NEXT:   Type: R_TLSM (0x24)
148 ; RELOC-NEXT: }
149 ; RELOC-NEXT: Relocation {
150 ; RELOC-NEXT:   Virtual Address: 0x94
151 ; RELOC-NEXT:   Symbol: TGInit ([[#NFA+37]])
152 ; RELOC-NEXT:   IsSigned: No
153 ; RELOC-NEXT:   FixupBitValue: 0
154 ; RELOC-NEXT:   Length: 32
155 ; RELOC-NEXT:   Type: R_TLS (0x20)
156 ; RELOC-NEXT: }
157 ; RELOC-NEXT: Relocation {
158 ; RELOC-NEXT:   Virtual Address: 0x98
159 ; RELOC-NEXT:   Symbol: GInit ([[#NFA+17]])
160 ; RELOC-NEXT:   IsSigned: No
161 ; RELOC-NEXT:   FixupBitValue: 0
162 ; RELOC-NEXT:   Length: 32
163 ; RELOC-NEXT:   Type: R_POS (0x0)
164 ; RELOC-NEXT: }
165 ; RELOC-NEXT: }
166 ; RELOC-NEXT: ]
168 ; SYM:      File:
169 ; SYM-NEXT: Format: aixcoff-rs6000
170 ; SYM-NEXT: Arch: powerpc
171 ; SYM-NEXT: AddressSize: 32bit
172 ; SYM-NEXT: Symbols [
173 ; SYM-NEXT:   Symbol {
174 ; SYM-NEXT:     Index: 0
175 ; SYM-NEXT:     Name: .file
176 ; SYM-NEXT:     Value (SymbolTableIndex): 0x0
177 ; SYM-NEXT:     Section: N_DEBUG
178 ; SYM-NEXT:     Source Language ID: TB_CPLUSPLUS (0x9)
179 ; SYM-NEXT:     CPU Version ID: TCPU_COM (0x3)
180 ; SYM-NEXT:     StorageClass: C_FILE (0x67)
181 ; SYM-NEXT:     NumberOfAuxEntries: 2
182 ; SYM:        Symbol {
183 ; SYM-NEXT:     Index: [[#NFA+1]]
184 ; SYM-NEXT:     Name: .__tls_get_mod
185 ; SYM-NEXT:     Value (RelocatableAddress): 0x0
186 ; SYM-NEXT:     Section: N_UNDEF
187 ; SYM-NEXT:     Type: 0x0
188 ; SYM-NEXT:     StorageClass: C_EXT (0x2)
189 ; SYM-NEXT:     NumberOfAuxEntries: 1
190 ; SYM-NEXT:     CSECT Auxiliary Entry {
191 ; SYM-NEXT:       Index: [[#NFA+2]]
192 ; SYM-NEXT:       SectionLen: 0
193 ; SYM-NEXT:       ParameterHashIndex: 0x0
194 ; SYM-NEXT:       TypeChkSectNum: 0x0
195 ; SYM-NEXT:       SymbolAlignmentLog2: 0
196 ; SYM-NEXT:       SymbolType: XTY_ER (0x0)
197 ; SYM-NEXT:       StorageMappingClass: XMC_PR (0x0)
198 ; SYM-NEXT:       StabInfoIndex: 0x0
199 ; SYM-NEXT:       StabSectNum: 0x0
200 ; SYM-NEXT:     }
201 ; SYM-NEXT:   }
202 ; SYM-NEXT:   Symbol {
203 ; SYM-NEXT:     Index: [[#NFA+3]]
204 ; SYM-NEXT:     Name: .__tls_get_addr
205 ; SYM-NEXT:     Value (RelocatableAddress): 0x0
206 ; SYM-NEXT:     Section: N_UNDEF
207 ; SYM-NEXT:     Type: 0x0
208 ; SYM-NEXT:     StorageClass: C_EXT (0x2)
209 ; SYM-NEXT:     NumberOfAuxEntries: 1
210 ; SYM-NEXT:     CSECT Auxiliary Entry {
211 ; SYM-NEXT:       Index: [[#NFA+4]]
212 ; SYM-NEXT:       SectionLen: 0
213 ; SYM-NEXT:       ParameterHashIndex: 0x0
214 ; SYM-NEXT:       TypeChkSectNum: 0x0
215 ; SYM-NEXT:       SymbolAlignmentLog2: 0
216 ; SYM-NEXT:       SymbolType: XTY_ER (0x0)
217 ; SYM-NEXT:       StorageMappingClass: XMC_PR (0x0)
218 ; SYM-NEXT:       StabInfoIndex: 0x0
219 ; SYM-NEXT:       StabSectNum: 0x0
220 ; SYM-NEXT:     }
221 ; SYM-NEXT:   }
222 ; SYM-NEXT:   Symbol {
223 ; SYM-NEXT:     Index: [[#NFA+5]]
224 ; SYM-NEXT:     Name:
225 ; SYM-NEXT:     Value (RelocatableAddress): 0x0
226 ; SYM-NEXT:     Section: .text
227 ; SYM-NEXT:     Type: 0x0
228 ; SYM-NEXT:     StorageClass: C_HIDEXT (0x6B)
229 ; SYM-NEXT:     NumberOfAuxEntries: 1
230 ; SYM-NEXT:     CSECT Auxiliary Entry {
231 ; SYM-NEXT:       Index: [[#NFA+6]]
232 ; SYM-NEXT:       SectionLen: 104
233 ; SYM-NEXT:       ParameterHashIndex: 0x0
234 ; SYM-NEXT:       TypeChkSectNum: 0x0
235 ; SYM-NEXT:       SymbolAlignmentLog2: 5
236 ; SYM-NEXT:       SymbolType: XTY_SD (0x1)
237 ; SYM-NEXT:       StorageMappingClass: XMC_PR (0x0)
238 ; SYM-NEXT:       StabInfoIndex: 0x0
239 ; SYM-NEXT:       StabSectNum: 0x0
240 ; SYM-NEXT:     }
241 ; SYM-NEXT:   }
242 ; SYM-NEXT:   Symbol {
243 ; SYM-NEXT:     Index: [[#NFA+7]]
244 ; SYM-NEXT:     Name: .storesTIUninit
245 ; SYM-NEXT:     Value (RelocatableAddress): 0x0
246 ; SYM-NEXT:     Section: .text
247 ; SYM-NEXT:     Type: 0x0
248 ; SYM-NEXT:     StorageClass: C_EXT (0x2)
249 ; SYM-NEXT:     NumberOfAuxEntries: 1
250 ; SYM-NEXT:     CSECT Auxiliary Entry {
251 ; SYM-NEXT:       Index: [[#NFA+8]]
252 ; SYM-NEXT:       ContainingCsectSymbolIndex: [[#NFA+5]]
253 ; SYM-NEXT:       ParameterHashIndex: 0x0
254 ; SYM-NEXT:       TypeChkSectNum: 0x0
255 ; SYM-NEXT:       SymbolAlignmentLog2: 0
256 ; SYM-NEXT:       SymbolType: XTY_LD (0x2)
257 ; SYM-NEXT:       StorageMappingClass: XMC_PR (0x0)
258 ; SYM-NEXT:       StabInfoIndex: 0x0
259 ; SYM-NEXT:       StabSectNum: 0x0
260 ; SYM-NEXT:     }
261 ; SYM-NEXT:   }
262 ; SYM-NEXT:   Symbol {
263 ; SYM-NEXT:     Index: [[#NFA+9]]
264 ; SYM-NEXT:     Name: .loadsTGInit
265 ; SYM-NEXT:     Value (RelocatableAddress): 0x30
266 ; SYM-NEXT:     Section: .text
267 ; SYM-NEXT:     Type: 0x0
268 ; SYM-NEXT:     StorageClass: C_EXT (0x2)
269 ; SYM-NEXT:     NumberOfAuxEntries: 1
270 ; SYM-NEXT:     CSECT Auxiliary Entry {
271 ; SYM-NEXT:       Index: [[#NFA+10]]
272 ; SYM-NEXT:       ContainingCsectSymbolIndex: [[#NFA+5]]
273 ; SYM-NEXT:       ParameterHashIndex: 0x0
274 ; SYM-NEXT:       TypeChkSectNum: 0x0
275 ; SYM-NEXT:       SymbolAlignmentLog2: 0
276 ; SYM-NEXT:       SymbolType: XTY_LD (0x2)
277 ; SYM-NEXT:       StorageMappingClass: XMC_PR (0x0)
278 ; SYM-NEXT:       StabInfoIndex: 0x0
279 ; SYM-NEXT:       StabSectNum: 0x0
280 ; SYM-NEXT:     }
281 ; SYM-NEXT:   }
282 ; SYM-NEXT:   Symbol {
283 ; SYM-NEXT:     Index: [[#NFA+11]]
284 ; SYM-NEXT:     Name: .rodata
285 ; SYM-NEXT:     Value (RelocatableAddress): 0x68
286 ; SYM-NEXT:     Section: .text
287 ; SYM-NEXT:     Type: 0x0
288 ; SYM-NEXT:     StorageClass: C_HIDEXT (0x6B)
289 ; SYM-NEXT:     NumberOfAuxEntries: 1
290 ; SYM-NEXT:     CSECT Auxiliary Entry {
291 ; SYM-NEXT:       Index: [[#NFA+12]]
292 ; SYM-NEXT:       SectionLen: 4
293 ; SYM-NEXT:       ParameterHashIndex: 0x0
294 ; SYM-NEXT:       TypeChkSectNum: 0x0
295 ; SYM-NEXT:       SymbolAlignmentLog2: 2
296 ; SYM-NEXT:       SymbolType: XTY_SD (0x1)
297 ; SYM-NEXT:       StorageMappingClass: XMC_RO (0x1)
298 ; SYM-NEXT:       StabInfoIndex: 0x0
299 ; SYM-NEXT:       StabSectNum: 0x0
300 ; SYM-NEXT:     }
301 ; SYM-NEXT:   }
302 ; SYM-NEXT:   Symbol {
303 ; SYM-NEXT:     Index: [[#NFA+13]]
304 ; SYM-NEXT:     Name: const_ivar
305 ; SYM-NEXT:     Value (RelocatableAddress): 0x68
306 ; SYM-NEXT:     Section: .text
307 ; SYM-NEXT:     Type: 0x0
308 ; SYM-NEXT:     StorageClass: C_EXT (0x2)
309 ; SYM-NEXT:     NumberOfAuxEntries: 1
310 ; SYM-NEXT:     CSECT Auxiliary Entry {
311 ; SYM-NEXT:       Index: [[#NFA+14]]
312 ; SYM-NEXT:       ContainingCsectSymbolIndex: [[#NFA+11]]
313 ; SYM-NEXT:       ParameterHashIndex: 0x0
314 ; SYM-NEXT:       TypeChkSectNum: 0x0
315 ; SYM-NEXT:       SymbolAlignmentLog2: 0
316 ; SYM-NEXT:       SymbolType: XTY_LD (0x2)
317 ; SYM-NEXT:       StorageMappingClass: XMC_RO (0x1)
318 ; SYM-NEXT:       StabInfoIndex: 0x0
319 ; SYM-NEXT:       StabSectNum: 0x0
320 ; SYM-NEXT:     }
321 ; SYM-NEXT:   }
322 ; SYM-NEXT:   Symbol {
323 ; SYM-NEXT:     Index: [[#NFA+15]]
324 ; SYM-NEXT:     Name: .data
325 ; SYM-NEXT:     Value (RelocatableAddress): 0x6C
326 ; SYM-NEXT:     Section: .data
327 ; SYM-NEXT:     Type: 0x0
328 ; SYM-NEXT:     StorageClass: C_HIDEXT (0x6B)
329 ; SYM-NEXT:     NumberOfAuxEntries: 1
330 ; SYM-NEXT:     CSECT Auxiliary Entry {
331 ; SYM-NEXT:       Index: [[#NFA+16]]
332 ; SYM-NEXT:       SectionLen: 4
333 ; SYM-NEXT:       ParameterHashIndex: 0x0
334 ; SYM-NEXT:       TypeChkSectNum: 0x0
335 ; SYM-NEXT:       SymbolAlignmentLog2: 2
336 ; SYM-NEXT:       SymbolType: XTY_SD (0x1)
337 ; SYM-NEXT:       StorageMappingClass: XMC_RW (0x5)
338 ; SYM-NEXT:       StabInfoIndex: 0x0
339 ; SYM-NEXT:       StabSectNum: 0x0
340 ; SYM-NEXT:     }
341 ; SYM-NEXT:   }
342 ; SYM-NEXT:   Symbol {
343 ; SYM-NEXT:     Index: [[#NFA+17]]
344 ; SYM-NEXT:     Name: GInit
345 ; SYM-NEXT:     Value (RelocatableAddress): 0x6C
346 ; SYM-NEXT:     Section: .data
347 ; SYM-NEXT:     Type: 0x0
348 ; SYM-NEXT:     StorageClass: C_EXT (0x2)
349 ; SYM-NEXT:     NumberOfAuxEntries: 1
350 ; SYM-NEXT:     CSECT Auxiliary Entry {
351 ; SYM-NEXT:       Index: [[#NFA+18]]
352 ; SYM-NEXT:       ContainingCsectSymbolIndex: [[#NFA+15]]
353 ; SYM-NEXT:       ParameterHashIndex: 0x0
354 ; SYM-NEXT:       TypeChkSectNum: 0x0
355 ; SYM-NEXT:       SymbolAlignmentLog2: 0
356 ; SYM-NEXT:       SymbolType: XTY_LD (0x2)
357 ; SYM-NEXT:       StorageMappingClass: XMC_RW (0x5)
358 ; SYM-NEXT:       StabInfoIndex: 0x0
359 ; SYM-NEXT:       StabSectNum: 0x0
360 ; SYM-NEXT:     }
361 ; SYM-NEXT:   }
362 ; SYM-NEXT:   Symbol {
363 ; SYM-NEXT:     Index: [[#NFA+19]]
364 ; SYM-NEXT:     Name: storesTIUninit
365 ; SYM-NEXT:     Value (RelocatableAddress): 0x70
366 ; SYM-NEXT:     Section: .data
367 ; SYM-NEXT:     Type: 0x0
368 ; SYM-NEXT:     StorageClass: C_EXT (0x2)
369 ; SYM-NEXT:     NumberOfAuxEntries: 1
370 ; SYM-NEXT:     CSECT Auxiliary Entry {
371 ; SYM-NEXT:       Index: [[#NFA+20]]
372 ; SYM-NEXT:       SectionLen: 12
373 ; SYM-NEXT:       ParameterHashIndex: 0x0
374 ; SYM-NEXT:       TypeChkSectNum: 0x0
375 ; SYM-NEXT:       SymbolAlignmentLog2: 2
376 ; SYM-NEXT:       SymbolType: XTY_SD (0x1)
377 ; SYM-NEXT:       StorageMappingClass: XMC_DS (0xA)
378 ; SYM-NEXT:       StabInfoIndex: 0x0
379 ; SYM-NEXT:       StabSectNum: 0x0
380 ; SYM-NEXT:     }
381 ; SYM-NEXT:   }
382 ; SYM-NEXT:   Symbol {
383 ; SYM-NEXT:     Index: [[#NFA+21]]
384 ; SYM-NEXT:     Name: loadsTGInit
385 ; SYM-NEXT:     Value (RelocatableAddress): 0x7C
386 ; SYM-NEXT:     Section: .data
387 ; SYM-NEXT:     Type: 0x0
388 ; SYM-NEXT:     StorageClass: C_EXT (0x2)
389 ; SYM-NEXT:     NumberOfAuxEntries: 1
390 ; SYM-NEXT:     CSECT Auxiliary Entry {
391 ; SYM-NEXT:       Index: [[#NFA+22]]
392 ; SYM-NEXT:       SectionLen: 12
393 ; SYM-NEXT:       ParameterHashIndex: 0x0
394 ; SYM-NEXT:       TypeChkSectNum: 0x0
395 ; SYM-NEXT:       SymbolAlignmentLog2: 2
396 ; SYM-NEXT:       SymbolType: XTY_SD (0x1)
397 ; SYM-NEXT:       StorageMappingClass: XMC_DS (0xA)
398 ; SYM-NEXT:       StabInfoIndex: 0x0
399 ; SYM-NEXT:       StabSectNum: 0x0
400 ; SYM-NEXT:     }
401 ; SYM-NEXT:   }
402 ; SYM-NEXT:   Symbol {
403 ; SYM-NEXT:     Index: [[#NFA+23]]
404 ; SYM-NEXT:     Name: TOC
405 ; SYM-NEXT:     Value (RelocatableAddress): 0x88
406 ; SYM-NEXT:     Section: .data
407 ; SYM-NEXT:     Type: 0x0
408 ; SYM-NEXT:     StorageClass: C_HIDEXT (0x6B)
409 ; SYM-NEXT:     NumberOfAuxEntries: 1
410 ; SYM-NEXT:     CSECT Auxiliary Entry {
411 ; SYM-NEXT:       Index: [[#NFA+24]]
412 ; SYM-NEXT:       SectionLen: 0
413 ; SYM-NEXT:       ParameterHashIndex: 0x0
414 ; SYM-NEXT:       TypeChkSectNum: 0x0
415 ; SYM-NEXT:       SymbolAlignmentLog2: 2
416 ; SYM-NEXT:       SymbolType: XTY_SD (0x1)
417 ; SYM-NEXT:       StorageMappingClass: XMC_TC0 (0xF)
418 ; SYM-NEXT:       StabInfoIndex: 0x0
419 ; SYM-NEXT:       StabSectNum: 0x0
420 ; SYM-NEXT:     }
421 ; SYM-NEXT:   }
422 ; SYM-NEXT:   Symbol {
423 ; SYM-NEXT:     Index: [[#NFA+25]]
424 ; SYM-NEXT:     Name: _$TLSML
425 ; SYM-NEXT:     Value (RelocatableAddress): 0x88
426 ; SYM-NEXT:     Section: .data
427 ; SYM-NEXT:     Type: 0x0
428 ; SYM-NEXT:     StorageClass: C_HIDEXT (0x6B)
429 ; SYM-NEXT:     NumberOfAuxEntries: 1
430 ; SYM-NEXT:     CSECT Auxiliary Entry {
431 ; SYM-NEXT:       Index: [[#NFA+26]]
432 ; SYM-NEXT:       SectionLen: 4
433 ; SYM-NEXT:       ParameterHashIndex: 0x0
434 ; SYM-NEXT:       TypeChkSectNum: 0x0
435 ; SYM-NEXT:       SymbolAlignmentLog2: 2
436 ; SYM-NEXT:       SymbolType: XTY_SD (0x1)
437 ; SYM-NEXT:       StorageMappingClass: XMC_TC (0x3)
438 ; SYM-NEXT:       StabInfoIndex: 0x0
439 ; SYM-NEXT:       StabSectNum: 0x0
440 ; SYM-NEXT:     }
441 ; SYM-NEXT:   }
442 ; SYM-NEXT:   Symbol {
443 ; SYM-NEXT:     Index: [[#NFA+27]]
444 ; SYM-NEXT:     Name: TIUninit
445 ; SYM-NEXT:     Value (RelocatableAddress): 0x8C
446 ; SYM-NEXT:     Section: .data
447 ; SYM-NEXT:     Type: 0x0
448 ; SYM-NEXT:     StorageClass: C_HIDEXT (0x6B)
449 ; SYM-NEXT:     NumberOfAuxEntries: 1
450 ; SYM-NEXT:     CSECT Auxiliary Entry {
451 ; SYM-NEXT:       Index: [[#NFA+28]]
452 ; SYM-NEXT:       SectionLen: 4
453 ; SYM-NEXT:       ParameterHashIndex: 0x0
454 ; SYM-NEXT:       TypeChkSectNum: 0x0
455 ; SYM-NEXT:       SymbolAlignmentLog2: 2
456 ; SYM-NEXT:       SymbolType: XTY_SD (0x1)
457 ; SYM-NEXT:       StorageMappingClass: XMC_TC (0x3)
458 ; SYM-NEXT:       StabInfoIndex: 0x0
459 ; SYM-NEXT:       StabSectNum: 0x0
460 ; SYM-NEXT:     }
461 ; SYM-NEXT:   }
462 ; SYM-NEXT:   Symbol {
463 ; SYM-NEXT:     Index: [[#NFA+29]]
464 ; SYM-NEXT:     Name: .TGInit
465 ; SYM-NEXT:     Value (RelocatableAddress): 0x90
466 ; SYM-NEXT:     Section: .data
467 ; SYM-NEXT:     Type: 0x0
468 ; SYM-NEXT:     StorageClass: C_HIDEXT (0x6B)
469 ; SYM-NEXT:     NumberOfAuxEntries: 1
470 ; SYM-NEXT:     CSECT Auxiliary Entry {
471 ; SYM-NEXT:       Index: [[#NFA+30]]
472 ; SYM-NEXT:       SectionLen: 4
473 ; SYM-NEXT:       ParameterHashIndex: 0x0
474 ; SYM-NEXT:       TypeChkSectNum: 0x0
475 ; SYM-NEXT:       SymbolAlignmentLog2: 2
476 ; SYM-NEXT:       SymbolType: XTY_SD (0x1)
477 ; SYM-NEXT:       StorageMappingClass: XMC_TC (0x3)
478 ; SYM-NEXT:       StabInfoIndex: 0x0
479 ; SYM-NEXT:       StabSectNum: 0x0
480 ; SYM-NEXT:     }
481 ; SYM-NEXT:   }
482 ; SYM-NEXT:   Symbol {
483 ; SYM-NEXT:     Index: [[#NFA+31]]
484 ; SYM-NEXT:     Name: TGInit
485 ; SYM-NEXT:     Value (RelocatableAddress): 0x94
486 ; SYM-NEXT:     Section: .data
487 ; SYM-NEXT:     Type: 0x0
488 ; SYM-NEXT:     StorageClass: C_HIDEXT (0x6B)
489 ; SYM-NEXT:     NumberOfAuxEntries: 1
490 ; SYM-NEXT:     CSECT Auxiliary Entry {
491 ; SYM-NEXT:       Index: [[#NFA+32]]
492 ; SYM-NEXT:       SectionLen: 4
493 ; SYM-NEXT:       ParameterHashIndex: 0x0
494 ; SYM-NEXT:       TypeChkSectNum: 0x0
495 ; SYM-NEXT:       SymbolAlignmentLog2: 2
496 ; SYM-NEXT:       SymbolType: XTY_SD (0x1)
497 ; SYM-NEXT:       StorageMappingClass: XMC_TC (0x3)
498 ; SYM-NEXT:       StabInfoIndex: 0x0
499 ; SYM-NEXT:       StabSectNum: 0x0
500 ; SYM-NEXT:     }
501 ; SYM-NEXT:   }
502 ; SYM-NEXT:   Symbol {
503 ; SYM-NEXT:     Index: [[#NFA+33]]
504 ; SYM-NEXT:     Name: GInit
505 ; SYM-NEXT:     Value (RelocatableAddress): 0x98
506 ; SYM-NEXT:     Section: .data
507 ; SYM-NEXT:     Type: 0x0
508 ; SYM-NEXT:     StorageClass: C_HIDEXT (0x6B)
509 ; SYM-NEXT:     NumberOfAuxEntries: 1
510 ; SYM-NEXT:     CSECT Auxiliary Entry {
511 ; SYM-NEXT:       Index: [[#NFA+34]]
512 ; SYM-NEXT:       SectionLen: 4
513 ; SYM-NEXT:       ParameterHashIndex: 0x0
514 ; SYM-NEXT:       TypeChkSectNum: 0x0
515 ; SYM-NEXT:       SymbolAlignmentLog2: 2
516 ; SYM-NEXT:       SymbolType: XTY_SD (0x1)
517 ; SYM-NEXT:       StorageMappingClass: XMC_TC (0x3)
518 ; SYM-NEXT:       StabInfoIndex: 0x0
519 ; SYM-NEXT:       StabSectNum: 0x0
520 ; SYM-NEXT:     }
521 ; SYM-NEXT:   }
522 ; SYM-NEXT:   Symbol {
523 ; SYM-NEXT:     Index: [[#NFA+35]]
524 ; SYM-NEXT:     Name: .tdata
525 ; SYM-NEXT:     Value (RelocatableAddress): 0x0
526 ; SYM-NEXT:     Section: .tdata
527 ; SYM-NEXT:     Type: 0x0
528 ; SYM-NEXT:     StorageClass: C_HIDEXT (0x6B)
529 ; SYM-NEXT:     NumberOfAuxEntries: 1
530 ; SYM-NEXT:     CSECT Auxiliary Entry {
531 ; SYM-NEXT:       Index: [[#NFA+36]]
532 ; SYM-NEXT:       SectionLen: 4
533 ; SYM-NEXT:       ParameterHashIndex: 0x0
534 ; SYM-NEXT:       TypeChkSectNum: 0x0
535 ; SYM-NEXT:       SymbolAlignmentLog2: 2
536 ; SYM-NEXT:       SymbolType: XTY_SD (0x1)
537 ; SYM-NEXT:       StorageMappingClass: XMC_TL (0x14)
538 ; SYM-NEXT:       StabInfoIndex: 0x0
539 ; SYM-NEXT:       StabSectNum: 0x0
540 ; SYM-NEXT:     }
541 ; SYM-NEXT:   }
542 ; SYM-NEXT:   Symbol {
543 ; SYM-NEXT:     Index: [[#NFA+37]]
544 ; SYM-NEXT:     Name: TGInit
545 ; SYM-NEXT:     Value (RelocatableAddress): 0x0
546 ; SYM-NEXT:     Section: .tdata
547 ; SYM-NEXT:     Type: 0x0
548 ; SYM-NEXT:     StorageClass: C_EXT (0x2)
549 ; SYM-NEXT:     NumberOfAuxEntries: 1
550 ; SYM-NEXT:     CSECT Auxiliary Entry {
551 ; SYM-NEXT:       Index: [[#NFA+38]]
552 ; SYM-NEXT:       ContainingCsectSymbolIndex: [[#NFA+35]]
553 ; SYM-NEXT:       ParameterHashIndex: 0x0
554 ; SYM-NEXT:       TypeChkSectNum: 0x0
555 ; SYM-NEXT:       SymbolAlignmentLog2: 0
556 ; SYM-NEXT:       SymbolType: XTY_LD (0x2)
557 ; SYM-NEXT:       StorageMappingClass: XMC_TL (0x14)
558 ; SYM-NEXT:       StabInfoIndex: 0x0
559 ; SYM-NEXT:       StabSectNum: 0x0
560 ; SYM-NEXT:     }
561 ; SYM-NEXT:   }
562 ; SYM-NEXT:   Symbol {
563 ; SYM-NEXT:     Index: [[#NFA+39]]
564 ; SYM-NEXT:     Name: TIUninit
565 ; SYM-NEXT:     Value (RelocatableAddress): 0x4
566 ; SYM-NEXT:     Section: .tbss
567 ; SYM-NEXT:     Type: 0x0
568 ; SYM-NEXT:     StorageClass: C_HIDEXT (0x6B)
569 ; SYM-NEXT:     NumberOfAuxEntries: 1
570 ; SYM-NEXT:     CSECT Auxiliary Entry {
571 ; SYM-NEXT:       Index: [[#NFA+40]]
572 ; SYM-NEXT:       SectionLen: 4
573 ; SYM-NEXT:       ParameterHashIndex: 0x0
574 ; SYM-NEXT:       TypeChkSectNum: 0x0
575 ; SYM-NEXT:       SymbolAlignmentLog2: 2
576 ; SYM-NEXT:       SymbolType: XTY_CM (0x3)
577 ; SYM-NEXT:       StorageMappingClass: XMC_UL (0x15)
578 ; SYM-NEXT:       StabInfoIndex: 0x0
579 ; SYM-NEXT:       StabSectNum: 0x0
580 ; SYM-NEXT:     }
581 ; SYM-NEXT:   }
582 ; SYM-NEXT: ]
584 ; DIS:      {{.*}}aix-tls-xcoff-reloc.ll.tmp.o: file format aixcoff-rs6000
585 ; DIS:      Disassembly of section .text:
586 ; DIS:      00000000 (idx: [[#NFA+7]]) .storesTIUninit:
587 ; DIS-NEXT:                                      mflr 0
588 ; DIS-NEXT:                                      stwu 1, -32(1)
589 ; DIS-NEXT:                                      mr 6, 3
590 ; DIS-NEXT: [[#%x, ADDR:]]: {{.*}}               lwz 3, 0(2)
591 ; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOC (idx: [[#NFA+25]]) _$TLSML[TC]
592 ; DIS-NEXT:                                      stw 0, 40(1)
593 ; DIS-NEXT: [[#%x, ADDR:]]: {{.*}}               bla 0x0
594 ; DIS-NEXT: {{0*}}[[#ADDR]]: R_RBA (idx: [[#NFA+1]]) .__tls_get_mod[PR]
595 ; DIS-NEXT: [[#%x, ADDR:]]: {{.*}}               lwz 4, 4(2)
596 ; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOC (idx: [[#NFA+27]]) TIUninit[TC]
597 ; DIS-NEXT:                                      stwx 6, 3, 4
598 ; DIS-NEXT:                                      addi 1, 1, 32
599 ; DIS-NEXT:                                      lwz 0, 8(1)
600 ; DIS-NEXT:                                      mtlr 0
601 ; DIS-NEXT:                                      blr
602 ; DIS:      00000030 (idx: [[#NFA+9]]) .loadsTGInit:
603 ; DIS-NEXT:                                      mflr 0
604 ; DIS-NEXT:                                      stwu 1, -32(1)
605 ; DIS-NEXT: [[#%x, ADDR:]]: {{.*}}               lwz 3, 8(2)
606 ; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOC (idx: [[#NFA+29]]) .TGInit[TC]
607 ; DIS-NEXT: [[#%x, ADDR:]]: {{.*}}               lwz 4, 12(2)
608 ; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOC (idx: [[#NFA+31]]) TGInit[TC]
609 ; DIS-NEXT:                                      stw 0, 40(1)
610 ; DIS-NEXT: [[#%x, ADDR:]]: {{.*}}               bla 0
611 ; DIS-NEXT: {{0*}}[[#ADDR]]: R_RBA (idx: [[#NFA+3]])      .__tls_get_addr[PR]
612 ; DIS-NEXT: [[#%x, ADDR:]]: {{.*}}               lwz 4, 16(2)
613 ; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOC (idx: [[#NFA+33]]) GInit[TC]
614 ; DIS-NEXT:                                      lwz 3, 0(3)
615 ; DIS-NEXT:                                      lwz 4, 0(4)
616 ; DIS-NEXT:                                      add 3, 4, 3
617 ; DIS-NEXT:                                      addi 1, 1, 32
618 ; DIS-NEXT:                                      lwz 0, 8(1)
619 ; DIS-NEXT:                                      mtlr 0
620 ; DIS-NEXT:                                      blr
621 ; DIS:      00000068 (idx: [[#NFA+13]]) const_ivar:
622 ; DIS-NEXT:       68: 00 00 00 06
624 ; DIS:      Disassembly of section .data:
625 ; DIS:      0000006c  (idx: [[#NFA+17]]) GInit:
626 ; DIS-NEXT:       6c: 00 00 00 01
627 ; DIS:      00000070  (idx: [[#NFA+19]]) storesTIUninit[DS]:
628 ; DIS-NEXT:       70: 00 00 00 00
629 ; DIS-NEXT: 00000070: R_POS (idx: [[#NFA+7]]) .storesTIUninit
630 ; DIS-NEXT:       74: 00 00 00 88
631 ; DIS-NEXT: 00000074: R_POS (idx: [[#NFA+23]]) TOC[TC0]
632 ; DIS-NEXT:       78: 00 00 00 00
633 ; DIS:      0000007c  (idx: [[#NFA+21]]) loadsTGInit[DS]:
634 ; DIS-NEXT:       7c: 00 00 00 30
635 ; DIS-NEXT: 0000007c: R_POS (idx: [[#NFA+9]]) .loadsTGInit
636 ; DIS-NEXT:       80: 00 00 00 88
637 ; DIS-NEXT: 00000080: R_POS (idx: [[#NFA+23]]) TOC[TC0]
638 ; DIS-NEXT:       84: 00 00 00 00
639 ; DIS:      00000088 (idx: [[#NFA+25]]) _$TLSML[TC]:
640 ; DIS-NEXT:       88: 00 00 00 00
641 ; DIS-NEXT: 00000088: R_TLSML (idx: [[#NFA+25]]) _$TLSML[TC]
642 ; DIS:      0000008c  (idx: [[#NFA+27]]) TIUninit[TC]:
643 ; DIS-NEXT:       8c: 00 00 00 04
644 ; DIS-NEXT: 0000008c: R_TLS_LD (idx: [[#NFA+39]]) TIUninit[UL]
645 ; DIS:      00000090  (idx: [[#NFA+29]]) .TGInit[TC]:
646 ; DIS-NEXT:       90: 00 00 00 00
647 ; DIS-NEXT: 00000090: R_TLSM (idx: [[#NFA+37]]) TGInit
648 ; DIS:      00000094  (idx: [[#NFA+31]]) TGInit[TC]:
649 ; DIS-NEXT:       94: 00 00 00 00
650 ; DIS-NEXT: 00000094: R_TLS (idx: [[#NFA+37]]) TGInit
651 ; DIS:      00000098  (idx: [[#NFA+33]]) GInit[TC]:
652 ; DIS-NEXT:       98: 00 00 00 6c
653 ; DIS-NEXT: 00000098: R_POS (idx: [[#NFA+17]]) GInit
655 ; DIS:      Disassembly of section .tdata:
656 ; DIS:      00000000 (idx: [[#NFA+37]]) TGInit:
657 ; DIS-NEXT:        0: 00 00 00 01
659 ; DIS:      Disassembly of section .tbss:
660 ; DIS:      00000004 (idx: [[#NFA+39]]) TIUninit[UL]:
661 ; DIS-NEXT: ...
663 attributes #0 = { nofree norecurse nounwind willreturn writeonly "frame-pointer"="none" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="pwr4" "target-features"="-altivec,-bpermd,-crypto,-direct-move,-extdiv,-float128,-htm,-mma,-paired-vector-memops,-power10-vector,-power8-vector,-power9-vector,-spe,-vsx" }
664 attributes #1 = { norecurse nounwind readonly willreturn "frame-pointer"="none" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="pwr4" "target-features"="-altivec,-bpermd,-crypto,-direct-move,-extdiv,-float128,-htm,-mma,-paired-vector-memops,-power10-vector,-power8-vector,-power9-vector,-spe,-vsx" }