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