xref: /llvm-project/llvm/test/CodeGen/PowerPC/aix-tls-xcoff-reloc.ll (revision ed6275868bd38ef87dac24ecec7a6f55129bd96d)
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
6
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
12
13; Function Attrs: nofree norecurse nounwind willreturn writeonly
14define void @storesTIUninit(i32 %Val) #0 {
15entry:
16  store i32 %Val, ptr @TIUninit, align 4
17  ret void
18}
19
20; Function Attrs: norecurse nounwind readonly willreturn
21define i32 @loadsTGInit() #1 {
22entry:
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
27}
28
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: ]
167
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: ]
583
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
623
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
654
655; DIS:      Disassembly of section .tdata:
656; DIS:      00000000 (idx: [[#NFA+37]]) TGInit:
657; DIS-NEXT:        0: 00 00 00 01
658
659; DIS:      Disassembly of section .tbss:
660; DIS:      00000004 (idx: [[#NFA+39]]) TIUninit[UL]:
661; DIS-NEXT: ...
662
663attributes #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" }
664attributes #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" }
665