[llvm] ec60e1d - [XCOFF][llvm-readobj] Print symbol value kind when dumping symbols (#125861)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Feb 10 06:37:12 PST 2025
Author: zhijian lin
Date: 2025-02-10T09:37:04-05:00
New Revision: ec60e1d8e2c265f86f08590b6061eb6f51dc3349
URL: https://github.com/llvm/llvm-project/commit/ec60e1d8e2c265f86f08590b6061eb6f51dc3349
DIFF: https://github.com/llvm/llvm-project/commit/ec60e1d8e2c265f86f08590b6061eb6f51dc3349.diff
LOG: [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
Added:
Modified:
llvm/test/tools/llvm-readobj/XCOFF/symbols.test
llvm/test/tools/llvm-readobj/XCOFF/symbols64.test
llvm/tools/llvm-readobj/XCOFFDumper.cpp
Removed:
################################################################################
diff --git a/llvm/test/tools/llvm-readobj/XCOFF/symbols.test b/llvm/test/tools/llvm-readobj/XCOFF/symbols.test
index 71347a85f1ba55..64e0feb966ee13 100644
--- a/llvm/test/tools/llvm-readobj/XCOFF/symbols.test
+++ b/llvm/test/tools/llvm-readobj/XCOFF/symbols.test
@@ -163,6 +163,73 @@ Symbols:
StabInfoIndex: 44
StabSectNum: 55
+ - Name: bstat
+ Value: 0x0
+ Section: N_DEBUG
+ Type: 0x00
+ StorageClass: C_BSTAT
+
+ - Name: cfun
+ Value: 0x0
+ Section: N_DEBUG
+ Type: 0x00
+ StorageClass: C_FUN
+
+ - Name: stsym
+ Value: 0x05
+ Section: N_DEBUG
+ Type: 0x00
+ StorageClass: C_STSYM
+
+ - Name: bincl
+ Value: 0x06
+ Section: .text
+ Type: 0x00
+ StorageClass: C_BINCL
+
+ - Name: eincl
+ Value: 0x06
+ Section: .text
+ Type: 0x00
+ StorageClass: C_EINCL
+
+ - Name: lsym
+ Value: 0x07
+ Section: N_DEBUG
+ Type: 0x00
+ StorageClass: C_LSYM
+
+ - Name: psym
+ Value: 0x07
+ Section: N_DEBUG
+ Type: 0x00
+ StorageClass: C_PSYM
+
+ - Name: rsym
+ Value: 0x08
+ Section: N_DEBUG
+ Type: 0x00
+ StorageClass: C_RSYM
+
+ - Name: rpsym
+ Value: 0x08
+ Section: N_DEBUG
+ Type: 0x00
+ StorageClass: C_RPSYM
+
+ - Name: ecoml
+ Value: 0x09
+ Section: .text
+ Type: 0x00
+ StorageClass: C_ECOML
+
+ - Name: cinfo
+ Value: 0x02
+ Section: .text
+ Type: 0x00
+ StorageClass: C_INFO
+
+
# SYMBOL32: Symbols [
# SYMBOL32-NEXT: Symbol {
# SYMBOL32-NEXT: Index: 0
@@ -368,4 +435,103 @@ Symbols:
# SYMBOL32-NEXT: StabSectNum: 0x37
# SYMBOL32-NEXT: }
# SYMBOL32-NEXT: }
+# SYMBOL32-NEXT: Symbol {
+# SYMBOL32-NEXT: Index: 25
+# SYMBOL32-NEXT: Name: Unimplemented Debug Name
+# SYMBOL32-NEXT: Value (SymbolTableIndex): 0x0
+# SYMBOL32-NEXT: Section: N_DEBUG
+# SYMBOL32-NEXT: Type: 0x0
+# SYMBOL32-NEXT: StorageClass: C_BSTAT (0x8F)
+# SYMBOL32-NEXT: NumberOfAuxEntries: 0
+# SYMBOL32-NEXT: }
+# SYMBOL32-NEXT: Symbol {
+# SYMBOL32-NEXT: Index: 26
+# SYMBOL32-NEXT: Name: Unimplemented Debug Name
+# SYMBOL32-NEXT: Value (OffsetInCSect): 0x0
+# SYMBOL32-NEXT: Section: N_DEBUG
+# SYMBOL32-NEXT: Type: 0x0
+# SYMBOL32-NEXT: StorageClass: C_FUN (0x8E)
+# SYMBOL32-NEXT: NumberOfAuxEntries: 0
+# SYMBOL32-NEXT: }
+# SYMBOL32-NEXT: Symbol {
+# SYMBOL32-NEXT: Index: 27
+# SYMBOL32-NEXT: Name: Unimplemented Debug Name
+# SYMBOL32-NEXT: Value (OffsetInCSect): 0x5
+# SYMBOL32-NEXT: Section: N_DEBUG
+# SYMBOL32-NEXT: Type: 0x0
+# SYMBOL32-NEXT: StorageClass: C_STSYM (0x85)
+# SYMBOL32-NEXT: NumberOfAuxEntries: 0
+# SYMBOL32-NEXT: }
+# SYMBOL32-NEXT: Symbol {
+# SYMBOL32-NEXT: Index: 28
+# SYMBOL32-NEXT: Name: bincl
+# SYMBOL32-NEXT: Value (OffsetInFile): 0x6
+# SYMBOL32-NEXT: Section: .text
+# SYMBOL32-NEXT: Type: 0x0
+# SYMBOL32-NEXT: StorageClass: C_BINCL (0x6C)
+# SYMBOL32-NEXT: NumberOfAuxEntries: 0
+# SYMBOL32-NEXT: }
+# SYMBOL32-NEXT: Symbol {
+# SYMBOL32-NEXT: Index: 29
+# SYMBOL32-NEXT: Name: eincl
+# SYMBOL32-NEXT: Value (OffsetInFile): 0x6
+# SYMBOL32-NEXT: Section: .text
+# SYMBOL32-NEXT: Type: 0x0
+# SYMBOL32-NEXT: StorageClass: C_EINCL (0x6D)
+# SYMBOL32-NEXT: NumberOfAuxEntries: 0
+# SYMBOL32-NEXT: }
+# SYMBOL32-NEXT: Symbol {
+# SYMBOL32-NEXT: Index: 30
+# SYMBOL32-NEXT: Name: Unimplemented Debug Name
+# SYMBOL32-NEXT: Value (OffsetRelToStackFrame): 0x7
+# SYMBOL32-NEXT: Section: N_DEBUG
+# SYMBOL32-NEXT: Type: 0x0
+# SYMBOL32-NEXT: StorageClass: C_LSYM (0x81)
+# SYMBOL32-NEXT: NumberOfAuxEntries: 0
+# SYMBOL32-NEXT: }
+# SYMBOL32-NEXT: Symbol {
+# SYMBOL32-NEXT: Index: 31
+# SYMBOL32-NEXT: Name: Unimplemented Debug Name
+# SYMBOL32-NEXT: Value (OffsetRelToStackFrame): 0x7
+# SYMBOL32-NEXT: Section: N_DEBUG
+# SYMBOL32-NEXT: Type: 0x0
+# SYMBOL32-NEXT: StorageClass: C_PSYM (0x82)
+# SYMBOL32-NEXT: NumberOfAuxEntries: 0
+# SYMBOL32-NEXT: }
+# SYMBOL32-NEXT: Symbol {
+# SYMBOL32-NEXT: Index: 32
+# SYMBOL32-NEXT: Name: Unimplemented Debug Name
+# SYMBOL32-NEXT: Value (RegisterNumber): 0x8
+# SYMBOL32-NEXT: Section: N_DEBUG
+# SYMBOL32-NEXT: Type: 0x0
+# SYMBOL32-NEXT: StorageClass: C_RSYM (0x83)
+# SYMBOL32-NEXT: NumberOfAuxEntries: 0
+# SYMBOL32-NEXT: }
+# SYMBOL32-NEXT: Symbol {
+# SYMBOL32-NEXT: Index: 33
+# SYMBOL32-NEXT: Name: Unimplemented Debug Name
+# SYMBOL32-NEXT: Value (RegisterNumber): 0x8
+# SYMBOL32-NEXT: Section: N_DEBUG
+# SYMBOL32-NEXT: Type: 0x0
+# SYMBOL32-NEXT: StorageClass: C_RPSYM (0x84)
+# SYMBOL32-NEXT: NumberOfAuxEntries: 0
+# SYMBOL32-NEXT: }
+# SYMBOL32-NEXT: Symbol {
+# SYMBOL32-NEXT: Index: 34
+# SYMBOL32-NEXT: Name: Unimplemented Debug Name
+# SYMBOL32-NEXT: Value (OffsetInCommBlock): 0x9
+# SYMBOL32-NEXT: Section: .text
+# SYMBOL32-NEXT: Type: 0x0
+# SYMBOL32-NEXT: StorageClass: C_ECOML (0x88)
+# SYMBOL32-NEXT: NumberOfAuxEntries: 0
+# SYMBOL32-NEXT: }
+# SYMBOL32-NEXT: Symbol {
+# SYMBOL32-NEXT: Index: 35
+# SYMBOL32-NEXT: Name: cinfo
+# SYMBOL32-NEXT: Value (OffsetInCommentSection): 0x2
+# SYMBOL32-NEXT: Section: .text
+# SYMBOL32-NEXT: Type: 0x0
+# SYMBOL32-NEXT: StorageClass: C_INFO (0x6E)
+# SYMBOL32-NEXT: NumberOfAuxEntries: 0
+# SYMBOL32-NEXT: }
# SYMBOL32-NEXT: ]
diff --git a/llvm/test/tools/llvm-readobj/XCOFF/symbols64.test b/llvm/test/tools/llvm-readobj/XCOFF/symbols64.test
index 2b9edb3829af8d..462ac5f4a31614 100644
--- a/llvm/test/tools/llvm-readobj/XCOFF/symbols64.test
+++ b/llvm/test/tools/llvm-readobj/XCOFF/symbols64.test
@@ -138,6 +138,73 @@ Symbols:
- Type: AUX_SYM
LineNum: 3
+ - Name: bstat
+ Value: 0x0
+ Section: N_DEBUG
+ Type: 0x00
+ StorageClass: C_BSTAT
+
+ - Name: cfun
+ Value: 0x0
+ Section: N_DEBUG
+ Type: 0x00
+ StorageClass: C_FUN
+
+ - Name: stsym
+ Value: 0x05
+ Section: N_DEBUG
+ Type: 0x00
+ StorageClass: C_STSYM
+
+ - Name: bincl
+ Value: 0x06
+ Section: .text
+ Type: 0x00
+ StorageClass: C_BINCL
+
+ - Name: eincl
+ Value: 0x06
+ Section: .text
+ Type: 0x00
+ StorageClass: C_EINCL
+
+ - Name: lsym
+ Value: 0x07
+ Section: N_DEBUG
+ Type: 0x00
+ StorageClass: C_LSYM
+
+ - Name: psym
+ Value: 0x07
+ Section: N_DEBUG
+ Type: 0x00
+ StorageClass: C_PSYM
+
+ - Name: rsym
+ Value: 0x08
+ Section: N_DEBUG
+ Type: 0x00
+ StorageClass: C_RSYM
+
+ - Name: rpsym
+ Value: 0x08
+ Section: N_DEBUG
+ Type: 0x00
+ StorageClass: C_RPSYM
+
+ - Name: ecoml
+ Value: 0x09
+ Section: .text
+ Type: 0x00
+ StorageClass: C_ECOML
+
+ - Name: cinfo
+ Value: 0x02
+ Section: .text
+ Type: 0x00
+ StorageClass: C_INFO
+
+
# SYMBOL64: Symbols [
# SYMBOL64-NEXT: Symbol {
# SYMBOL64-NEXT: Index: 0
@@ -326,4 +393,103 @@ Symbols:
# SYMBOL64-NEXT: Auxiliary Type: AUX_SYM (0xFD)
# SYMBOL64-NEXT: }
# SYMBOL64-NEXT: }
+# SYMBOL64-NEXT: Symbol {
+# SYMBOL64-NEXT: Index: 23
+# SYMBOL64-NEXT: Name: Unimplemented Debug Name
+# SYMBOL64-NEXT: Value (SymbolTableIndex): 0x0
+# SYMBOL64-NEXT: Section: N_DEBUG
+# SYMBOL64-NEXT: Type: 0x0
+# SYMBOL64-NEXT: StorageClass: C_BSTAT (0x8F)
+# SYMBOL64-NEXT: NumberOfAuxEntries: 0
+# SYMBOL64-NEXT: }
+# SYMBOL64-NEXT: Symbol {
+# SYMBOL64-NEXT: Index: 24
+# SYMBOL64-NEXT: Name: Unimplemented Debug Name
+# SYMBOL64-NEXT: Value (OffsetInCSect): 0x0
+# SYMBOL64-NEXT: Section: N_DEBUG
+# SYMBOL64-NEXT: Type: 0x0
+# SYMBOL64-NEXT: StorageClass: C_FUN (0x8E)
+# SYMBOL64-NEXT: NumberOfAuxEntries: 0
+# SYMBOL64-NEXT: }
+# SYMBOL64-NEXT: Symbol {
+# SYMBOL64-NEXT: Index: 25
+# SYMBOL64-NEXT: Name: Unimplemented Debug Name
+# SYMBOL64-NEXT: Value (OffsetInCSect): 0x5
+# SYMBOL64-NEXT: Section: N_DEBUG
+# SYMBOL64-NEXT: Type: 0x0
+# SYMBOL64-NEXT: StorageClass: C_STSYM (0x85)
+# SYMBOL64-NEXT: NumberOfAuxEntries: 0
+# SYMBOL64-NEXT: }
+# SYMBOL64-NEXT: Symbol {
+# SYMBOL64-NEXT: Index: 26
+# SYMBOL64-NEXT: Name: bincl
+# SYMBOL64-NEXT: Value (OffsetInFile): 0x6
+# SYMBOL64-NEXT: Section: .text
+# SYMBOL64-NEXT: Type: 0x0
+# SYMBOL64-NEXT: StorageClass: C_BINCL (0x6C)
+# SYMBOL64-NEXT: NumberOfAuxEntries: 0
+# SYMBOL64-NEXT: }
+# SYMBOL64-NEXT: Symbol {
+# SYMBOL64-NEXT: Index: 27
+# SYMBOL64-NEXT: Name: eincl
+# SYMBOL64-NEXT: Value (OffsetInFile): 0x6
+# SYMBOL64-NEXT: Section: .text
+# SYMBOL64-NEXT: Type: 0x0
+# SYMBOL64-NEXT: StorageClass: C_EINCL (0x6D)
+# SYMBOL64-NEXT: NumberOfAuxEntries: 0
+# SYMBOL64-NEXT: }
+# SYMBOL64-NEXT: Symbol {
+# SYMBOL64-NEXT: Index: 28
+# SYMBOL64-NEXT: Name: Unimplemented Debug Name
+# SYMBOL64-NEXT: Value (OffsetRelToStackFrame): 0x7
+# SYMBOL64-NEXT: Section: N_DEBUG
+# SYMBOL64-NEXT: Type: 0x0
+# SYMBOL64-NEXT: StorageClass: C_LSYM (0x81)
+# SYMBOL64-NEXT: NumberOfAuxEntries: 0
+# SYMBOL64-NEXT: }
+# SYMBOL64-NEXT: Symbol {
+# SYMBOL64-NEXT: Index: 29
+# SYMBOL64-NEXT: Name: Unimplemented Debug Name
+# SYMBOL64-NEXT: Value (OffsetRelToStackFrame): 0x7
+# SYMBOL64-NEXT: Section: N_DEBUG
+# SYMBOL64-NEXT: Type: 0x0
+# SYMBOL64-NEXT: StorageClass: C_PSYM (0x82)
+# SYMBOL64-NEXT: NumberOfAuxEntries: 0
+# SYMBOL64-NEXT: }
+# SYMBOL64-NEXT: Symbol {
+# SYMBOL64-NEXT: Index: 30
+# SYMBOL64-NEXT: Name: Unimplemented Debug Name
+# SYMBOL64-NEXT: Value (RegisterNumber): 0x8
+# SYMBOL64-NEXT: Section: N_DEBUG
+# SYMBOL64-NEXT: Type: 0x0
+# SYMBOL64-NEXT: StorageClass: C_RSYM (0x83)
+# SYMBOL64-NEXT: NumberOfAuxEntries: 0
+# SYMBOL64-NEXT: }
+# SYMBOL64-NEXT: Symbol {
+# SYMBOL64-NEXT: Index: 31
+# SYMBOL64-NEXT: Name: Unimplemented Debug Name
+# SYMBOL64-NEXT: Value (RegisterNumber): 0x8
+# SYMBOL64-NEXT: Section: N_DEBUG
+# SYMBOL64-NEXT: Type: 0x0
+# SYMBOL64-NEXT: StorageClass: C_RPSYM (0x84)
+# SYMBOL64-NEXT: NumberOfAuxEntries: 0
+# SYMBOL64-NEXT: }
+# SYMBOL64-NEXT: Symbol {
+# SYMBOL64-NEXT: Index: 32
+# SYMBOL64-NEXT: Name: Unimplemented Debug Name
+# SYMBOL64-NEXT: Value (OffsetInCommBlock): 0x9
+# SYMBOL64-NEXT: Section: .text
+# SYMBOL64-NEXT: Type: 0x0
+# SYMBOL64-NEXT: StorageClass: C_ECOML (0x88)
+# SYMBOL64-NEXT: NumberOfAuxEntries: 0
+# SYMBOL64-NEXT: }
+# SYMBOL64-NEXT: Symbol {
+# SYMBOL64-NEXT: Index: 33
+# SYMBOL64-NEXT: Name: cinfo
+# SYMBOL64-NEXT: Value (OffsetInCommentSection): 0x2
+# SYMBOL64-NEXT: Section: .text
+# SYMBOL64-NEXT: Type: 0x0
+# SYMBOL64-NEXT: StorageClass: C_INFO (0x6E)
+# SYMBOL64-NEXT: NumberOfAuxEntries: 0
+# SYMBOL64-NEXT: }
# SYMBOL64-NEXT: ]
diff --git a/llvm/tools/llvm-readobj/XCOFFDumper.cpp b/llvm/tools/llvm-readobj/XCOFFDumper.cpp
index 6a099c08e1acad..03764e9ba483da 100644
--- a/llvm/tools/llvm-readobj/XCOFFDumper.cpp
+++ b/llvm/tools/llvm-readobj/XCOFFDumper.cpp
@@ -692,22 +692,26 @@ static StringRef GetSymbolValueName(XCOFF::StorageClass SC) {
case XCOFF::C_BLOCK:
return "Value (RelocatableAddress)";
case XCOFF::C_FILE:
+ case XCOFF::C_BSTAT:
return "Value (SymbolTableIndex)";
case XCOFF::C_DWARF:
return "Value (OffsetInDWARF)";
case XCOFF::C_FUN:
case XCOFF::C_STSYM:
+ return "Value (OffsetInCSect)";
case XCOFF::C_BINCL:
case XCOFF::C_EINCL:
+ return "Value (OffsetInFile)";
case XCOFF::C_INFO:
- case XCOFF::C_BSTAT:
+ return "Value (OffsetInCommentSection)";
case XCOFF::C_LSYM:
case XCOFF::C_PSYM:
+ return "Value (OffsetRelToStackFrame)";
case XCOFF::C_RPSYM:
case XCOFF::C_RSYM:
+ return "Value (RegisterNumber)";
case XCOFF::C_ECOML:
- assert(false && "This StorageClass for the symbol is not yet implemented.");
- return "";
+ return "Value (OffsetInCommBlock)";
default:
return "Value";
}
More information about the llvm-commits
mailing list