Skip to content

Commit ec60e1d

Browse files
authored
[XCOFF][llvm-readobj] Print symbol value kind when dumping symbols (#125861)
llvm-readobj print out symbol value name for xcoff symbol table. reference doc: https://www.ibm.com/docs/en/aix/7.2?topic=formats-xcoff-object-file-format#XCOFF__yaa3i18fjbau
1 parent 1aa48af commit ec60e1d

File tree

3 files changed

+339
-3
lines changed

3 files changed

+339
-3
lines changed

llvm/test/tools/llvm-readobj/XCOFF/symbols.test

Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,73 @@ Symbols:
163163
StabInfoIndex: 44
164164
StabSectNum: 55
165165

166+
- Name: bstat
167+
Value: 0x0
168+
Section: N_DEBUG
169+
Type: 0x00
170+
StorageClass: C_BSTAT
171+
172+
- Name: cfun
173+
Value: 0x0
174+
Section: N_DEBUG
175+
Type: 0x00
176+
StorageClass: C_FUN
177+
178+
- Name: stsym
179+
Value: 0x05
180+
Section: N_DEBUG
181+
Type: 0x00
182+
StorageClass: C_STSYM
183+
184+
- Name: bincl
185+
Value: 0x06
186+
Section: .text
187+
Type: 0x00
188+
StorageClass: C_BINCL
189+
190+
- Name: eincl
191+
Value: 0x06
192+
Section: .text
193+
Type: 0x00
194+
StorageClass: C_EINCL
195+
196+
- Name: lsym
197+
Value: 0x07
198+
Section: N_DEBUG
199+
Type: 0x00
200+
StorageClass: C_LSYM
201+
202+
- Name: psym
203+
Value: 0x07
204+
Section: N_DEBUG
205+
Type: 0x00
206+
StorageClass: C_PSYM
207+
208+
- Name: rsym
209+
Value: 0x08
210+
Section: N_DEBUG
211+
Type: 0x00
212+
StorageClass: C_RSYM
213+
214+
- Name: rpsym
215+
Value: 0x08
216+
Section: N_DEBUG
217+
Type: 0x00
218+
StorageClass: C_RPSYM
219+
220+
- Name: ecoml
221+
Value: 0x09
222+
Section: .text
223+
Type: 0x00
224+
StorageClass: C_ECOML
225+
226+
- Name: cinfo
227+
Value: 0x02
228+
Section: .text
229+
Type: 0x00
230+
StorageClass: C_INFO
231+
232+
166233
# SYMBOL32: Symbols [
167234
# SYMBOL32-NEXT: Symbol {
168235
# SYMBOL32-NEXT: Index: 0
@@ -368,4 +435,103 @@ Symbols:
368435
# SYMBOL32-NEXT: StabSectNum: 0x37
369436
# SYMBOL32-NEXT: }
370437
# SYMBOL32-NEXT: }
438+
# SYMBOL32-NEXT: Symbol {
439+
# SYMBOL32-NEXT: Index: 25
440+
# SYMBOL32-NEXT: Name: Unimplemented Debug Name
441+
# SYMBOL32-NEXT: Value (SymbolTableIndex): 0x0
442+
# SYMBOL32-NEXT: Section: N_DEBUG
443+
# SYMBOL32-NEXT: Type: 0x0
444+
# SYMBOL32-NEXT: StorageClass: C_BSTAT (0x8F)
445+
# SYMBOL32-NEXT: NumberOfAuxEntries: 0
446+
# SYMBOL32-NEXT: }
447+
# SYMBOL32-NEXT: Symbol {
448+
# SYMBOL32-NEXT: Index: 26
449+
# SYMBOL32-NEXT: Name: Unimplemented Debug Name
450+
# SYMBOL32-NEXT: Value (OffsetInCSect): 0x0
451+
# SYMBOL32-NEXT: Section: N_DEBUG
452+
# SYMBOL32-NEXT: Type: 0x0
453+
# SYMBOL32-NEXT: StorageClass: C_FUN (0x8E)
454+
# SYMBOL32-NEXT: NumberOfAuxEntries: 0
455+
# SYMBOL32-NEXT: }
456+
# SYMBOL32-NEXT: Symbol {
457+
# SYMBOL32-NEXT: Index: 27
458+
# SYMBOL32-NEXT: Name: Unimplemented Debug Name
459+
# SYMBOL32-NEXT: Value (OffsetInCSect): 0x5
460+
# SYMBOL32-NEXT: Section: N_DEBUG
461+
# SYMBOL32-NEXT: Type: 0x0
462+
# SYMBOL32-NEXT: StorageClass: C_STSYM (0x85)
463+
# SYMBOL32-NEXT: NumberOfAuxEntries: 0
464+
# SYMBOL32-NEXT: }
465+
# SYMBOL32-NEXT: Symbol {
466+
# SYMBOL32-NEXT: Index: 28
467+
# SYMBOL32-NEXT: Name: bincl
468+
# SYMBOL32-NEXT: Value (OffsetInFile): 0x6
469+
# SYMBOL32-NEXT: Section: .text
470+
# SYMBOL32-NEXT: Type: 0x0
471+
# SYMBOL32-NEXT: StorageClass: C_BINCL (0x6C)
472+
# SYMBOL32-NEXT: NumberOfAuxEntries: 0
473+
# SYMBOL32-NEXT: }
474+
# SYMBOL32-NEXT: Symbol {
475+
# SYMBOL32-NEXT: Index: 29
476+
# SYMBOL32-NEXT: Name: eincl
477+
# SYMBOL32-NEXT: Value (OffsetInFile): 0x6
478+
# SYMBOL32-NEXT: Section: .text
479+
# SYMBOL32-NEXT: Type: 0x0
480+
# SYMBOL32-NEXT: StorageClass: C_EINCL (0x6D)
481+
# SYMBOL32-NEXT: NumberOfAuxEntries: 0
482+
# SYMBOL32-NEXT: }
483+
# SYMBOL32-NEXT: Symbol {
484+
# SYMBOL32-NEXT: Index: 30
485+
# SYMBOL32-NEXT: Name: Unimplemented Debug Name
486+
# SYMBOL32-NEXT: Value (OffsetRelToStackFrame): 0x7
487+
# SYMBOL32-NEXT: Section: N_DEBUG
488+
# SYMBOL32-NEXT: Type: 0x0
489+
# SYMBOL32-NEXT: StorageClass: C_LSYM (0x81)
490+
# SYMBOL32-NEXT: NumberOfAuxEntries: 0
491+
# SYMBOL32-NEXT: }
492+
# SYMBOL32-NEXT: Symbol {
493+
# SYMBOL32-NEXT: Index: 31
494+
# SYMBOL32-NEXT: Name: Unimplemented Debug Name
495+
# SYMBOL32-NEXT: Value (OffsetRelToStackFrame): 0x7
496+
# SYMBOL32-NEXT: Section: N_DEBUG
497+
# SYMBOL32-NEXT: Type: 0x0
498+
# SYMBOL32-NEXT: StorageClass: C_PSYM (0x82)
499+
# SYMBOL32-NEXT: NumberOfAuxEntries: 0
500+
# SYMBOL32-NEXT: }
501+
# SYMBOL32-NEXT: Symbol {
502+
# SYMBOL32-NEXT: Index: 32
503+
# SYMBOL32-NEXT: Name: Unimplemented Debug Name
504+
# SYMBOL32-NEXT: Value (RegisterNumber): 0x8
505+
# SYMBOL32-NEXT: Section: N_DEBUG
506+
# SYMBOL32-NEXT: Type: 0x0
507+
# SYMBOL32-NEXT: StorageClass: C_RSYM (0x83)
508+
# SYMBOL32-NEXT: NumberOfAuxEntries: 0
509+
# SYMBOL32-NEXT: }
510+
# SYMBOL32-NEXT: Symbol {
511+
# SYMBOL32-NEXT: Index: 33
512+
# SYMBOL32-NEXT: Name: Unimplemented Debug Name
513+
# SYMBOL32-NEXT: Value (RegisterNumber): 0x8
514+
# SYMBOL32-NEXT: Section: N_DEBUG
515+
# SYMBOL32-NEXT: Type: 0x0
516+
# SYMBOL32-NEXT: StorageClass: C_RPSYM (0x84)
517+
# SYMBOL32-NEXT: NumberOfAuxEntries: 0
518+
# SYMBOL32-NEXT: }
519+
# SYMBOL32-NEXT: Symbol {
520+
# SYMBOL32-NEXT: Index: 34
521+
# SYMBOL32-NEXT: Name: Unimplemented Debug Name
522+
# SYMBOL32-NEXT: Value (OffsetInCommBlock): 0x9
523+
# SYMBOL32-NEXT: Section: .text
524+
# SYMBOL32-NEXT: Type: 0x0
525+
# SYMBOL32-NEXT: StorageClass: C_ECOML (0x88)
526+
# SYMBOL32-NEXT: NumberOfAuxEntries: 0
527+
# SYMBOL32-NEXT: }
528+
# SYMBOL32-NEXT: Symbol {
529+
# SYMBOL32-NEXT: Index: 35
530+
# SYMBOL32-NEXT: Name: cinfo
531+
# SYMBOL32-NEXT: Value (OffsetInCommentSection): 0x2
532+
# SYMBOL32-NEXT: Section: .text
533+
# SYMBOL32-NEXT: Type: 0x0
534+
# SYMBOL32-NEXT: StorageClass: C_INFO (0x6E)
535+
# SYMBOL32-NEXT: NumberOfAuxEntries: 0
536+
# SYMBOL32-NEXT: }
371537
# SYMBOL32-NEXT: ]

llvm/test/tools/llvm-readobj/XCOFF/symbols64.test

Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,73 @@ Symbols:
138138
- Type: AUX_SYM
139139
LineNum: 3
140140

141+
- Name: bstat
142+
Value: 0x0
143+
Section: N_DEBUG
144+
Type: 0x00
145+
StorageClass: C_BSTAT
146+
147+
- Name: cfun
148+
Value: 0x0
149+
Section: N_DEBUG
150+
Type: 0x00
151+
StorageClass: C_FUN
152+
153+
- Name: stsym
154+
Value: 0x05
155+
Section: N_DEBUG
156+
Type: 0x00
157+
StorageClass: C_STSYM
158+
159+
- Name: bincl
160+
Value: 0x06
161+
Section: .text
162+
Type: 0x00
163+
StorageClass: C_BINCL
164+
165+
- Name: eincl
166+
Value: 0x06
167+
Section: .text
168+
Type: 0x00
169+
StorageClass: C_EINCL
170+
171+
- Name: lsym
172+
Value: 0x07
173+
Section: N_DEBUG
174+
Type: 0x00
175+
StorageClass: C_LSYM
176+
177+
- Name: psym
178+
Value: 0x07
179+
Section: N_DEBUG
180+
Type: 0x00
181+
StorageClass: C_PSYM
182+
183+
- Name: rsym
184+
Value: 0x08
185+
Section: N_DEBUG
186+
Type: 0x00
187+
StorageClass: C_RSYM
188+
189+
- Name: rpsym
190+
Value: 0x08
191+
Section: N_DEBUG
192+
Type: 0x00
193+
StorageClass: C_RPSYM
194+
195+
- Name: ecoml
196+
Value: 0x09
197+
Section: .text
198+
Type: 0x00
199+
StorageClass: C_ECOML
200+
201+
- Name: cinfo
202+
Value: 0x02
203+
Section: .text
204+
Type: 0x00
205+
StorageClass: C_INFO
206+
207+
141208
# SYMBOL64: Symbols [
142209
# SYMBOL64-NEXT: Symbol {
143210
# SYMBOL64-NEXT: Index: 0
@@ -326,4 +393,103 @@ Symbols:
326393
# SYMBOL64-NEXT: Auxiliary Type: AUX_SYM (0xFD)
327394
# SYMBOL64-NEXT: }
328395
# SYMBOL64-NEXT: }
396+
# SYMBOL64-NEXT: Symbol {
397+
# SYMBOL64-NEXT: Index: 23
398+
# SYMBOL64-NEXT: Name: Unimplemented Debug Name
399+
# SYMBOL64-NEXT: Value (SymbolTableIndex): 0x0
400+
# SYMBOL64-NEXT: Section: N_DEBUG
401+
# SYMBOL64-NEXT: Type: 0x0
402+
# SYMBOL64-NEXT: StorageClass: C_BSTAT (0x8F)
403+
# SYMBOL64-NEXT: NumberOfAuxEntries: 0
404+
# SYMBOL64-NEXT: }
405+
# SYMBOL64-NEXT: Symbol {
406+
# SYMBOL64-NEXT: Index: 24
407+
# SYMBOL64-NEXT: Name: Unimplemented Debug Name
408+
# SYMBOL64-NEXT: Value (OffsetInCSect): 0x0
409+
# SYMBOL64-NEXT: Section: N_DEBUG
410+
# SYMBOL64-NEXT: Type: 0x0
411+
# SYMBOL64-NEXT: StorageClass: C_FUN (0x8E)
412+
# SYMBOL64-NEXT: NumberOfAuxEntries: 0
413+
# SYMBOL64-NEXT: }
414+
# SYMBOL64-NEXT: Symbol {
415+
# SYMBOL64-NEXT: Index: 25
416+
# SYMBOL64-NEXT: Name: Unimplemented Debug Name
417+
# SYMBOL64-NEXT: Value (OffsetInCSect): 0x5
418+
# SYMBOL64-NEXT: Section: N_DEBUG
419+
# SYMBOL64-NEXT: Type: 0x0
420+
# SYMBOL64-NEXT: StorageClass: C_STSYM (0x85)
421+
# SYMBOL64-NEXT: NumberOfAuxEntries: 0
422+
# SYMBOL64-NEXT: }
423+
# SYMBOL64-NEXT: Symbol {
424+
# SYMBOL64-NEXT: Index: 26
425+
# SYMBOL64-NEXT: Name: bincl
426+
# SYMBOL64-NEXT: Value (OffsetInFile): 0x6
427+
# SYMBOL64-NEXT: Section: .text
428+
# SYMBOL64-NEXT: Type: 0x0
429+
# SYMBOL64-NEXT: StorageClass: C_BINCL (0x6C)
430+
# SYMBOL64-NEXT: NumberOfAuxEntries: 0
431+
# SYMBOL64-NEXT: }
432+
# SYMBOL64-NEXT: Symbol {
433+
# SYMBOL64-NEXT: Index: 27
434+
# SYMBOL64-NEXT: Name: eincl
435+
# SYMBOL64-NEXT: Value (OffsetInFile): 0x6
436+
# SYMBOL64-NEXT: Section: .text
437+
# SYMBOL64-NEXT: Type: 0x0
438+
# SYMBOL64-NEXT: StorageClass: C_EINCL (0x6D)
439+
# SYMBOL64-NEXT: NumberOfAuxEntries: 0
440+
# SYMBOL64-NEXT: }
441+
# SYMBOL64-NEXT: Symbol {
442+
# SYMBOL64-NEXT: Index: 28
443+
# SYMBOL64-NEXT: Name: Unimplemented Debug Name
444+
# SYMBOL64-NEXT: Value (OffsetRelToStackFrame): 0x7
445+
# SYMBOL64-NEXT: Section: N_DEBUG
446+
# SYMBOL64-NEXT: Type: 0x0
447+
# SYMBOL64-NEXT: StorageClass: C_LSYM (0x81)
448+
# SYMBOL64-NEXT: NumberOfAuxEntries: 0
449+
# SYMBOL64-NEXT: }
450+
# SYMBOL64-NEXT: Symbol {
451+
# SYMBOL64-NEXT: Index: 29
452+
# SYMBOL64-NEXT: Name: Unimplemented Debug Name
453+
# SYMBOL64-NEXT: Value (OffsetRelToStackFrame): 0x7
454+
# SYMBOL64-NEXT: Section: N_DEBUG
455+
# SYMBOL64-NEXT: Type: 0x0
456+
# SYMBOL64-NEXT: StorageClass: C_PSYM (0x82)
457+
# SYMBOL64-NEXT: NumberOfAuxEntries: 0
458+
# SYMBOL64-NEXT: }
459+
# SYMBOL64-NEXT: Symbol {
460+
# SYMBOL64-NEXT: Index: 30
461+
# SYMBOL64-NEXT: Name: Unimplemented Debug Name
462+
# SYMBOL64-NEXT: Value (RegisterNumber): 0x8
463+
# SYMBOL64-NEXT: Section: N_DEBUG
464+
# SYMBOL64-NEXT: Type: 0x0
465+
# SYMBOL64-NEXT: StorageClass: C_RSYM (0x83)
466+
# SYMBOL64-NEXT: NumberOfAuxEntries: 0
467+
# SYMBOL64-NEXT: }
468+
# SYMBOL64-NEXT: Symbol {
469+
# SYMBOL64-NEXT: Index: 31
470+
# SYMBOL64-NEXT: Name: Unimplemented Debug Name
471+
# SYMBOL64-NEXT: Value (RegisterNumber): 0x8
472+
# SYMBOL64-NEXT: Section: N_DEBUG
473+
# SYMBOL64-NEXT: Type: 0x0
474+
# SYMBOL64-NEXT: StorageClass: C_RPSYM (0x84)
475+
# SYMBOL64-NEXT: NumberOfAuxEntries: 0
476+
# SYMBOL64-NEXT: }
477+
# SYMBOL64-NEXT: Symbol {
478+
# SYMBOL64-NEXT: Index: 32
479+
# SYMBOL64-NEXT: Name: Unimplemented Debug Name
480+
# SYMBOL64-NEXT: Value (OffsetInCommBlock): 0x9
481+
# SYMBOL64-NEXT: Section: .text
482+
# SYMBOL64-NEXT: Type: 0x0
483+
# SYMBOL64-NEXT: StorageClass: C_ECOML (0x88)
484+
# SYMBOL64-NEXT: NumberOfAuxEntries: 0
485+
# SYMBOL64-NEXT: }
486+
# SYMBOL64-NEXT: Symbol {
487+
# SYMBOL64-NEXT: Index: 33
488+
# SYMBOL64-NEXT: Name: cinfo
489+
# SYMBOL64-NEXT: Value (OffsetInCommentSection): 0x2
490+
# SYMBOL64-NEXT: Section: .text
491+
# SYMBOL64-NEXT: Type: 0x0
492+
# SYMBOL64-NEXT: StorageClass: C_INFO (0x6E)
493+
# SYMBOL64-NEXT: NumberOfAuxEntries: 0
494+
# SYMBOL64-NEXT: }
329495
# SYMBOL64-NEXT: ]

llvm/tools/llvm-readobj/XCOFFDumper.cpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -692,22 +692,26 @@ static StringRef GetSymbolValueName(XCOFF::StorageClass SC) {
692692
case XCOFF::C_BLOCK:
693693
return "Value (RelocatableAddress)";
694694
case XCOFF::C_FILE:
695+
case XCOFF::C_BSTAT:
695696
return "Value (SymbolTableIndex)";
696697
case XCOFF::C_DWARF:
697698
return "Value (OffsetInDWARF)";
698699
case XCOFF::C_FUN:
699700
case XCOFF::C_STSYM:
701+
return "Value (OffsetInCSect)";
700702
case XCOFF::C_BINCL:
701703
case XCOFF::C_EINCL:
704+
return "Value (OffsetInFile)";
702705
case XCOFF::C_INFO:
703-
case XCOFF::C_BSTAT:
706+
return "Value (OffsetInCommentSection)";
704707
case XCOFF::C_LSYM:
705708
case XCOFF::C_PSYM:
709+
return "Value (OffsetRelToStackFrame)";
706710
case XCOFF::C_RPSYM:
707711
case XCOFF::C_RSYM:
712+
return "Value (RegisterNumber)";
708713
case XCOFF::C_ECOML:
709-
assert(false && "This StorageClass for the symbol is not yet implemented.");
710-
return "";
714+
return "Value (OffsetInCommBlock)";
711715
default:
712716
return "Value";
713717
}

0 commit comments

Comments
 (0)