xref: /llvm-project/llvm/test/tools/llvm-readobj/XCOFF/symbols.test (revision f31099ce581d33fdb64e35fee4b56d0a1145cab1)
1## This file tests the ability of llvm-readobj to display the symbol table for a
2## 32-bit XCOFF object file.
3
4# RUN: yaml2obj %s -o %t
5# RUN: llvm-readobj --symbols %t | FileCheck --check-prefixes=SYMBOL32,NODEMANGLE %s
6# RUN: llvm-readobj --symbols --no-demangle %t | FileCheck --check-prefixes=SYMBOL32,NODEMANGLE %s
7# RUN: llvm-readobj --symbols --demangle %t | FileCheck --check-prefixes=SYMBOL32,DEMANGLE %s
8
9--- !XCOFF
10FileHeader:
11  MagicNumber: 0x1DF
12Sections:
13  - Name: .text
14Symbols:
15## The C_FILE symbol with File auxiliary entries.
16  - Name:               .file
17    Value:              0x0
18    Section:            N_DEBUG
19    Type:               0x0
20    StorageClass:       C_FILE
21    NumberOfAuxEntries: 3
22    AuxEntries:
23      - Type:             AUX_FILE
24        FileNameOrString: "test"
25        FileStringType:   XFT_FN
26      - Type:             AUX_FILE
27        FileNameOrString: "foo"
28        FileStringType:   XFT_CT
29      - Type:             AUX_FILE
30        FileNameOrString: "bar"
31        FileStringType:   XFT_CV
32## The C_STAT symbol with a SECT auxiliary entry.
33  - Name:               .text
34    Value:              0x0
35    Section:            .text
36    Type:               0x0
37    StorageClass:       C_STAT
38    NumberOfAuxEntries: 1
39    AuxEntries:
40      - Type:             AUX_STAT
41        SectionLength:    256
42        NumberOfRelocEnt: 4
43        NumberOfLineNum:  4
44## The C_HIDEXT symbol with a CSECT auxiliary entry.
45  - Name:               .fun
46    Value:              0x0
47    Section:            .text
48    Type:               0x0
49    StorageClass:       C_HIDEXT
50    NumberOfAuxEntries: 1
51    AuxEntries:
52      - Type:                   AUX_CSECT
53        ParameterHashIndex:     2
54        TypeChkSectNum:         3
55        SymbolAlignmentAndType: 7
56        StorageMappingClass:    XMC_PR
57        SectionOrLength:        256
58        StabInfoIndex:          5
59        StabSectNum:            6
60## The C_EXT symbol with a CSECT auxiliary entry.
61  - Name:               ._Z5func1i
62    Value:              0x0
63    Section:            .text
64    Type:               0x20
65    StorageClass:       C_EXT
66    NumberOfAuxEntries: 1
67    AuxEntries:
68      - Type:                   AUX_CSECT
69        ParameterHashIndex:     1
70        TypeChkSectNum:         2
71        SymbolAlignmentAndType: 3
72        StorageMappingClass:    XMC_PR
73        SectionOrLength:        256
74        StabInfoIndex:          4
75        StabSectNum:            5
76## The C_WEAKEXT symbol with a CSECT auxiliary entry.
77  - Name:               .fun2
78    Value:              0x0
79    Section:            .text
80    Type:               0x20
81    StorageClass:       C_WEAKEXT
82    NumberOfAuxEntries: 1
83    AuxEntries:
84      - Type:                   AUX_CSECT
85        ParameterHashIndex:     8
86        TypeChkSectNum:         9
87        SymbolAlignmentAndType: 1
88        StorageMappingClass:    XMC_PR
89        SectionOrLength:        256
90        StabInfoIndex:          2
91        StabSectNum:            3
92## The C_WEAKEXT symbol with a Function auxiliary entry and a CSECT auxiliary entry.
93  - Name:               .fun3
94    Value:              0x0
95    Section:            N_DEBUG
96    Type:               0x20
97    StorageClass:       C_WEAKEXT
98    NumberOfAuxEntries: 2
99    AuxEntries:
100      - Type:                 AUX_FCN
101        OffsetToExceptionTbl: 2
102        SizeOfFunction:       3
103        SymIdxOfNextBeyond:   4
104        PtrToLineNum:         5
105      - Type:                   AUX_CSECT
106        ParameterHashIndex:     11
107        TypeChkSectNum:         22
108        SymbolAlignmentAndType: 33
109        StorageMappingClass:    XMC_PR
110        SectionOrLength:        256
111        StabInfoIndex:          44
112        StabSectNum:            55
113## The C_DWARF symbol with a SECT auxiliary entry.
114  - Name:               .fun4
115    Section:            N_DEBUG
116    StorageClass:       C_DWARF
117    NumberOfAuxEntries: 1
118    AuxEntries:
119      - Type:                   AUX_SECT
120        LengthOfSectionPortion: 2
121        NumberOfRelocEnt:       3
122## The C_BLOCK symbol with a Block auxiliary entry.
123  - Name:               .fun5
124    StorageClass:       C_BLOCK
125    NumberOfAuxEntries: 1
126    AuxEntries:
127      - Type:      AUX_SYM
128        LineNumHi: 2
129        LineNumLo: 3
130## The C_FCN symbol with a Block auxiliary entry.
131  - Name:               .fun6
132    StorageClass:       C_FCN
133    NumberOfAuxEntries: 1
134    AuxEntries:
135      - Type:      AUX_SYM
136        LineNumHi: 2
137        LineNumLo: 3
138
139##The C_WEAKEXT symbol with two Function auxiliary entries and a CSECT auxiliary entry.
140  - Name:               .fun7
141    Value:              0x0
142    Section:            .text
143    Type:               0x00
144    StorageClass:       C_WEAKEXT
145    NumberOfAuxEntries: 3
146    AuxEntries:
147      - Type:                 AUX_FCN
148        OffsetToExceptionTbl: 2
149        SizeOfFunction:       3
150        SymIdxOfNextBeyond:   4
151        PtrToLineNum:         5
152      - Type:                 AUX_FCN
153        OffsetToExceptionTbl: 8
154        SizeOfFunction:       5
155        SymIdxOfNextBeyond:   8
156        PtrToLineNum:         5
157      - Type:                   AUX_CSECT
158        ParameterHashIndex:     11
159        TypeChkSectNum:         22
160        SymbolAlignmentAndType: 33
161        StorageMappingClass:    XMC_PR
162        SectionOrLength:        256
163        StabInfoIndex:          44
164        StabSectNum:            55
165
166# SYMBOL32:      Symbols [
167# SYMBOL32-NEXT:   Symbol {
168# SYMBOL32-NEXT:     Index: 0
169# SYMBOL32-NEXT:     Name: .file
170# SYMBOL32-NEXT:     Value (SymbolTableIndex): 0x0
171# SYMBOL32-NEXT:     Section: N_DEBUG
172# SYMBOL32-NEXT:     Source Language ID: TB_C (0x0)
173# SYMBOL32-NEXT:     CPU Version ID: TCPU_INVALID (0x0)
174# SYMBOL32-NEXT:     StorageClass: C_FILE (0x67)
175# SYMBOL32-NEXT:     NumberOfAuxEntries: 3
176# SYMBOL32-NEXT:     File Auxiliary Entry {
177# SYMBOL32-NEXT:       Index: 1
178# SYMBOL32-NEXT:       Name: test
179# SYMBOL32-NEXT:       Type: XFT_FN (0x0)
180# SYMBOL32-NEXT:     }
181# SYMBOL32-NEXT:     File Auxiliary Entry {
182# SYMBOL32-NEXT:       Index: 2
183# SYMBOL32-NEXT:       Name: foo
184# SYMBOL32-NEXT:       Type: XFT_CT (0x1)
185# SYMBOL32-NEXT:     }
186# SYMBOL32-NEXT:     File Auxiliary Entry {
187# SYMBOL32-NEXT:       Index: 3
188# SYMBOL32-NEXT:       Name: bar
189# SYMBOL32-NEXT:       Type: XFT_CV (0x2)
190# SYMBOL32-NEXT:     }
191# SYMBOL32-NEXT:   }
192# SYMBOL32-NEXT:   Symbol {
193# SYMBOL32-NEXT:     Index: 4
194# SYMBOL32-NEXT:     Name: .text
195# SYMBOL32-NEXT:     Value (RelocatableAddress): 0x0
196# SYMBOL32-NEXT:     Section: .text
197# SYMBOL32-NEXT:     Type: 0x0
198# SYMBOL32-NEXT:     StorageClass: C_STAT (0x3)
199# SYMBOL32-NEXT:     NumberOfAuxEntries: 1
200# SYMBOL32-NEXT:     Sect Auxiliary Entry For Stat {
201# SYMBOL32-NEXT:       Index: 5
202# SYMBOL32-NEXT:       SectionLength: 256
203# SYMBOL32-NEXT:       NumberOfRelocEnt: 4
204# SYMBOL32-NEXT:       NumberOfLineNum: 4
205# SYMBOL32-NEXT:     }
206# SYMBOL32-NEXT:   }
207# SYMBOL32-NEXT:   Symbol {
208# SYMBOL32-NEXT:     Index: 6
209# SYMBOL32-NEXT:     Name: .fun
210# SYMBOL32-NEXT:     Value (RelocatableAddress): 0x0
211# SYMBOL32-NEXT:     Section: .text
212# SYMBOL32-NEXT:     Type: 0x0
213# SYMBOL32-NEXT:     StorageClass: C_HIDEXT (0x6B)
214# SYMBOL32-NEXT:     NumberOfAuxEntries: 1
215# SYMBOL32-NEXT:     CSECT Auxiliary Entry {
216# SYMBOL32-NEXT:       Index: 7
217# SYMBOL32-NEXT:       SectionLen: 256
218# SYMBOL32-NEXT:       ParameterHashIndex: 0x2
219# SYMBOL32-NEXT:       TypeChkSectNum: 0x3
220# SYMBOL32-NEXT:       SymbolAlignmentLog2: 0
221# SYMBOL32-NEXT:       SymbolType: 0x7
222# SYMBOL32-NEXT:       StorageMappingClass: XMC_PR (0x0)
223# SYMBOL32-NEXT:       StabInfoIndex: 0x5
224# SYMBOL32-NEXT:       StabSectNum: 0x6
225# SYMBOL32-NEXT:     }
226# SYMBOL32-NEXT:   }
227# SYMBOL32-NEXT:   Symbol {
228# SYMBOL32-NEXT:     Index: 8
229# NODEMANGLE-NEXT:   Name: ._Z5func1i
230# DEMANGLE-NEXT:     Name: .func1(int)
231# SYMBOL32-NEXT:     Value (RelocatableAddress): 0x0
232# SYMBOL32-NEXT:     Section: .text
233# SYMBOL32-NEXT:     Type: 0x20
234# SYMBOL32-NEXT:     StorageClass: C_EXT (0x2)
235# SYMBOL32-NEXT:     NumberOfAuxEntries: 1
236# SYMBOL32-NEXT:     CSECT Auxiliary Entry {
237# SYMBOL32-NEXT:       Index: 9
238# SYMBOL32-NEXT:       SectionLen: 256
239# SYMBOL32-NEXT:       ParameterHashIndex: 0x1
240# SYMBOL32-NEXT:       TypeChkSectNum: 0x2
241# SYMBOL32-NEXT:       SymbolAlignmentLog2: 0
242# SYMBOL32-NEXT:       SymbolType: XTY_CM (0x3)
243# SYMBOL32-NEXT:       StorageMappingClass: XMC_PR (0x0)
244# SYMBOL32-NEXT:       StabInfoIndex: 0x4
245# SYMBOL32-NEXT:       StabSectNum: 0x5
246# SYMBOL32-NEXT:     }
247# SYMBOL32-NEXT:   }
248# SYMBOL32-NEXT:   Symbol {
249# SYMBOL32-NEXT:     Index: 10
250# SYMBOL32-NEXT:     Name: .fun2
251# SYMBOL32-NEXT:     Value (RelocatableAddress): 0x0
252# SYMBOL32-NEXT:     Section: .text
253# SYMBOL32-NEXT:     Type: 0x20
254# SYMBOL32-NEXT:     StorageClass: C_WEAKEXT (0x6F)
255# SYMBOL32-NEXT:     NumberOfAuxEntries: 1
256# SYMBOL32-NEXT:     CSECT Auxiliary Entry {
257# SYMBOL32-NEXT:       Index: 11
258# SYMBOL32-NEXT:       SectionLen: 256
259# SYMBOL32-NEXT:       ParameterHashIndex: 0x8
260# SYMBOL32-NEXT:       TypeChkSectNum: 0x9
261# SYMBOL32-NEXT:       SymbolAlignmentLog2: 0
262# SYMBOL32-NEXT:       SymbolType: XTY_SD (0x1)
263# SYMBOL32-NEXT:       StorageMappingClass: XMC_PR (0x0)
264# SYMBOL32-NEXT:       StabInfoIndex: 0x2
265# SYMBOL32-NEXT:       StabSectNum: 0x3
266# SYMBOL32-NEXT:     }
267# SYMBOL32-NEXT:   }
268# SYMBOL32-NEXT:   Symbol {
269# SYMBOL32-NEXT:     Index: 12
270# SYMBOL32-NEXT:     Name: .fun3
271# SYMBOL32-NEXT:     Value (RelocatableAddress): 0x0
272# SYMBOL32-NEXT:     Section: N_DEBUG
273# SYMBOL32-NEXT:     Type: 0x20
274# SYMBOL32-NEXT:     StorageClass: C_WEAKEXT (0x6F)
275# SYMBOL32-NEXT:     NumberOfAuxEntries: 2
276# SYMBOL32-NEXT:     Function Auxiliary Entry {
277# SYMBOL32-NEXT:       Index: 13
278# SYMBOL32-NEXT:       OffsetToExceptionTable: 0x2
279# SYMBOL32-NEXT:       SizeOfFunction: 0x3
280# SYMBOL32-NEXT:       PointerToLineNum: 0x5
281# SYMBOL32-NEXT:       SymbolIndexOfNextBeyond: 4
282# SYMBOL32-NEXT:     }
283# SYMBOL32-NEXT:     CSECT Auxiliary Entry {
284# SYMBOL32-NEXT:       Index: 14
285# SYMBOL32-NEXT:       SectionLen: 256
286# SYMBOL32-NEXT:       ParameterHashIndex: 0xB
287# SYMBOL32-NEXT:       TypeChkSectNum: 0x16
288# SYMBOL32-NEXT:       SymbolAlignmentLog2: 4
289# SYMBOL32-NEXT:       SymbolType: XTY_SD (0x1)
290# SYMBOL32-NEXT:       StorageMappingClass: XMC_PR (0x0)
291# SYMBOL32-NEXT:       StabInfoIndex: 0x2C
292# SYMBOL32-NEXT:       StabSectNum: 0x37
293# SYMBOL32-NEXT:     }
294# SYMBOL32-NEXT:   }
295# SYMBOL32-NEXT:   Symbol {
296# SYMBOL32-NEXT:     Index: 15
297# SYMBOL32-NEXT:     Name: .fun4
298# SYMBOL32-NEXT:     Value (OffsetInDWARF): 0x0
299# SYMBOL32-NEXT:     Section: N_DEBUG
300# SYMBOL32-NEXT:     Type: 0x0
301# SYMBOL32-NEXT:     StorageClass: C_DWARF (0x70)
302# SYMBOL32-NEXT:     NumberOfAuxEntries: 1
303# SYMBOL32-NEXT:     Sect Auxiliary Entry For DWARF {
304# SYMBOL32-NEXT:       Index: 16
305# SYMBOL32-NEXT:       LengthOfSectionPortion: 0x2
306# SYMBOL32-NEXT:       NumberOfRelocEntries: 3
307# SYMBOL32-NEXT:     }
308# SYMBOL32-NEXT:   }
309# SYMBOL32-NEXT:   Symbol {
310# SYMBOL32-NEXT:     Index: 17
311# SYMBOL32-NEXT:     Name: .fun5
312# SYMBOL32-NEXT:     Value (RelocatableAddress): 0x0
313# SYMBOL32-NEXT:     Section: N_UNDEF
314# SYMBOL32-NEXT:     Type: 0x0
315# SYMBOL32-NEXT:     StorageClass: C_BLOCK (0x64)
316# SYMBOL32-NEXT:     NumberOfAuxEntries: 1
317# SYMBOL32-NEXT:     Block Auxiliary Entry {
318# SYMBOL32-NEXT:       Index: 18
319# SYMBOL32-NEXT:       LineNumber (High 2 Bytes): 0x2
320# SYMBOL32-NEXT:       LineNumber (Low 2 Bytes): 0x3
321# SYMBOL32-NEXT:     }
322# SYMBOL32-NEXT:   }
323# SYMBOL32-NEXT:   Symbol {
324# SYMBOL32-NEXT:     Index: 19
325# SYMBOL32-NEXT:     Name: .fun6
326# SYMBOL32-NEXT:     Value (RelocatableAddress): 0x0
327# SYMBOL32-NEXT:     Section: N_UNDEF
328# SYMBOL32-NEXT:     Type: 0x0
329# SYMBOL32-NEXT:     StorageClass: C_FCN (0x65)
330# SYMBOL32-NEXT:     NumberOfAuxEntries: 1
331# SYMBOL32-NEXT:     Block Auxiliary Entry {
332# SYMBOL32-NEXT:       Index: 20
333# SYMBOL32-NEXT:       LineNumber (High 2 Bytes): 0x2
334# SYMBOL32-NEXT:       LineNumber (Low 2 Bytes): 0x3
335# SYMBOL32-NEXT:     }
336# SYMBOL32-NEXT:   }
337# SYMBOL32-NEXT:   Symbol {
338# SYMBOL32-NEXT:     Index: 21
339# SYMBOL32-NEXT:     Name: .fun7
340# SYMBOL32-NEXT:     Value (RelocatableAddress): 0x0
341# SYMBOL32-NEXT:     Section: .text
342# SYMBOL32-NEXT:     Type: 0x0
343# SYMBOL32-NEXT:     StorageClass: C_WEAKEXT (0x6F)
344# SYMBOL32-NEXT:     NumberOfAuxEntries: 3
345# SYMBOL32-NEXT:     Function Auxiliary Entry {
346# SYMBOL32-NEXT:       Index: 22
347# SYMBOL32-NEXT:       OffsetToExceptionTable: 0x2
348# SYMBOL32-NEXT:       SizeOfFunction: 0x3
349# SYMBOL32-NEXT:       PointerToLineNum: 0x5
350# SYMBOL32-NEXT:       SymbolIndexOfNextBeyond: 4
351# SYMBOL32-NEXT:     }
352# SYMBOL32-NEXT:     Function Auxiliary Entry {
353# SYMBOL32-NEXT:       Index: 23
354# SYMBOL32-NEXT:       OffsetToExceptionTable: 0x8
355# SYMBOL32-NEXT:       SizeOfFunction: 0x5
356# SYMBOL32-NEXT:       PointerToLineNum: 0x5
357# SYMBOL32-NEXT:       SymbolIndexOfNextBeyond: 8
358# SYMBOL32-NEXT:     }
359# SYMBOL32-NEXT:     CSECT Auxiliary Entry {
360# SYMBOL32-NEXT:       Index: 24
361# SYMBOL32-NEXT:       SectionLen: 256
362# SYMBOL32-NEXT:       ParameterHashIndex: 0xB
363# SYMBOL32-NEXT:       TypeChkSectNum: 0x16
364# SYMBOL32-NEXT:       SymbolAlignmentLog2: 4
365# SYMBOL32-NEXT:       SymbolType: XTY_SD (0x1)
366# SYMBOL32-NEXT:       StorageMappingClass: XMC_PR (0x0)
367# SYMBOL32-NEXT:       StabInfoIndex: 0x2C
368# SYMBOL32-NEXT:       StabSectNum: 0x37
369# SYMBOL32-NEXT:     }
370# SYMBOL32-NEXT:   }
371# SYMBOL32-NEXT: ]
372