xref: /llvm-project/llvm/test/CodeGen/PowerPC/aix-tls-xcoff-variables.ll (revision f31099ce581d33fdb64e35fee4b56d0a1145cab1)
1; This file tests the codegen of tls variables in AIX XCOFF object files
2
3; RUN: llc -mtriple powerpc-ibm-aix-xcoff -filetype=obj -o %t.o < %s
4; RUN: llvm-readobj --section-headers %t.o | FileCheck --check-prefix=SECTION %s
5; RUN: llvm-readobj --syms %t.o | FileCheck --check-prefixes=SYMS,SYMS-DATASECT %s
6; RUN: llvm-objdump -D --symbol-description %t.o | FileCheck -D#NFA=2 --check-prefixes=OBJDUMP-DATASECT %s
7
8; RUN: llc -mtriple powerpc-ibm-aix-xcoff -data-sections=false -filetype=obj -o %t.o < %s
9; RUN: llvm-readobj --section-headers %t.o | FileCheck --check-prefix=SECTION %s
10; RUN: llvm-readobj --syms %t.o | FileCheck --check-prefixes=SYMS,SYMS-NODATASECT %s
11; RUN: llvm-objdump -D --symbol-description %t.o | FileCheck -D#NFA=2 --check-prefixes=OBJDUMP-NODATASECT %s
12
13;; FIXME: currently only fileHeader and sectionHeaders are supported in XCOFF64.
14
15; SECTION:      File:
16; SECTION-NEXT: Format: aixcoff-rs6000
17; SECTION-NEXT: Arch: powerpc
18; SECTION-NEXT: AddressSize: 32bit
19; SECTION-NEXT: Sections [
20; SECTION-NEXT:   Section {
21; SECTION-NEXT:     Index: 1
22; SECTION-NEXT:     Name:
23; SECTION-NEXT:     PhysicalAddress: 0x0
24; SECTION-NEXT:     VirtualAddress: 0x0
25; SECTION-NEXT:     Size: 0x4
26; SECTION-NEXT:     RawDataOffset: 0x8C
27; SECTION-NEXT:     RelocationPointer: 0x0
28; SECTION-NEXT:     LineNumberPointer: 0x0
29; SECTION-NEXT:     NumberOfRelocations: 0
30; SECTION-NEXT:     NumberOfLineNumbers: 0
31; SECTION-NEXT:     Type: STYP_TEXT (0x20)
32; SECTION-NEXT:   }
33; SECTION-NEXT:   Section {
34; SECTION-NEXT:     Index: 2
35; SECTION-NEXT:     Name: .tdata
36; SECTION-NEXT:     PhysicalAddress: 0x0
37; SECTION-NEXT:     VirtualAddress: 0x0
38; SECTION-NEXT:     Size: 0x30
39; SECTION-NEXT:     RawDataOffset: 0x90
40; SECTION-NEXT:     RelocationPointer: 0x0
41; SECTION-NEXT:     LineNumberPointer: 0x0
42; SECTION-NEXT:     NumberOfRelocations: 0
43; SECTION-NEXT:     NumberOfLineNumbers: 0
44; SECTION-NEXT:     Type: STYP_TDATA (0x400)
45; SECTION-NEXT:   }
46; SECTION-NEXT:   Section {
47; SECTION-NEXT:     Index: 3
48; SECTION-NEXT:     Name: .tbss
49; SECTION-NEXT:     PhysicalAddress: 0x30
50; SECTION-NEXT:     VirtualAddress: 0x30
51; SECTION-NEXT:     Size: 0x18
52; SECTION-NEXT:     RawDataOffset: 0x0
53; SECTION-NEXT:     RelocationPointer: 0x0
54; SECTION-NEXT:     LineNumberPointer: 0x0
55; SECTION-NEXT:     NumberOfRelocations: 0
56; SECTION-NEXT:     NumberOfLineNumbers: 0
57; SECTION-NEXT:     Type: STYP_TBSS (0x800)
58; SECTION-NEXT:   }
59; SECTION-NEXT: ]
60
61
62; SYMS:      File:
63; SYMS-NEXT: Format: aixcoff-rs6000
64; SYMS-NEXT: Arch: powerpc
65; SYMS-NEXT: AddressSize: 32bit
66; SYMS-NEXT: Symbols [
67; SYMS-NEXT:   Symbol {
68; SYMS-NEXT:     Index: 0
69; SYMS-NEXT:     Name: .file
70; SYMS-NEXT:     Value (SymbolTableIndex): 0x0
71; SYMS-NEXT:     Section: N_DEBUG
72; SYMS-NEXT:     Source Language ID: TB_CPLUSPLUS (0x9)
73; SYMS-NEXT:     CPU Version ID: TCPU_PWR7 (0x18)
74; SYMS-NEXT:     StorageClass: C_FILE (0x67)
75; SYMS-NEXT:     NumberOfAuxEntries: 2
76; SYMS:         Symbol {
77; SYMS-NEXT:     Index: [[#INDX:]]
78; SYMS-NEXT:     Name: tls_global_int_external_uninitialized
79; SYMS-NEXT:     Value (RelocatableAddress): 0x0
80; SYMS-NEXT:     Section: N_UNDEF
81; SYMS-NEXT:     Type: 0x0
82; SYMS-NEXT:     StorageClass: C_EXT (0x2)
83; SYMS-NEXT:     NumberOfAuxEntries: 1
84; SYMS-NEXT:     CSECT Auxiliary Entry {
85; SYMS-NEXT:       Index: [[#INDX+1]]
86; SYMS-NEXT:       SectionLen: 0
87; SYMS-NEXT:       ParameterHashIndex: 0x0
88; SYMS-NEXT:       TypeChkSectNum: 0x0
89; SYMS-NEXT:       SymbolAlignmentLog2: 0
90; SYMS-NEXT:       SymbolType: XTY_ER (0x0)
91; SYMS-NEXT:       StorageMappingClass: XMC_UL (0x15)
92; SYMS-NEXT:       StabInfoIndex: 0x0
93; SYMS-NEXT:       StabSectNum: 0x0
94; SYMS-NEXT:     }
95; SYMS-NEXT:   }
96; SYMS-NEXT:   Symbol {
97; SYMS-NEXT:     Index: [[#INDX+2]]
98; SYMS-NEXT:     Name: tls_global_double_external_uninitialized
99; SYMS-NEXT:     Value (RelocatableAddress): 0x0
100; SYMS-NEXT:     Section: N_UNDEF
101; SYMS-NEXT:     Type: 0x0
102; SYMS-NEXT:     StorageClass: C_EXT (0x2)
103; SYMS-NEXT:     NumberOfAuxEntries: 1
104; SYMS-NEXT:     CSECT Auxiliary Entry {
105; SYMS-NEXT:       Index: [[#INDX+3]]
106; SYMS-NEXT:       SectionLen: 0
107; SYMS-NEXT:       ParameterHashIndex: 0x0
108; SYMS-NEXT:       TypeChkSectNum: 0x0
109; SYMS-NEXT:       SymbolAlignmentLog2: 0
110; SYMS-NEXT:       SymbolType: XTY_ER (0x0)
111; SYMS-NEXT:       StorageMappingClass: XMC_UL (0x15)
112; SYMS-NEXT:       StabInfoIndex: 0x0
113; SYMS-NEXT:       StabSectNum: 0x0
114; SYMS-NEXT:     }
115; SYMS-NEXT:   }
116
117; SYMS-NEXT:   Symbol {
118; SYMS-NEXT:     Index: [[#INDX+4]]
119; SYMS-NEXT:     Name:
120; SYMS-NEXT:     Value (RelocatableAddress): 0x0
121; SYMS-NEXT:     Section: .text
122; SYMS-NEXT:     Type: 0x0
123; SYMS-NEXT:     StorageClass: C_HIDEXT (0x6B)
124; SYMS-NEXT:     NumberOfAuxEntries: 1
125; SYMS-NEXT:     CSECT Auxiliary Entry {
126; SYMS-NEXT:       Index: [[#INDX+5]]
127; SYMS-NEXT:       SectionLen: 0
128; SYMS-NEXT:       ParameterHashIndex: 0x0
129; SYMS-NEXT:       TypeChkSectNum: 0x0
130; SYMS-NEXT:       SymbolAlignmentLog2: 5
131; SYMS-NEXT:       SymbolType: XTY_SD (0x1)
132; SYMS-NEXT:       StorageMappingClass: XMC_PR (0x0)
133; SYMS-NEXT:       StabInfoIndex: 0x0
134; SYMS-NEXT:       StabSectNum: 0x0
135; SYMS-NEXT:     }
136; SYMS-NEXT:   }
137
138; SYMS-NODATASECT:        Symbol {
139; SYMS-NODATASECT-NEXT:     Index: [[#INDX+6]]
140; SYMS-NODATASECT-NEXT:     Name: .rodata
141; SYMS-NODATASECT-NEXT:     Value (RelocatableAddress): 0x0
142; SYMS-NODATASECT-NEXT:     Section: .text
143; SYMS-NODATASECT-NEXT:     Type: 0x0
144; SYMS-NODATASECT-NEXT:     StorageClass: C_HIDEXT (0x6B)
145; SYMS-NODATASECT-NEXT:     NumberOfAuxEntries: 1
146; SYMS-NODATASECT-NEXT:     CSECT Auxiliary Entry {
147; SYMS-NODATASECT-NEXT:       Index: [[#INDX+7]]
148; SYMS-NODATASECT-NEXT:       SectionLen: 4
149; SYMS-NODATASECT-NEXT:       ParameterHashIndex: 0x0
150; SYMS-NODATASECT-NEXT:       TypeChkSectNum: 0x0
151; SYMS-NODATASECT-NEXT:       SymbolAlignmentLog2: 2
152; SYMS-NODATASECT-NEXT:       SymbolType: XTY_SD (0x1)
153; SYMS-NODATASECT-NEXT:       StorageMappingClass: XMC_RO (0x1)
154; SYMS-NODATASECT-NEXT:       StabInfoIndex: 0x0
155; SYMS-NODATASECT-NEXT:       StabSectNum: 0x0
156; SYMS-NODATASECT-NEXT:     }
157; SYMS-NODATASECT-NEXT:   }
158
159; SYMS:        Symbol {
160; SYMS-DATASECT:   Index: [[#INDX+6]]
161; SYMS-NODATASECT: Index: [[#INDX+8]]
162; SYMS-NEXT:     Name: const_ivar
163; SYMS-NEXT:     Value (RelocatableAddress): 0x0
164; SYMS-NEXT:     Section: .text
165; SYMS-NEXT:     Type: 0x0
166; SYMS-NEXT:     StorageClass: C_EXT (0x2)
167; SYMS-NEXT:     NumberOfAuxEntries: 1
168; SYMS-NEXT:     CSECT Auxiliary Entry {
169; SYMS-DATASECT:        Index: [[#INDX+7]]
170; SYMS-DATASECT-NEXT:   SectionLen: 4
171; SYMS-NODATASECT:      Index: [[#INDX+9]]
172; SYMS-NODATASECT-NEXT: ContainingCsectSymbolIndex: [[#INDX+6]]
173; SYMS:            ParameterHashIndex: 0x0
174; SYMS-NEXT:       TypeChkSectNum: 0x0
175; SYMS-DATASECT:        SymbolAlignmentLog2: 2
176; SYMS-DATASECT-NEXT:   SymbolType: XTY_SD (0x1)
177; SYMS-NODATASECT:      SymbolAlignmentLog2: 0
178; SYMS-NODATASECT-NEXT: SymbolType: XTY_LD (0x2)
179; SYMS:            StorageMappingClass: XMC_RO (0x1)
180; SYMS-NEXT:       StabInfoIndex: 0x0
181; SYMS-NEXT:       StabSectNum: 0x0
182; SYMS-NEXT:     }
183; SYMS-NEXT:   }
184
185; SYMS-NODATASECT:        Symbol {
186; SYMS-NODATASECT-NEXT:     Index: [[#INDX+10]]
187; SYMS-NODATASECT-NEXT:     Name: .tdata
188; SYMS-NODATASECT-NEXT:     Value (RelocatableAddress): 0x0
189; SYMS-NODATASECT-NEXT:     Section: .tdata
190; SYMS-NODATASECT-NEXT:     Type: 0x0
191; SYMS-NODATASECT-NEXT:     StorageClass: C_HIDEXT (0x6B)
192; SYMS-NODATASECT-NEXT:     NumberOfAuxEntries: 1
193; SYMS-NODATASECT-NEXT:     CSECT Auxiliary Entry {
194; SYMS-NODATASECT-NEXT:       Index: [[#INDX+11]]
195; SYMS-NODATASECT-NEXT:       SectionLen: 48
196; SYMS-NODATASECT-NEXT:       ParameterHashIndex: 0x0
197; SYMS-NODATASECT-NEXT:       TypeChkSectNum: 0x0
198; SYMS-NODATASECT-NEXT:       SymbolAlignmentLog2: 3
199; SYMS-NODATASECT-NEXT:       SymbolType: XTY_SD (0x1)
200; SYMS-NODATASECT-NEXT:       StorageMappingClass: XMC_TL (0x14)
201; SYMS-NODATASECT-NEXT:       StabInfoIndex: 0x0
202; SYMS-NODATASECT-NEXT:       StabSectNum: 0x0
203; SYMS-NODATASECT-NEXT:     }
204; SYMS-NODATASECT-NEXT:   }
205
206; SYMS:        Symbol {
207; SYMS-DATASECT:   Index: [[#INDX+8]]
208; SYMS-NODATASECT: Index: [[#INDX+12]]
209; SYMS:          Name: tls_global_int_external_val_initialized
210; SYMS-NEXT:     Value (RelocatableAddress): 0x0
211; SYMS-NEXT:     Section: .tdata
212; SYMS-NEXT:     Type: 0x0
213; SYMS-NEXT:     StorageClass: C_EXT (0x2)
214; SYMS-NEXT:     NumberOfAuxEntries: 1
215; SYMS-NEXT:     CSECT Auxiliary Entry {
216; SYMS-DATASECT:        Index: [[#INDX+9]]
217; SYMS-DATASECT-NEXT:   SectionLen: 4
218; SYMS-NODATASECT:      Index: [[#INDX+13]]
219; SYMS-NODATASECT-NEXT: ContainingCsectSymbolIndex: [[#INDX+10]]
220; SYMS:            ParameterHashIndex: 0x0
221; SYMS-NEXT:       TypeChkSectNum: 0x0
222; SYMS-DATASECT:        SymbolAlignmentLog2: 2
223; SYMS-DATASECT-NEXT:   SymbolType: XTY_SD (0x1)
224; SYMS-NODATASECT:      SymbolAlignmentLog2: 0
225; SYMS-NODATASECT-NEXT: SymbolType: XTY_LD (0x2)
226; SYMS:            StorageMappingClass: XMC_TL (0x14)
227; SYMS-NEXT:       StabInfoIndex: 0x0
228; SYMS-NEXT:       StabSectNum: 0x0
229; SYMS-NEXT:     }
230; SYMS-NEXT:   }
231
232; SYMS:        Symbol {
233; SYMS-DATASECT:   Index: [[#INDX+10]]
234; SYMS-NODATASECT: Index: [[#INDX+14]]
235; SYMS:          Name: tls_global_alias_int_external_val_initialized
236; SYMS-NEXT:     Value (RelocatableAddress): 0x0
237; SYMS-NEXT:     Section: .tdata
238; SYMS-NEXT:     Type: 0x0
239; SYMS-NEXT:     StorageClass: C_EXT (0x2)
240; SYMS-NEXT:     NumberOfAuxEntries: 1
241; SYMS-NEXT:     CSECT Auxiliary Entry {
242; SYMS-DATASECT:        Index: [[#INDX+11]]
243; SYMS-DATASECT-NEXT:   ContainingCsectSymbolIndex: [[#INDX+8]]
244; SYMS-NODATASECT:      Index: [[#INDX+15]]
245; SYMS-NODATASECT-NEXT: ContainingCsectSymbolIndex: [[#INDX+10]]
246; SYMS:            ParameterHashIndex: 0x0
247; SYMS-NEXT:       TypeChkSectNum: 0x0
248; SYMS-NEXT:       SymbolAlignmentLog2: 0
249; SYMS-NEXT:       SymbolType: XTY_LD (0x2)
250; SYMS-NEXT:       StorageMappingClass: XMC_TL (0x14)
251; SYMS-NEXT:       StabInfoIndex: 0x0
252; SYMS-NEXT:       StabSectNum: 0x0
253; SYMS-NEXT:     }
254; SYMS-NEXT:   }
255
256; SYMS:        Symbol {
257; SYMS-DATASECT:   Index: [[#INDX+12]]
258; SYMS-NODATASECT: Index: [[#INDX+16]]
259; SYMS:          Name: tls_global_int_external_zero_initialized
260; SYMS-NEXT:     Value (RelocatableAddress): 0x4
261; SYMS-NEXT:     Section: .tdata
262; SYMS-NEXT:     Type: 0x0
263; SYMS-NEXT:     StorageClass: C_EXT (0x2)
264; SYMS-NEXT:     NumberOfAuxEntries: 1
265; SYMS-NEXT:     CSECT Auxiliary Entry {
266; SYMS-DATASECT:        Index: [[#INDX+13]]
267; SYMS-DATASECT-NEXT:   SectionLen: 4
268; SYMS-NODATASECT:      Index: [[#INDX+17]]
269; SYMS-NODATASECT-NEXT: ContainingCsectSymbolIndex: [[#INDX+10]]
270; SYMS:            ParameterHashIndex: 0x0
271; SYMS-NEXT:       TypeChkSectNum: 0x0
272; SYMS-DATASECT:        SymbolAlignmentLog2: 2
273; SYMS-DATASECT-NEXT:   SymbolType: XTY_SD (0x1)
274; SYMS-NODATASECT:      SymbolAlignmentLog2: 0
275; SYMS-NODATASECT-NEXT: SymbolType: XTY_LD (0x2)
276; SYMS:            StorageMappingClass: XMC_TL (0x14)
277; SYMS-NEXT:       StabInfoIndex: 0x0
278; SYMS-NEXT:       StabSectNum: 0x0
279; SYMS-NEXT:     }
280; SYMS-NEXT:   }
281
282; SYMS:        Symbol {
283; SYMS-DATASECT:   Index: [[#INDX+14]]
284; SYMS-NODATASECT: Index: [[#INDX+18]]
285; SYMS:          Name: tls_global_int_local_val_initialized
286; SYMS-NEXT:     Value (RelocatableAddress): 0x8
287; SYMS-NEXT:     Section: .tdata
288; SYMS-NEXT:     Type: 0x0
289; SYMS-NEXT:     StorageClass: C_HIDEXT (0x6B)
290; SYMS-NEXT:     NumberOfAuxEntries: 1
291; SYMS-NEXT:     CSECT Auxiliary Entry {
292; SYMS-DATASECT:        Index: [[#INDX+15]]
293; SYMS-DATASECT-NEXT:   SectionLen: 4
294; SYMS-NODATASECT:      Index: [[#INDX+19]]
295; SYMS-NODATASECT-NEXT: ContainingCsectSymbolIndex: [[#INDX+10]]
296; SYMS:            ParameterHashIndex: 0x0
297; SYMS-NEXT:       TypeChkSectNum: 0x0
298; SYMS-DATASECT:        SymbolAlignmentLog2: 2
299; SYMS-DATASECT-NEXT:   SymbolType: XTY_SD (0x1)
300; SYMS-NODATASECT:      SymbolAlignmentLog2: 0
301; SYMS-NODATASECT-NEXT: SymbolType: XTY_LD (0x2)
302; SYMS:            StorageMappingClass: XMC_TL (0x14)
303; SYMS-NEXT:       StabInfoIndex: 0x0
304; SYMS-NEXT:       StabSectNum: 0x0
305; SYMS-NEXT:     }
306; SYMS-NEXT:   }
307
308; SYMS:        Symbol {
309; SYMS-DATASECT:   Index: [[#INDX+16]]
310; SYMS-NODATASECT: Index: [[#INDX+20]]
311; SYMS:          Name: tls_global_int_weak_zero_initialized
312; SYMS-NEXT:     Value (RelocatableAddress): 0xC
313; SYMS-NEXT:     Section: .tdata
314; SYMS-NEXT:     Type: 0x0
315; SYMS-NEXT:     StorageClass: C_WEAKEXT (0x6F)
316; SYMS-NEXT:     NumberOfAuxEntries: 1
317; SYMS-NEXT:     CSECT Auxiliary Entry {
318; SYMS-DATASECT:        Index: [[#INDX+17]]
319; SYMS-DATASECT-NEXT:   SectionLen: 4
320; SYMS-NODATASECT:      Index: [[#INDX+21]]
321; SYMS-NODATASECT-NEXT: ContainingCsectSymbolIndex: [[#INDX+10]]
322; SYMS:            ParameterHashIndex: 0x0
323; SYMS-NEXT:       TypeChkSectNum: 0x0
324; SYMS-DATASECT:        SymbolAlignmentLog2: 2
325; SYMS-DATASECT-NEXT:   SymbolType: XTY_SD (0x1)
326; SYMS-NODATASECT:      SymbolAlignmentLog2: 0
327; SYMS-NODATASECT-NEXT: SymbolType: XTY_LD (0x2)
328; SYMS:            StorageMappingClass: XMC_TL (0x14)
329; SYMS-NEXT:       StabInfoIndex: 0x0
330; SYMS-NEXT:       StabSectNum: 0x0
331; SYMS-NEXT:     }
332; SYMS-NEXT:   }
333
334; SYMS:        Symbol {
335; SYMS-DATASECT:   Index: [[#INDX+18]]
336; SYMS-NODATASECT: Index: [[#INDX+22]]
337; SYMS:          Name: tls_global_int_weak_val_initialized
338; SYMS-NEXT:     Value (RelocatableAddress): 0x10
339; SYMS-NEXT:     Section: .tdata
340; SYMS-NEXT:     Type: 0x0
341; SYMS-NEXT:     StorageClass: C_WEAKEXT (0x6F)
342; SYMS-NEXT:     NumberOfAuxEntries: 1
343; SYMS-NEXT:     CSECT Auxiliary Entry {
344; SYMS-DATASECT:        Index: [[#INDX+19]]
345; SYMS-DATASECT-NEXT:   SectionLen: 4
346; SYMS-NODATASECT:      Index: [[#INDX+23]]
347; SYMS-NODATASECT-NEXT: ContainingCsectSymbolIndex: [[#INDX+10]]
348; SYMS:            ParameterHashIndex: 0x0
349; SYMS-NEXT:       TypeChkSectNum: 0x0
350; SYMS-DATASECT:        SymbolAlignmentLog2: 2
351; SYMS-DATASECT-NEXT:   SymbolType: XTY_SD (0x1)
352; SYMS-NODATASECT:      SymbolAlignmentLog2: 0
353; SYMS-NODATASECT-NEXT: SymbolType: XTY_LD (0x2)
354; SYMS:            StorageMappingClass: XMC_TL (0x14)
355; SYMS-NEXT:       StabInfoIndex: 0x0
356; SYMS-NEXT:       StabSectNum: 0x0
357; SYMS-NEXT:     }
358; SYMS-NEXT:   }
359
360; SYMS:        Symbol {
361; SYMS-DATASECT:   Index: [[#INDX+20]]
362; SYMS-NODATASECT: Index: [[#INDX+24]]
363; SYMS:          Name: tls_global_long_long_internal_val_initialized
364; SYMS-NEXT:     Value (RelocatableAddress): 0x18
365; SYMS-NEXT:     Section: .tdata
366; SYMS-NEXT:     Type: 0x0
367; SYMS-NEXT:     StorageClass: C_HIDEXT (0x6B)
368; SYMS-NEXT:     NumberOfAuxEntries: 1
369; SYMS-NEXT:     CSECT Auxiliary Entry {
370; SYMS-DATASECT:        Index: [[#INDX+21]]
371; SYMS-DATASECT-NEXT:   SectionLen: 8
372; SYMS-NODATASECT:      Index: [[#INDX+25]]
373; SYMS-NODATASECT-NEXT: ContainingCsectSymbolIndex: [[#INDX+10]]
374; SYMS:            ParameterHashIndex: 0x0
375; SYMS-NEXT:       TypeChkSectNum: 0x0
376; SYMS-DATASECT:        SymbolAlignmentLog2: 3
377; SYMS-DATASECT-NEXT:   SymbolType: XTY_SD (0x1)
378; SYMS-NODATASECT:      SymbolAlignmentLog2: 0
379; SYMS-NODATASECT-NEXT: SymbolType: XTY_LD (0x2)
380; SYMS:            StorageMappingClass: XMC_TL (0x14)
381; SYMS-NEXT:       StabInfoIndex: 0x0
382; SYMS-NEXT:       StabSectNum: 0x0
383; SYMS-NEXT:     }
384; SYMS-NEXT:   }
385
386; SYMS:        Symbol {
387; SYMS-DATASECT:   Index: [[#INDX+22]]
388; SYMS-NODATASECT: Index: [[#INDX+26]]
389; SYMS:          Name: tls_global_long_long_weak_val_initialized
390; SYMS-NEXT:     Value (RelocatableAddress): 0x20
391; SYMS-NEXT:     Section: .tdata
392; SYMS-NEXT:     Type: 0x0
393; SYMS-NEXT:     StorageClass: C_WEAKEXT (0x6F)
394; SYMS-NEXT:     NumberOfAuxEntries: 1
395; SYMS-NEXT:     CSECT Auxiliary Entry {
396; SYMS-DATASECT:        Index: [[#INDX+23]]
397; SYMS-DATASECT-NEXT:   SectionLen: 8
398; SYMS-NODATASECT:      Index: [[#INDX+27]]
399; SYMS-NODATASECT-NEXT: ContainingCsectSymbolIndex: [[#INDX+10]]
400; SYMS:            ParameterHashIndex: 0x0
401; SYMS-NEXT:       TypeChkSectNum: 0x0
402; SYMS-DATASECT:        SymbolAlignmentLog2: 3
403; SYMS-DATASECT-NEXT:   SymbolType: XTY_SD (0x1)
404; SYMS-NODATASECT:      SymbolAlignmentLog2: 0
405; SYMS-NODATASECT-NEXT: SymbolType: XTY_LD (0x2)
406; SYMS:            StorageMappingClass: XMC_TL (0x14)
407; SYMS-NEXT:       StabInfoIndex: 0x0
408; SYMS-NEXT:       StabSectNum: 0x0
409; SYMS-NEXT:     }
410; SYMS-NEXT:   }
411
412; SYMS:        Symbol {
413; SYMS-DATASECT:   Index: [[#INDX+24]]
414; SYMS-NODATASECT: Index: [[#INDX+28]]
415; SYMS:          Name: tls_global_long_long_weak_zero_initialized
416; SYMS-NEXT:     Value (RelocatableAddress): 0x28
417; SYMS-NEXT:     Section: .tdata
418; SYMS-NEXT:     Type: 0x0
419; SYMS-NEXT:     StorageClass: C_WEAKEXT (0x6F)
420; SYMS-NEXT:     NumberOfAuxEntries: 1
421; SYMS-NEXT:     CSECT Auxiliary Entry {
422; SYMS-DATASECT:        Index: [[#INDX+25]]
423; SYMS-DATASECT-NEXT:   SectionLen: 8
424; SYMS-NODATASECT:      Index: [[#INDX+29]]
425; SYMS-NODATASECT-NEXT: ContainingCsectSymbolIndex: [[#INDX+10]]
426; SYMS:            ParameterHashIndex: 0x0
427; SYMS-NEXT:       TypeChkSectNum: 0x0
428; SYMS-DATASECT:        SymbolAlignmentLog2: 3
429; SYMS-DATASECT-NEXT:   SymbolType: XTY_SD (0x1)
430; SYMS-NODATASECT:      SymbolAlignmentLog2: 0
431; SYMS-NODATASECT-NEXT: SymbolType: XTY_LD (0x2)
432; SYMS:            StorageMappingClass: XMC_TL (0x14)
433; SYMS-NEXT:       StabInfoIndex: 0x0
434; SYMS-NEXT:       StabSectNum: 0x0
435; SYMS-NEXT:     }
436; SYMS-NEXT:   }
437
438; SYMS:        Symbol {
439; SYMS-DATASECT:   Index: [[#INDX+26]]
440; SYMS-NODATASECT: Index: [[#INDX+30]]
441; SYMS:          Name: tls_global_int_local_zero_initialized
442; SYMS-NEXT:     Value (RelocatableAddress): 0x30
443; SYMS-NEXT:     Section: .tbss
444; SYMS-NEXT:     Type: 0x0
445; SYMS-NEXT:     StorageClass: C_HIDEXT (0x6B)
446; SYMS-NEXT:     NumberOfAuxEntries: 1
447; SYMS-NEXT:     CSECT Auxiliary Entry {
448; SYMS-DATASECT:   Index: [[#INDX+27]]
449; SYMS-NODATASECT: Index: [[#INDX+31]]
450; SYMS:            SectionLen: 4
451; SYMS-NEXT:       ParameterHashIndex: 0x0
452; SYMS-NEXT:       TypeChkSectNum: 0x0
453; SYMS-NEXT:       SymbolAlignmentLog2: 2
454; SYMS-NEXT:       SymbolType: XTY_CM (0x3)
455; SYMS-NEXT:       StorageMappingClass: XMC_UL (0x15)
456; SYMS-NEXT:       StabInfoIndex: 0x0
457; SYMS-NEXT:       StabSectNum: 0x0
458; SYMS-NEXT:     }
459; SYMS-NEXT:   }
460
461; SYMS:        Symbol {
462; SYMS-DATASECT:   Index: [[#INDX+28]]
463; SYMS-NODATASECT: Index: [[#INDX+32]]
464; SYMS:          Name: tls_global_int_common_zero_initialized
465; SYMS-NEXT:     Value (RelocatableAddress): 0x34
466; SYMS-NEXT:     Section: .tbss
467; SYMS-NEXT:     Type: 0x0
468; SYMS-NEXT:     StorageClass: C_EXT (0x2)
469; SYMS-NEXT:     NumberOfAuxEntries: 1
470; SYMS-NEXT:     CSECT Auxiliary Entry {
471; SYMS-DATASECT:   Index: [[#INDX+29]]
472; SYMS-NODATASECT: Index: [[#INDX+33]]
473; SYMS:            SectionLen: 4
474; SYMS-NEXT:       ParameterHashIndex: 0x0
475; SYMS-NEXT:       TypeChkSectNum: 0x0
476; SYMS-NEXT:       SymbolAlignmentLog2: 2
477; SYMS-NEXT:       SymbolType: XTY_CM (0x3)
478; SYMS-NEXT:       StorageMappingClass: XMC_UL (0x15)
479; SYMS-NEXT:       StabInfoIndex: 0x0
480; SYMS-NEXT:       StabSectNum: 0x0
481; SYMS-NEXT:     }
482; SYMS-NEXT:   }
483
484; SYMS:        Symbol {
485; SYMS-DATASECT:   Index: [[#INDX+30]]
486; SYMS-NODATASECT: Index: [[#INDX+34]]
487; SYMS:          Name: tls_global_double_common_zero_initialized
488; SYMS-NEXT:     Value (RelocatableAddress): 0x38
489; SYMS-NEXT:     Section: .tbss
490; SYMS-NEXT:     Type: 0x0
491; SYMS-NEXT:     StorageClass: C_EXT (0x2)
492; SYMS-NEXT:     NumberOfAuxEntries: 1
493; SYMS-NEXT:     CSECT Auxiliary Entry {
494; SYMS-DATASECT:   Index: [[#INDX+31]]
495; SYMS-NODATASECT: Index: [[#INDX+35]]
496; SYMS:            SectionLen: 8
497; SYMS-NEXT:       ParameterHashIndex: 0x0
498; SYMS-NEXT:       TypeChkSectNum: 0x0
499; SYMS-NEXT:       SymbolAlignmentLog2: 3
500; SYMS-NEXT:       SymbolType: XTY_CM (0x3)
501; SYMS-NEXT:       StorageMappingClass: XMC_UL (0x15)
502; SYMS-NEXT:       StabInfoIndex: 0x0
503; SYMS-NEXT:       StabSectNum: 0x0
504; SYMS-NEXT:     }
505; SYMS-NEXT:   }
506
507; SYMS:        Symbol {
508; SYMS-DATASECT:   Index: [[#INDX+32]]
509; SYMS-NODATASECT: Index: [[#INDX+36]]
510; SYMS:          Name: tls_global_long_long_internal_zero_initialized
511; SYMS-NEXT:     Value (RelocatableAddress): 0x40
512; SYMS-NEXT:     Section: .tbss
513; SYMS-NEXT:     Type: 0x0
514; SYMS-NEXT:     StorageClass: C_HIDEXT (0x6B)
515; SYMS-NEXT:     NumberOfAuxEntries: 1
516; SYMS-NEXT:     CSECT Auxiliary Entry {
517; SYMS-DATASECT:   Index: [[#INDX+33]]
518; SYMS-NODATASECT: Index: [[#INDX+37]]
519; SYMS:            SectionLen: 8
520; SYMS-NEXT:       ParameterHashIndex: 0x0
521; SYMS-NEXT:       TypeChkSectNum: 0x0
522; SYMS-NEXT:       SymbolAlignmentLog2: 3
523; SYMS-NEXT:       SymbolType: XTY_CM (0x3)
524; SYMS-NEXT:       StorageMappingClass: XMC_UL (0x15)
525; SYMS-NEXT:       StabInfoIndex: 0x0
526; SYMS-NEXT:       StabSectNum: 0x0
527; SYMS-NEXT:     }
528; SYMS-NEXT:   }
529
530
531; OBJDUMP-DATASECT:        Disassembly of section .text:
532; OBJDUMP-DATASECT-EMPTY:
533; OBJDUMP-DATASECT-NEXT:   00000000 (idx: [[#NFA+7]]) const_ivar[RO]:
534; OBJDUMP-DATASECT-NEXT:   0: 00 00 00 06   <unknown>
535; OBJDUMP-DATASECT-EMPTY:
536; OBJDUMP-DATASECT-NEXT:   Disassembly of section .tdata:
537; OBJDUMP-DATASECT-EMPTY:
538; OBJDUMP-DATASECT-NEXT:   00000000 (idx: [[#NFA+11]]) tls_global_alias_int_external_val_initialized:
539; OBJDUMP-DATASECT-NEXT:   0: 00 00 00 01   <unknown>
540; OBJDUMP-DATASECT-EMPTY:
541; OBJDUMP-DATASECT-NEXT:   00000004 (idx: [[#NFA+13]]) tls_global_int_external_zero_initialized[TL]:
542; OBJDUMP-DATASECT-NEXT:   4: 00 00 00 00   <unknown>
543; OBJDUMP-DATASECT-EMPTY:
544; OBJDUMP-DATASECT-NEXT:   00000008 (idx: [[#NFA+15]]) tls_global_int_local_val_initialized[TL]:
545; OBJDUMP-DATASECT-NEXT:   8: 00 00 00 02   <unknown>
546; OBJDUMP-DATASECT-EMPTY:
547; OBJDUMP-DATASECT-NEXT:   0000000c (idx: [[#NFA+17]]) tls_global_int_weak_zero_initialized[TL]:
548; OBJDUMP-DATASECT-NEXT:   c: 00 00 00 00   <unknown>
549; OBJDUMP-DATASECT-EMPTY:
550; OBJDUMP-DATASECT-NEXT:   00000010 (idx: [[#NFA+19]]) tls_global_int_weak_val_initialized[TL]:
551; OBJDUMP-DATASECT-NEXT:   10: 00 00 00 01   <unknown>
552; OBJDUMP-DATASECT-NEXT:   14: 00 00 00 00   <unknown>
553; OBJDUMP-DATASECT-EMPTY:
554; OBJDUMP-DATASECT-NEXT:   00000018 (idx: [[#NFA+21]]) tls_global_long_long_internal_val_initialized[TL]:
555; OBJDUMP-DATASECT-NEXT:   18: 00 00 00 00   <unknown>
556; OBJDUMP-DATASECT-NEXT:   1c: 00 00 00 01   <unknown>
557; OBJDUMP-DATASECT-EMPTY:
558; OBJDUMP-DATASECT-NEXT:   00000020 (idx: [[#NFA+23]]) tls_global_long_long_weak_val_initialized[TL]:
559; OBJDUMP-DATASECT-NEXT:   20: 00 00 00 00   <unknown>
560; OBJDUMP-DATASECT-NEXT:   24: 00 00 00 01   <unknown>
561; OBJDUMP-DATASECT-EMPTY:
562; OBJDUMP-DATASECT-NEXT:   00000028 (idx: [[#NFA+25]]) tls_global_long_long_weak_zero_initialized[TL]:
563; OBJDUMP-DATASECT-NEXT:   ...
564; OBJDUMP-DATASECT-EMPTY:
565
566; OBJDUMP-DATASECT-NEXT:   Disassembly of section .tbss:
567; OBJDUMP-DATASECT-EMPTY:
568; OBJDUMP-DATASECT-NEXT:   00000030 (idx: [[#NFA+27]]) tls_global_int_local_zero_initialized[UL]:
569; OBJDUMP-DATASECT-NEXT:   ...
570; OBJDUMP-DATASECT-EMPTY:
571; OBJDUMP-DATASECT-NEXT:   00000034 (idx: [[#NFA+29]]) tls_global_int_common_zero_initialized[UL]:
572; OBJDUMP-DATASECT-NEXT:   ...
573; OBJDUMP-DATASECT-EMPTY:
574; OBJDUMP-DATASECT-NEXT:   00000038 (idx: [[#NFA+31]]) tls_global_double_common_zero_initialized[UL]
575; OBJDUMP-DATASECT-NEXT:   ...
576; OBJDUMP-DATASECT-EMPTY:
577; OBJDUMP-DATASECT-NEXT:   00000040 (idx: [[#NFA+33]]) tls_global_long_long_internal_zero_initialized[UL]:
578; OBJDUMP-DATASECT-NEXT:   ...
579
580; OBJDUMP-NODATASECT:       Disassembly of section .text:
581; OBJDUMP-NODATASECT-EMPTY:
582; OBJDUMP-NODATASECT-NEXT:  00000000 (idx: [[#NFA+9]]) const_ivar:
583; OBJDUMP-NODATASECT-NEXT:  0: 00 00 00 06   <unknown>
584; OBJDUMP-NODATASECT-EMPTY:
585; OBJDUMP-NODATASECT-NEXT:  Disassembly of section .tdata:
586; OBJDUMP-NODATASECT-EMPTY:
587; OBJDUMP-NODATASECT:       00000000 (idx: [[#NFA+13]]) tls_global_int_external_val_initialized:
588; OBJDUMP-NODATASECT-NEXT:  0: 00 00 00 01   <unknown>
589; OBJDUMP-NODATASECT-EMPTY:
590; OBJDUMP-NODATASECT-NEXT:  00000004 (idx: [[#NFA+17]]) tls_global_int_external_zero_initialized:
591; OBJDUMP-NODATASECT-NEXT:  4: 00 00 00 00   <unknown>
592; OBJDUMP-NODATASECT-EMPTY:
593; OBJDUMP-NODATASECT-NEXT:  00000008 (idx: [[#NFA+19]]) tls_global_int_local_val_initialized:
594; OBJDUMP-NODATASECT-NEXT:  8: 00 00 00 02   <unknown>
595; OBJDUMP-NODATASECT-EMPTY:
596; OBJDUMP-NODATASECT-NEXT:  0000000c (idx: [[#NFA+21]]) tls_global_int_weak_zero_initialized:
597; OBJDUMP-NODATASECT-NEXT:  c: 00 00 00 00   <unknown>
598; OBJDUMP-NODATASECT-EMPTY:
599; OBJDUMP-NODATASECT-NEXT:  00000010 (idx: [[#NFA+23]]) tls_global_int_weak_val_initialized:
600; OBJDUMP-NODATASECT-NEXT:  10: 00 00 00 01   <unknown>
601; OBJDUMP-NODATASECT-NEXT:  14: 00 00 00 00   <unknown>
602; OBJDUMP-NODATASECT-EMPTY:
603; OBJDUMP-NODATASECT-NEXT:  00000018 (idx: [[#NFA+25]]) tls_global_long_long_internal_val_initialized:
604; OBJDUMP-NODATASECT-NEXT:  18: 00 00 00 00   <unknown>
605; OBJDUMP-NODATASECT-NEXT:  1c: 00 00 00 01   <unknown>
606; OBJDUMP-NODATASECT-EMPTY:
607; OBJDUMP-NODATASECT-NEXT:  00000020 (idx: [[#NFA+27]]) tls_global_long_long_weak_val_initialized:
608; OBJDUMP-NODATASECT-NEXT:  20: 00 00 00 00   <unknown>
609; OBJDUMP-NODATASECT-NEXT:  24: 00 00 00 01   <unknown>
610; OBJDUMP-NODATASECT-EMPTY:
611; OBJDUMP-NODATASECT-NEXT:  00000028 (idx: [[#NFA+29]]) tls_global_long_long_weak_zero_initialized:
612; OBJDUMP-NODATASECT-NEXT:  ...
613; OBJDUMP-NODATASECT-EMPTY:
614
615; OBJDUMP-NODATASECT-NEXT:  Disassembly of section .tbss:
616; OBJDUMP-NODATASECT-EMPTY:
617; OBJDUMP-NODATASECT-NEXT:  00000030 (idx: [[#NFA+31]]) tls_global_int_local_zero_initialized[UL]:
618; OBJDUMP-NODATASECT-NEXT:  ...
619; OBJDUMP-NODATASECT-EMPTY:
620; OBJDUMP-NODATASECT-NEXT:  00000034 (idx: [[#NFA+33]]) tls_global_int_common_zero_initialized[UL]:
621; OBJDUMP-NODATASECT-NEXT:  ...
622; OBJDUMP-NODATASECT-EMPTY:
623; OBJDUMP-NODATASECT-NEXT:  00000038 (idx: [[#NFA+35]]) tls_global_double_common_zero_initialized[UL]:
624; OBJDUMP-NODATASECT-NEXT:  ...
625; OBJDUMP-NODATASECT-EMPTY:
626; OBJDUMP-NODATASECT-NEXT:  00000040 (idx: [[#NFA+37]]) tls_global_long_long_internal_zero_initialized[UL]:
627; OBJDUMP-NODATASECT-NEXT:  ...
628
629@tls_global_int_external_val_initialized = thread_local global i32 1, align 4
630@tls_global_int_external_zero_initialized = thread_local global i32 0, align 4
631@tls_global_int_local_val_initialized = internal thread_local global i32 2, align 4
632@tls_global_int_local_zero_initialized = internal thread_local global i32 0, align 4
633@tls_global_int_weak_zero_initialized = weak thread_local global i32 0, align 4
634@tls_global_int_common_zero_initialized = common thread_local global i32 0, align 4
635@tls_global_int_weak_val_initialized = weak thread_local global i32 1, align 4
636@tls_global_int_external_uninitialized = external thread_local global i32, align 4
637@tls_global_double_common_zero_initialized = common thread_local global double 0.000000e+00, align 8
638@tls_global_double_external_uninitialized = external thread_local global i64, align 8
639@tls_global_long_long_internal_val_initialized = internal thread_local global i64 1, align 8
640@tls_global_long_long_internal_zero_initialized = internal thread_local global i64 0, align 8
641@tls_global_long_long_weak_val_initialized = weak thread_local global i64 1, align 8
642@tls_global_long_long_weak_zero_initialized = weak thread_local global i64 0, align 8
643@tls_global_alias_int_external_val_initialized = thread_local alias i32, ptr @tls_global_int_external_val_initialized
644@const_ivar = constant i32 6, align 4
645