xref: /llvm-project/llvm/test/CodeGen/PowerPC/aix-xcoff-reloc.ll (revision f31099ce581d33fdb64e35fee4b56d0a1145cab1)
1; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc-ibm-aix-xcoff -mattr=-altivec \
2; RUN:     -xcoff-traceback-table=false -data-sections=false -filetype=obj -o %t.o < %s
3; RUN: llvm-readobj --section-headers --file-header %t.o | FileCheck -D#NFA=2 --check-prefixes=OBJ,OBJ32 %s
4; RUN: llvm-readobj --relocs --expand-relocs %t.o | FileCheck -D#NFA=2 --check-prefixes=RELOC,RELOC32 %s
5; RUN: llvm-readobj --syms %t.o | FileCheck -D#NFA=2 --check-prefixes=SYM,SYM32 %s
6; RUN: llvm-objdump -D %t.o | FileCheck --check-prefix=DIS %s
7; RUN: llvm-objdump -r %t.o | FileCheck --check-prefix=DIS_REL %s
8
9; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc64-ibm-aix-xcoff -mattr=-altivec \
10; RUN:     -xcoff-traceback-table=false -data-sections=false -filetype=obj -o %t64.o < %s
11; RUN: llvm-readobj --section-headers --file-header %t64.o | FileCheck -D#NFA=2 --check-prefixes=OBJ,OBJ64 %s
12; RUN: llvm-readobj --relocs --expand-relocs %t64.o | FileCheck -D#NFA=2 --check-prefixes=RELOC,RELOC64 %s
13; RUN: llvm-readobj --syms %t64.o | FileCheck -D#NFA=2 --check-prefixes=SYM,SYM64 %s
14; RUN: llvm-objdump -D %t64.o | FileCheck --check-prefix=DIS64 %s
15; RUN: llvm-objdump -r %t64.o | FileCheck --check-prefix=DIS_REL64 %s
16
17@globalA = global i32 1, align 4
18@globalB = global i32 2, align 4
19@arr = global <{ i32, [9 x i32] }> <{ i32 3, [9 x i32] zeroinitializer }>, align 4
20@p = global ptr getelementptr (i8, ptr @arr, i64 16), align 4
21
22define i32 @foo() {
23entry:
24  %call = call i32 @bar(i32 1)
25  %0 = load i32, ptr @globalA, align 4
26  %add = add nsw i32 %call, %0
27  %1 = load i32, ptr @globalB, align 4
28  %add1 = add nsw i32 %add, %1
29  ret i32 %add1
30}
31
32declare i32 @bar(i32)
33
34; OBJ:        FileHeader {
35; OBJ32-NEXT:   Magic: 0x1DF
36; OBJ64-NEXT:   Magic: 0x1F7
37; OBJ-NEXT:     NumberOfSections: 2
38; OBJ-NEXT:     TimeStamp: None (0x0)
39; OBJ32-NEXT:   SymbolTableOffset: 0x13C
40; OBJ64-NEXT:   SymbolTableOffset: 0x1B8
41; OBJ-NEXT:     SymbolTableEntries: [[#NFA+25]]
42; OBJ-NEXT:     OptionalHeaderSize: 0x0
43; OBJ-NEXT:     Flags: 0x0
44; OBJ-NEXT:   }
45; OBJ-NEXT: Sections [
46; OBJ-NEXT:   Section {
47; OBJ-NEXT:     Index: 1
48; OBJ-NEXT:     Name: .text
49; OBJ-NEXT:     PhysicalAddress: 0x0
50; OBJ-NEXT:     VirtualAddress: 0x0
51; OBJ-NEXT:     Size: 0x40
52; OBJ32-NEXT:   RawDataOffset: 0x64
53; OBJ32-NEXT:   RelocationPointer: 0xEC
54; OBJ64-NEXT:   RawDataOffset: 0xA8
55; OBJ64-NEXT:   RelocationPointer: 0x148
56; OBJ-NEXT:     LineNumberPointer: 0x0
57; OBJ-NEXT:     NumberOfRelocations: 3
58; OBJ-NEXT:     NumberOfLineNumbers: 0
59; OBJ-NEXT:     Type: STYP_TEXT (0x20)
60; OBJ-NEXT:   }
61; OBJ-NEXT:   Section {
62; OBJ-NEXT:     Index: 2
63; OBJ-NEXT:     Name: .data
64; OBJ-NEXT:     PhysicalAddress: 0x40
65; OBJ-NEXT:     VirtualAddress: 0x40
66; OBJ32-NEXT:   Size: 0x48
67; OBJ32-NEXT:   RawDataOffset: 0xA4
68; OBJ32-NEXT:   RelocationPointer: 0x10A
69; OBJ64-NEXT:   Size: 0x60
70; OBJ64-NEXT:   RawDataOffset: 0xE8
71; OBJ64-NEXT:   RelocationPointer: 0x172
72; OBJ-NEXT:     LineNumberPointer: 0x0
73; OBJ-NEXT:     NumberOfRelocations: 5
74; OBJ-NEXT:     NumberOfLineNumbers: 0
75; OBJ-NEXT:     Type: STYP_DATA (0x40)
76; OBJ-NEXT:   }
77; OBJ-NEXT: ]
78
79; RELOC:      Relocations [
80; RELOC-NEXT:   Section (index: 1) .text {
81; RELOC-NEXT:     Relocation {
82; RELOC-NEXT:       Virtual Address: 0x10
83; RELOC-NEXT:       Symbol: .bar ([[#NFA+1]])
84; RELOC-NEXT:       IsSigned: Yes
85; RELOC-NEXT:       FixupBitValue: 0
86; RELOC-NEXT:       Length: 26
87; RELOC-NEXT:       Type: R_RBR (0x1A)
88; RELOC-NEXT:     }
89; RELOC-NEXT:     Relocation {
90; RELOC-NEXT:       Virtual Address: 0x1A
91; RELOC-NEXT:       Symbol: globalA ([[#NFA+21]])
92; RELOC-NEXT:       IsSigned: No
93; RELOC-NEXT:       FixupBitValue: 0
94; RELOC-NEXT:       Length: 16
95; RELOC-NEXT:       Type: R_TOC (0x3)
96; RELOC-NEXT:     }
97; RELOC-NEXT:     Relocation {
98; RELOC-NEXT:       Virtual Address: 0x1E
99; RELOC-NEXT:       Symbol: globalB ([[#NFA+23]])
100; RELOC-NEXT:       IsSigned: No
101; RELOC-NEXT:       FixupBitValue: 0
102; RELOC-NEXT:       Length: 16
103; RELOC-NEXT:       Type: R_TOC (0x3)
104; RELOC-NEXT:     }
105; RELOC-NEXT:   }
106; RELOC-NEXT:   Section (index: 2) .data {
107; RELOC-NEXT:     Relocation {
108; RELOC-NEXT:       Virtual Address: 0x70
109; RELOC-NEXT:       Symbol: arr ([[#NFA+13]])
110; RELOC-NEXT:       IsSigned: No
111; RELOC-NEXT:       FixupBitValue: 0
112; RELOC32-NEXT:     Length: 32
113; RELOC64-NEXT:     Length: 64
114; RELOC-NEXT:       Type: R_POS (0x0)
115; RELOC-NEXT:     }
116; RELOC-NEXT:     Relocation {
117; RELOC32-NEXT:     Virtual Address: 0x74
118; RELOC64-NEXT:     Virtual Address: 0x78
119; RELOC-NEXT:       Symbol: .foo ([[#NFA+5]])
120; RELOC-NEXT:       IsSigned: No
121; RELOC-NEXT:       FixupBitValue: 0
122; RELOC32-NEXT:     Length: 32
123; RELOC64-NEXT:     Length: 64
124; RELOC-NEXT:       Type: R_POS (0x0)
125; RELOC-NEXT:     }
126; RELOC-NEXT:     Relocation {
127; RELOC32-NEXT:     Virtual Address: 0x78
128; RELOC64-NEXT:     Virtual Address: 0x80
129; RELOC-NEXT:       Symbol: TOC ([[#NFA+19]])
130; RELOC-NEXT:       IsSigned: No
131; RELOC-NEXT:       FixupBitValue: 0
132; RELOC32-NEXT:     Length: 32
133; RELOC64-NEXT:     Length: 64
134; RELOC-NEXT:       Type: R_POS (0x0)
135; RELOC-NEXT:     }
136; RELOC-NEXT:     Relocation {
137; RELOC32-NEXT:     Virtual Address: 0x80
138; RELOC64-NEXT:     Virtual Address: 0x90
139; RELOC-NEXT:       Symbol: globalA ([[#NFA+9]])
140; RELOC-NEXT:       IsSigned: No
141; RELOC-NEXT:       FixupBitValue: 0
142; RELOC32-NEXT:     Length: 32
143; RELOC64-NEXT:     Length: 64
144; RELOC-NEXT:       Type: R_POS (0x0)
145; RELOC-NEXT:     }
146; RELOC-NEXT:     Relocation {
147; RELOC32-NEXT:     Virtual Address: 0x84
148; RELOC64-NEXT:     Virtual Address: 0x98
149; RELOC-NEXT:       Symbol: globalB ([[#NFA+11]])
150; RELOC-NEXT:       IsSigned: No
151; RELOC-NEXT:       FixupBitValue: 0
152; RELOC32-NEXT:     Length: 32
153; RELOC64-NEXT:     Length: 64
154; RELOC-NEXT:       Type: R_POS (0x0)
155; RELOC-NEXT:     }
156; RELOC-NEXT:   }
157; RELOC-NEXT: ]
158
159; SYM:      Symbols [
160; SYM-NEXT:   Symbol {
161; SYM-NEXT:     Index: 0
162; SYM-NEXT:     Name: .file
163; SYM-NEXT:     Value (SymbolTableIndex): 0x0
164; SYM-NEXT:     Section: N_DEBUG
165; SYM-NEXT:     Source Language ID: TB_CPLUSPLUS (0x9)
166; SYM-NEXT:     CPU Version ID: TCPU_COM (0x3)
167; SYM-NEXT:     StorageClass: C_FILE (0x67)
168; SYM-NEXT:     NumberOfAuxEntries: 2
169; SYM-NEXT:     File Auxiliary Entry {
170; SYM-NEXT:       Index: 1
171; SYM-NEXT:       Name: <stdin>
172; SYM-NEXT:       Type: XFT_FN (0x0)
173; SYM64-NEXT:     Auxiliary Type: AUX_FILE (0xFC)
174; SYM-NEXT:     }
175; SYM-NEXT:     File Auxiliary Entry {
176; SYM-NEXT:       Index: 2
177; SYM-NEXT:       Name: LLVM
178; SYM-NEXT:       Type: XFT_CV (0x2)
179; SYM64-NEXT:     Auxiliary Type: AUX_FILE (0xFC)
180; SYM-NEXT:     }
181; SYM-NEXT:   }
182; SYM-NEXT:   Symbol {
183; SYM-NEXT:     Index: [[#INDX:]]
184; SYM-NEXT:     Name: .bar
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: [[#INDX+1]]
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; SYM32-NEXT:     StabInfoIndex: 0x0
199; SYM32-NEXT:     StabSectNum: 0x0
200; SYM64-NEXT:     Auxiliary Type: AUX_CSECT (0xFB)
201; SYM-NEXT:     }
202; SYM-NEXT:   }
203; SYM-NEXT:   Symbol {
204; SYM-NEXT:     Index: [[#INDX+2]]
205; SYM-NEXT:     Name:
206; SYM-NEXT:     Value (RelocatableAddress): 0x0
207; SYM-NEXT:     Section: .text
208; SYM-NEXT:     Type: 0x0
209; SYM-NEXT:     StorageClass: C_HIDEXT (0x6B)
210; SYM-NEXT:     NumberOfAuxEntries: 1
211; SYM-NEXT:     CSECT Auxiliary Entry {
212; SYM-NEXT:       Index: [[#INDX+3]]
213; SYM-NEXT:       SectionLen: 64
214; SYM-NEXT:       ParameterHashIndex: 0x0
215; SYM-NEXT:       TypeChkSectNum: 0x0
216; SYM-NEXT:       SymbolAlignmentLog2: 5
217; SYM-NEXT:       SymbolType: XTY_SD (0x1)
218; SYM-NEXT:       StorageMappingClass: XMC_PR (0x0)
219; SYM32-NEXT:     StabInfoIndex: 0x0
220; SYM32-NEXT:     StabSectNum: 0x0
221; SYM64-NEXT:     Auxiliary Type: AUX_CSECT (0xFB)
222; SYM-NEXT:     }
223; SYM-NEXT:   }
224; SYM-NEXT:   Symbol {
225; SYM-NEXT:     Index: [[#INDX+4]]
226; SYM-NEXT:     Name: .foo
227; SYM-NEXT:     Value (RelocatableAddress): 0x0
228; SYM-NEXT:     Section: .text
229; SYM-NEXT:     Type: 0x0
230; SYM-NEXT:     StorageClass: C_EXT (0x2)
231; SYM-NEXT:     NumberOfAuxEntries: 1
232; SYM-NEXT:     CSECT Auxiliary Entry {
233; SYM-NEXT:       Index: [[#INDX+5]]
234; SYM-NEXT:       ContainingCsectSymbolIndex: [[#INDX+2]]
235; SYM-NEXT:       ParameterHashIndex: 0x0
236; SYM-NEXT:       TypeChkSectNum: 0x0
237; SYM-NEXT:       SymbolAlignmentLog2: 0
238; SYM-NEXT:       SymbolType: XTY_LD (0x2)
239; SYM-NEXT:       StorageMappingClass: XMC_PR (0x0)
240; SYM32-NEXT:     StabInfoIndex: 0x0
241; SYM32-NEXT:     StabSectNum: 0x0
242; SYM64-NEXT:     Auxiliary Type: AUX_CSECT (0xFB)
243; SYM-NEXT:     }
244; SYM-NEXT:   }
245; SYM-NEXT:   Symbol {
246; SYM-NEXT:     Index: [[#INDX+6]]
247; SYM-NEXT:     Name: .data
248; SYM-NEXT:     Value (RelocatableAddress): 0x40
249; SYM-NEXT:     Section: .data
250; SYM-NEXT:     Type: 0x0
251; SYM-NEXT:     StorageClass: C_HIDEXT (0x6B)
252; SYM-NEXT:     NumberOfAuxEntries: 1
253; SYM-NEXT:     CSECT Auxiliary Entry {
254; SYM-NEXT:       Index: [[#INDX+7]]
255; SYM32-NEXT:     SectionLen: 52
256; SYM64-NEXT:     SectionLen: 56
257; SYM-NEXT:       ParameterHashIndex: 0x0
258; SYM-NEXT:       TypeChkSectNum: 0x0
259; SYM32-NEXT:     SymbolAlignmentLog2: 2
260; SYM64-NEXT:     SymbolAlignmentLog2: 3
261; SYM-NEXT:       SymbolType: XTY_SD (0x1)
262; SYM-NEXT:       StorageMappingClass: XMC_RW (0x5)
263; SYM32-NEXT:     StabInfoIndex: 0x0
264; SYM32-NEXT:     StabSectNum: 0x0
265; SYM64-NEXT:     Auxiliary Type: AUX_CSECT (0xFB)
266; SYM-NEXT:     }
267; SYM-NEXT:   }
268; SYM-NEXT:   Symbol {
269; SYM-NEXT:     Index: [[#INDX+8]]
270; SYM-NEXT:     Name: globalA
271; SYM-NEXT:     Value (RelocatableAddress): 0x40
272; SYM-NEXT:     Section: .data
273; SYM-NEXT:     Type: 0x0
274; SYM-NEXT:     StorageClass: C_EXT (0x2)
275; SYM-NEXT:     NumberOfAuxEntries: 1
276; SYM-NEXT:     CSECT Auxiliary Entry {
277; SYM-NEXT:       Index: [[#INDX+9]]
278; SYM-NEXT:       ContainingCsectSymbolIndex: [[#INDX+6]]
279; SYM-NEXT:       ParameterHashIndex: 0x0
280; SYM-NEXT:       TypeChkSectNum: 0x0
281; SYM-NEXT:       SymbolAlignmentLog2: 0
282; SYM-NEXT:       SymbolType: XTY_LD (0x2)
283; SYM-NEXT:       StorageMappingClass: XMC_RW (0x5)
284; SYM32-NEXT:     StabInfoIndex: 0x0
285; SYM32-NEXT:     StabSectNum: 0x0
286; SYM64-NEXT:     Auxiliary Type: AUX_CSECT (0xFB)
287; SYM-NEXT:     }
288; SYM-NEXT:   }
289; SYM-NEXT:   Symbol {
290; SYM-NEXT:     Index: [[#INDX+10]]
291; SYM-NEXT:     Name: globalB
292; SYM-NEXT:     Value (RelocatableAddress): 0x44
293; SYM-NEXT:     Section: .data
294; SYM-NEXT:     Type: 0x0
295; SYM-NEXT:     StorageClass: C_EXT (0x2)
296; SYM-NEXT:     NumberOfAuxEntries: 1
297; SYM-NEXT:     CSECT Auxiliary Entry {
298; SYM-NEXT:       Index: [[#INDX+11]]
299; SYM-NEXT:       ContainingCsectSymbolIndex: [[#INDX+6]]
300; SYM-NEXT:       ParameterHashIndex: 0x0
301; SYM-NEXT:       TypeChkSectNum: 0x0
302; SYM-NEXT:       SymbolAlignmentLog2: 0
303; SYM-NEXT:       SymbolType: XTY_LD (0x2)
304; SYM-NEXT:       StorageMappingClass: XMC_RW (0x5)
305; SYM32-NEXT:     StabInfoIndex: 0x0
306; SYM32-NEXT:     StabSectNum: 0x0
307; SYM64-NEXT:     Auxiliary Type: AUX_CSECT (0xFB)
308; SYM-NEXT:     }
309; SYM-NEXT:   }
310; SYM-NEXT:   Symbol {
311; SYM-NEXT:     Index: [[#INDX+12]]
312; SYM-NEXT:     Name: arr
313; SYM-NEXT:     Value (RelocatableAddress): 0x48
314; SYM-NEXT:     Section: .data
315; SYM-NEXT:     Type: 0x0
316; SYM-NEXT:     StorageClass: C_EXT (0x2)
317; SYM-NEXT:     NumberOfAuxEntries: 1
318; SYM-NEXT:     CSECT Auxiliary Entry {
319; SYM-NEXT:       Index: [[#INDX+13]]
320; SYM-NEXT:       ContainingCsectSymbolIndex: [[#INDX+6]]
321; SYM-NEXT:       ParameterHashIndex: 0x0
322; SYM-NEXT:       TypeChkSectNum: 0x0
323; SYM-NEXT:       SymbolAlignmentLog2: 0
324; SYM-NEXT:       SymbolType: XTY_LD (0x2)
325; SYM-NEXT:       StorageMappingClass: XMC_RW (0x5)
326; SYM32-NEXT:     StabInfoIndex: 0x0
327; SYM32-NEXT:     StabSectNum: 0x0
328; SYM64-NEXT:     Auxiliary Type: AUX_CSECT (0xFB)
329; SYM-NEXT:     }
330; SYM-NEXT:   }
331; SYM-NEXT:   Symbol {
332; SYM-NEXT:     Index: [[#INDX+14]]
333; SYM-NEXT:     Name: p
334; SYM-NEXT:     Value (RelocatableAddress): 0x70
335; SYM-NEXT:     Section: .data
336; SYM-NEXT:     Type: 0x0
337; SYM-NEXT:     StorageClass: C_EXT (0x2)
338; SYM-NEXT:     NumberOfAuxEntries: 1
339; SYM-NEXT:     CSECT Auxiliary Entry {
340; SYM-NEXT:       Index: [[#INDX+15]]
341; SYM-NEXT:       ContainingCsectSymbolIndex: [[#INDX+6]]
342; SYM-NEXT:       ParameterHashIndex: 0x0
343; SYM-NEXT:       TypeChkSectNum: 0x0
344; SYM-NEXT:       SymbolAlignmentLog2: 0
345; SYM-NEXT:       SymbolType: XTY_LD (0x2)
346; SYM-NEXT:       StorageMappingClass: XMC_RW (0x5)
347; SYM32-NEXT:     StabInfoIndex: 0x0
348; SYM32-NEXT:     StabSectNum: 0x0
349; SYM64-NEXT:     Auxiliary Type: AUX_CSECT (0xFB)
350; SYM-NEXT:     }
351; SYM-NEXT:   }
352; SYM-NEXT:   Symbol {
353; SYM-NEXT:     Index: [[#INDX+16]]
354; SYM-NEXT:     Name: foo
355; SYM32-NEXT:   Value (RelocatableAddress): 0x74
356; SYM64-NEXT:   Value (RelocatableAddress): 0x78
357; SYM-NEXT:     Section: .data
358; SYM-NEXT:     Type: 0x0
359; SYM-NEXT:     StorageClass: C_EXT (0x2)
360; SYM-NEXT:     NumberOfAuxEntries: 1
361; SYM-NEXT:     CSECT Auxiliary Entry {
362; SYM-NEXT:       Index: [[#INDX+17]]
363; SYM32-NEXT:     SectionLen: 12
364; SYM64-NEXT:     SectionLen: 24
365; SYM-NEXT:       ParameterHashIndex: 0x0
366; SYM-NEXT:       TypeChkSectNum: 0x0
367; SYM32-NEXT:     SymbolAlignmentLog2: 2
368; SYM64-NEXT:     SymbolAlignmentLog2: 3
369; SYM-NEXT:       SymbolType: XTY_SD (0x1)
370; SYM-NEXT:       StorageMappingClass: XMC_DS (0xA)
371; SYM32-NEXT:     StabInfoIndex: 0x0
372; SYM32-NEXT:     StabSectNum: 0x0
373; SYM64-NEXT:     Auxiliary Type: AUX_CSECT (0xFB)
374; SYM-NEXT:     }
375; SYM-NEXT:   }
376; SYM-NEXT:   Symbol {
377; SYM-NEXT:     Index: [[#INDX+18]]
378; SYM-NEXT:     Name: TOC
379; SYM32-NEXT:   Value (RelocatableAddress): 0x80
380; SYM64-NEXT:   Value (RelocatableAddress): 0x90
381; SYM-NEXT:     Section: .data
382; SYM-NEXT:     Type: 0x0
383; SYM-NEXT:     StorageClass: C_HIDEXT (0x6B)
384; SYM-NEXT:     NumberOfAuxEntries: 1
385; SYM-NEXT:     CSECT Auxiliary Entry {
386; SYM-NEXT:       Index: [[#INDX+19]]
387; SYM-NEXT:       SectionLen: 0
388; SYM-NEXT:       ParameterHashIndex: 0x0
389; SYM-NEXT:       TypeChkSectNum: 0x0
390; SYM-NEXT:       SymbolAlignmentLog2: 2
391; SYM-NEXT:       SymbolType: XTY_SD (0x1)
392; SYM-NEXT:       StorageMappingClass: XMC_TC0 (0xF)
393; SYM32-NEXT:     StabInfoIndex: 0x0
394; SYM32-NEXT:     StabSectNum: 0x0
395; SYM64-NEXT:     Auxiliary Type: AUX_CSECT (0xFB)
396; SYM-NEXT:     }
397; SYM-NEXT:   }
398; SYM-NEXT:   Symbol {
399; SYM-NEXT:     Index: [[#INDX+20]]
400; SYM-NEXT:     Name: globalA
401; SYM32-NEXT:   Value (RelocatableAddress): 0x80
402; SYM64-NEXT:   Value (RelocatableAddress): 0x90
403; SYM-NEXT:     Section: .data
404; SYM-NEXT:     Type: 0x0
405; SYM-NEXT:     StorageClass: C_HIDEXT (0x6B)
406; SYM-NEXT:     NumberOfAuxEntries: 1
407; SYM-NEXT:     CSECT Auxiliary Entry {
408; SYM-NEXT:       Index: [[#INDX+21]]
409; SYM32-NEXT:     SectionLen: 4
410; SYM64-NEXT:     SectionLen: 8
411; SYM-NEXT:       ParameterHashIndex: 0x0
412; SYM-NEXT:       TypeChkSectNum: 0x0
413; SYM32-NEXT:     SymbolAlignmentLog2: 2
414; SYM64-NEXT:     SymbolAlignmentLog2: 3
415; SYM-NEXT:       SymbolType: XTY_SD (0x1)
416; SYM-NEXT:       StorageMappingClass: XMC_TC (0x3)
417; SYM32-NEXT:     StabInfoIndex: 0x0
418; SYM32-NEXT:     StabSectNum: 0x0
419; SYM64-NEXT:     Auxiliary Type: AUX_CSECT (0xFB)
420; SYM-NEXT:     }
421; SYM-NEXT:   }
422; SYM-NEXT:   Symbol {
423; SYM-NEXT:     Index: [[#INDX+22]]
424; SYM-NEXT:     Name: globalB
425; SYM32-NEXT:   Value (RelocatableAddress): 0x84
426; SYM64-NEXT:   Value (RelocatableAddress): 0x98
427; SYM-NEXT:     Section: .data
428; SYM-NEXT:     Type: 0x0
429; SYM-NEXT:     StorageClass: C_HIDEXT (0x6B)
430; SYM-NEXT:     NumberOfAuxEntries: 1
431; SYM-NEXT:     CSECT Auxiliary Entry {
432; SYM-NEXT:       Index: [[#INDX+23]]
433; SYM32-NEXT:     SectionLen: 4
434; SYM64-NEXT:     SectionLen: 8
435; SYM-NEXT:       ParameterHashIndex: 0x0
436; SYM-NEXT:       TypeChkSectNum: 0x0
437; SYM32-NEXT:     SymbolAlignmentLog2: 2
438; SYM64-NEXT:     SymbolAlignmentLog2: 3
439; SYM-NEXT:       SymbolType: XTY_SD (0x1)
440; SYM-NEXT:       StorageMappingClass: XMC_TC (0x3)
441; SYM32-NEXT:     StabInfoIndex: 0x0
442; SYM32-NEXT:     StabSectNum: 0x0
443; SYM64-NEXT:     Auxiliary Type: AUX_CSECT (0xFB)
444; SYM-NEXT:     }
445; SYM-NEXT:   }
446; SYM-NEXT: ]
447
448
449; DIS:      :   file format aixcoff-rs6000
450; DIS:      Disassembly of section .text:
451; DIS:      00000000 <.foo>:
452; DIS-NEXT:        0: 7c 08 02 a6                   mflr 0
453; DIS-NEXT:        4: 94 21 ff c0                   stwu 1, -64(1)
454; DIS-NEXT:        8: 38 60 00 01                   li 3, 1
455; DIS-NEXT:        c: 90 01 00 48                   stw 0, 72(1)
456; DIS-NEXT:       10: 4b ff ff f1                   bl 0x0
457; DIS-NEXT:       14: 60 00 00 00                   nop
458; DIS-NEXT:       18: 80 82 00 00                   lwz 4, 0(2)
459; DIS-NEXT:       1c: 80 a2 00 04                   lwz 5, 4(2)
460; DIS-NEXT:       20: 80 84 00 00                   lwz 4, 0(4)
461; DIS-NEXT:       24: 80 a5 00 00                   lwz 5, 0(5)
462; DIS-NEXT:       28: 7c 63 22 14                   add 3, 3, 4
463; DIS-NEXT:       2c: 7c 63 2a 14                   add 3, 3, 5
464; DIS-NEXT:       30: 38 21 00 40                   addi 1, 1, 64
465; DIS-NEXT:       34: 80 01 00 08                   lwz 0, 8(1)
466; DIS-NEXT:       38: 7c 08 03 a6                   mtlr 0
467; DIS-NEXT:       3c: 4e 80 00 20                   blr
468
469; DIS:      Disassembly of section .data:
470; DIS:      00000040 <globalA>:
471; DIS-NEXT:       40: 00 00 00 01                   <unknown>
472; DIS:      00000044 <globalB>:
473; DIS-NEXT:       44: 00 00 00 02                   <unknown>
474; DIS:      00000048 <arr>:
475; DIS-NEXT:       48: 00 00 00 03                   <unknown>
476; DIS-NEXT:                 ...
477; DIS:      00000070 <p>:
478; DIS-NEXT:       70: 00 00 00 58                   <unknown>
479; DIS:      00000074 <foo>:
480; DIS-NEXT:       74: 00 00 00 00                   <unknown>
481; DIS-NEXT:       78: 00 00 00 80                   <unknown>
482; DIS-NEXT:       7c: 00 00 00 00                   <unknown>
483; DIS:      00000080 <globalA>:
484; DIS-NEXT:       80: 00 00 00 40                   <unknown>
485; DIS:      00000084 <globalB>:
486; DIS-NEXT:       84: 00 00 00 44                   <unknown>
487
488; DIS_REL:       :   file format aixcoff-rs6000
489; DIS_REL:       RELOCATION RECORDS FOR [.text]:
490; DIS_REL-NEXT:  OFFSET   TYPE                     VALUE
491; DIS_REL-NEXT:  00000010 R_RBR                    .bar
492; DIS_REL-NEXT:  0000001a R_TOC                    globalA
493; DIS_REL-NEXT:  0000001e R_TOC                    globalB
494; DIS_REL:       RELOCATION RECORDS FOR [.data]:
495; DIS_REL-NEXT:  OFFSET   TYPE                     VALUE
496; DIS_REL-NEXT:  00000030 R_POS                    arr
497; DIS_REL-NEXT:  00000034 R_POS                    .foo
498; DIS_REL-NEXT:  00000038 R_POS                    TOC
499; DIS_REL-NEXT:  00000040 R_POS                    globalA
500; DIS_REL-NEXT:  00000044 R_POS                    globalB
501
502; DIS64:      Disassembly of section .text:
503; DIS64:      0000000000000000 <.foo>:
504; DIS64-NEXT:        0: 7c 08 02 a6  	mflr 0
505; DIS64-NEXT:        4: f8 21 ff 91  	stdu 1, -112(1)
506; DIS64-NEXT:        8: 38 60 00 01  	li 3, 1
507; DIS64-NEXT:        c: f8 01 00 80  	std 0, 128(1)
508; DIS64-NEXT:       10: 4b ff ff f1  	bl 0x0 <.bar>
509; DIS64-NEXT:       14: 60 00 00 00  	nop
510; DIS64-NEXT:       18: e8 82 00 00  	ld 4, 0(2)
511; DIS64-NEXT:       1c: e8 a2 00 08  	ld 5, 8(2)
512; DIS64-NEXT:       20: 80 84 00 00  	lwz 4, 0(4)
513; DIS64-NEXT:       24: 80 a5 00 00  	lwz 5, 0(5)
514; DIS64-NEXT:       28: 7c 63 22 14  	add 3, 3, 4
515; DIS64-NEXT:       2c: 7c 63 2a 14  	add 3, 3, 5
516; DIS64-NEXT:       30: 38 21 00 70  	addi 1, 1, 112
517; DIS64-NEXT:       34: e8 01 00 10  	ld 0, 16(1)
518; DIS64-NEXT:       38: 7c 08 03 a6  	mtlr 0
519; DIS64-NEXT:       3c: 4e 80 00 20  	blr
520
521; DIS64:      Disassembly of section .data:
522; DIS64:      0000000000000040 <globalA>:
523; DIS64-NEXT:       40: 00 00 00 01  	<unknown>
524; DIS64:      0000000000000044 <globalB>:
525; DIS64-NEXT:       44: 00 00 00 02  	<unknown>
526; DIS64:      0000000000000048 <arr>:
527; DIS64-NEXT:       48: 00 00 00 03  	<unknown>
528; DIS64-NEXT: 		...
529; DIS64:      0000000000000070 <p>:
530; DIS64-NEXT:       70: 00 00 00 00  	<unknown>
531; DIS64-NEXT:       74: 00 00 00 58  	<unknown>
532; DIS64:      0000000000000078 <foo>:
533; DIS64-NEXT: 		...
534; DIS64-NEXT:       84: 00 00 00 90  	<unknown>
535; DIS64-NEXT: 		...
536; DIS64:      0000000000000090 <globalA>:
537; DIS64-NEXT:       90: 00 00 00 00  	<unknown>
538; DIS64-NEXT:       94: 00 00 00 40  	<unknown>
539; DIS64:      0000000000000098 <globalB>:
540; DIS64-NEXT:       98: 00 00 00 00  	<unknown>
541; DIS64-NEXT:       9c: 00 00 00 44  	<unknown>
542
543; DIS_REL64:      RELOCATION RECORDS FOR [.text]:
544; DIS_REL64-NEXT: OFFSET           TYPE                     VALUE
545; DIS_REL64-NEXT: 0000000000000010 R_RBR                    .bar
546; DIS_REL64-NEXT: 000000000000001a R_TOC                    globalA
547; DIS_REL64-NEXT: 000000000000001e R_TOC                    globalB
548
549; DIS_REL64:      RELOCATION RECORDS FOR [.data]:
550; DIS_REL64-NEXT: OFFSET           TYPE                     VALUE
551; DIS_REL64-NEXT: 0000000000000030 R_POS                    arr
552; DIS_REL64-NEXT: 0000000000000038 R_POS                    .foo
553; DIS_REL64-NEXT: 0000000000000040 R_POS                    TOC
554; DIS_REL64-NEXT: 0000000000000050 R_POS                    globalA
555; DIS_REL64-NEXT: 0000000000000058 R_POS                    globalB
556