# This file tests the ability of llvm-readobj to display the symbol table for a # 32-bit XCOFF object file. # The object file used is generated by the following source file # and command on AIX: # # > cat test8.c # # extern int i; # extern int TestforXcoff; # extern int fun(int i); # static int static_i; # char* p="abcd"; # int fun1(int j) { # static_i++; # j++; # j=j+*p; # return j; # } # # int main() { # i++; # fun(i); # return fun1(i); # } # # > xlc -c test8.c -o symbol.o RUN: llvm-readobj --symbols %p/Inputs/symbol.o | \ RUN: FileCheck --check-prefix=SYMBOL32 %s SYMBOL32: File: {{.*}}symbol.o SYMBOL32-NEXT: Format: aixcoff-rs6000 SYMBOL32-NEXT: Arch: powerpc SYMBOL32-NEXT: AddressSize: 32bit SYMBOL32-NEXT: Symbols [ SYMBOL32-NEXT: Symbol { SYMBOL32-NEXT: Index: 0 SYMBOL32-NEXT: Name: .file SYMBOL32-NEXT: Value (SymbolTableIndex): 0x0 SYMBOL32-NEXT: Section: N_DEBUG SYMBOL32-NEXT: Source Language ID: TB_C (0x0) SYMBOL32-NEXT: CPU Version ID: TCPU_COM (0x3) SYMBOL32-NEXT: StorageClass: C_FILE (0x67) SYMBOL32-NEXT: NumberOfAuxEntries: 3 SYMBOL32-NEXT: File Auxiliary Entry { SYMBOL32-NEXT: Index: 1 SYMBOL32-NEXT: Name: test8.c SYMBOL32-NEXT: Type: XFT_FN (0x0) SYMBOL32-NEXT: } SYMBOL32-NEXT: File Auxiliary Entry { SYMBOL32-NEXT: Index: 2 SYMBOL32-NEXT: Name: Sun Apr 28 15:56:49 2019 SYMBOL32-NEXT: Type: XFT_CT (0x1) SYMBOL32-NEXT: } SYMBOL32-NEXT: File Auxiliary Entry { SYMBOL32-NEXT: Index: 3 SYMBOL32-NEXT: Name: IBM XL C for AIX, Version 16.1.0.2 SYMBOL32-NEXT: Type: XFT_CV (0x2) SYMBOL32-NEXT: } SYMBOL32-NEXT: } SYMBOL32-NEXT: Symbol { SYMBOL32-NEXT: Index: 4 SYMBOL32-NEXT: Name: .text SYMBOL32-NEXT: Value (RelocatableAddress): 0x0 SYMBOL32-NEXT: Section: .text SYMBOL32-NEXT: Type: 0x0 SYMBOL32-NEXT: StorageClass: C_STAT (0x3) SYMBOL32-NEXT: NumberOfAuxEntries: 1 SYMBOL32-NEXT: Sect Auxiliary Entry For Stat { SYMBOL32-NEXT: Index: 5 SYMBOL32-NEXT: SectionLength: 256 SYMBOL32-NEXT: NumberOfRelocEnt: 4 SYMBOL32-NEXT: NumberOfLineNum: 0 SYMBOL32-NEXT: } SYMBOL32-NEXT: } SYMBOL32-NEXT: Symbol { SYMBOL32-NEXT: Index: 6 SYMBOL32-NEXT: Name: .data SYMBOL32-NEXT: Value (RelocatableAddress): 0x100 SYMBOL32-NEXT: Section: .data SYMBOL32-NEXT: Type: 0x0 SYMBOL32-NEXT: StorageClass: C_STAT (0x3) SYMBOL32-NEXT: NumberOfAuxEntries: 1 SYMBOL32-NEXT: Sect Auxiliary Entry For Stat { SYMBOL32-NEXT: Index: 7 SYMBOL32-NEXT: SectionLength: 60 SYMBOL32-NEXT: NumberOfRelocEnt: 11 SYMBOL32-NEXT: NumberOfLineNum: 0 SYMBOL32-NEXT: } SYMBOL32-NEXT: } SYMBOL32-NEXT: Symbol { SYMBOL32-NEXT: Index: 8 SYMBOL32-NEXT: Name: .bss SYMBOL32-NEXT: Value (RelocatableAddress): 0x13C SYMBOL32-NEXT: Section: .bss SYMBOL32-NEXT: Type: 0x0 SYMBOL32-NEXT: StorageClass: C_STAT (0x3) SYMBOL32-NEXT: NumberOfAuxEntries: 1 SYMBOL32-NEXT: Sect Auxiliary Entry For Stat { SYMBOL32-NEXT: Index: 9 SYMBOL32-NEXT: SectionLength: 4 SYMBOL32-NEXT: NumberOfRelocEnt: 0 SYMBOL32-NEXT: NumberOfLineNum: 0 SYMBOL32-NEXT: } SYMBOL32-NEXT: } SYMBOL32-NEXT: Symbol { SYMBOL32-NEXT: Index: 10 SYMBOL32-NEXT: Name: SYMBOL32-NEXT: Value (RelocatableAddress): 0x0 SYMBOL32-NEXT: Section: .text SYMBOL32-NEXT: Type: 0x0 SYMBOL32-NEXT: StorageClass: C_HIDEXT (0x6B) SYMBOL32-NEXT: NumberOfAuxEntries: 1 SYMBOL32-NEXT: CSECT Auxiliary Entry { SYMBOL32-NEXT: Index: 11 SYMBOL32-NEXT: SectionLen: 256 SYMBOL32-NEXT: ParameterHashIndex: 0x0 SYMBOL32-NEXT: TypeChkSectNum: 0x0 SYMBOL32-NEXT: SymbolAlignmentLog2: 7 SYMBOL32-NEXT: SymbolType: XTY_SD (0x1) SYMBOL32-NEXT: StorageMappingClass: XMC_PR (0x0) SYMBOL32-NEXT: StabInfoIndex: 0x0 SYMBOL32-NEXT: StabSectNum: 0x0 SYMBOL32-NEXT: } SYMBOL32-NEXT: } SYMBOL32-NEXT: Symbol { SYMBOL32-NEXT: Index: 12 SYMBOL32-NEXT: Name: .fun1 SYMBOL32-NEXT: Value (RelocatableAddress): 0x0 SYMBOL32-NEXT: Section: .text SYMBOL32-NEXT: Type: 0x20 SYMBOL32-NEXT: StorageClass: C_EXT (0x2) SYMBOL32-NEXT: NumberOfAuxEntries: 1 SYMBOL32-NEXT: CSECT Auxiliary Entry { SYMBOL32-NEXT: Index: 13 SYMBOL32-NEXT: ContainingCsectSymbolIndex: 10 SYMBOL32-NEXT: ParameterHashIndex: 0x0 SYMBOL32-NEXT: TypeChkSectNum: 0x0 SYMBOL32-NEXT: SymbolAlignmentLog2: 0 SYMBOL32-NEXT: SymbolType: XTY_LD (0x2) SYMBOL32-NEXT: StorageMappingClass: XMC_PR (0x0) SYMBOL32-NEXT: StabInfoIndex: 0x0 SYMBOL32-NEXT: StabSectNum: 0x0 SYMBOL32-NEXT: } SYMBOL32-NEXT: } SYMBOL32-NEXT: Symbol { SYMBOL32-NEXT: Index: 14 SYMBOL32-NEXT: Name: .main SYMBOL32-NEXT: Value (RelocatableAddress): 0x60 SYMBOL32-NEXT: Section: .text SYMBOL32-NEXT: Type: 0x20 SYMBOL32-NEXT: StorageClass: C_EXT (0x2) SYMBOL32-NEXT: NumberOfAuxEntries: 1 SYMBOL32-NEXT: CSECT Auxiliary Entry { SYMBOL32-NEXT: Index: 15 SYMBOL32-NEXT: ContainingCsectSymbolIndex: 10 SYMBOL32-NEXT: ParameterHashIndex: 0x0 SYMBOL32-NEXT: TypeChkSectNum: 0x0 SYMBOL32-NEXT: SymbolAlignmentLog2: 0 SYMBOL32-NEXT: SymbolType: XTY_LD (0x2) SYMBOL32-NEXT: StorageMappingClass: XMC_PR (0x0) SYMBOL32-NEXT: StabInfoIndex: 0x0 SYMBOL32-NEXT: StabSectNum: 0x0 SYMBOL32-NEXT: } SYMBOL32-NEXT: } SYMBOL32-NEXT: Symbol { SYMBOL32-NEXT: Index: 16 SYMBOL32-NEXT: Name: TOC SYMBOL32-NEXT: Value (RelocatableAddress): 0x100 SYMBOL32-NEXT: Section: .data SYMBOL32-NEXT: Type: 0x0 SYMBOL32-NEXT: StorageClass: C_HIDEXT (0x6B) SYMBOL32-NEXT: NumberOfAuxEntries: 1 SYMBOL32-NEXT: CSECT Auxiliary Entry { SYMBOL32-NEXT: Index: 17 SYMBOL32-NEXT: SectionLen: 0 SYMBOL32-NEXT: ParameterHashIndex: 0x0 SYMBOL32-NEXT: TypeChkSectNum: 0x0 SYMBOL32-NEXT: SymbolAlignmentLog2: 2 SYMBOL32-NEXT: SymbolType: XTY_SD (0x1) SYMBOL32-NEXT: StorageMappingClass: XMC_TC0 (0xF) SYMBOL32-NEXT: StabInfoIndex: 0x0 SYMBOL32-NEXT: StabSectNum: 0x0 SYMBOL32-NEXT: } SYMBOL32-NEXT: } SYMBOL32-NEXT: Symbol { SYMBOL32-NEXT: Index: 18 SYMBOL32-NEXT: Name: SYMBOL32-NEXT: Value (RelocatableAddress): 0x114 SYMBOL32-NEXT: Section: .data SYMBOL32-NEXT: Type: 0x0 SYMBOL32-NEXT: StorageClass: C_HIDEXT (0x6B) SYMBOL32-NEXT: NumberOfAuxEntries: 1 SYMBOL32-NEXT: CSECT Auxiliary Entry { SYMBOL32-NEXT: Index: 19 SYMBOL32-NEXT: SectionLen: 4 SYMBOL32-NEXT: ParameterHashIndex: 0x0 SYMBOL32-NEXT: TypeChkSectNum: 0x0 SYMBOL32-NEXT: SymbolAlignmentLog2: 2 SYMBOL32-NEXT: SymbolType: XTY_SD (0x1) SYMBOL32-NEXT: StorageMappingClass: XMC_TC (0x3) SYMBOL32-NEXT: StabInfoIndex: 0x0 SYMBOL32-NEXT: StabSectNum: 0x0 SYMBOL32-NEXT: } SYMBOL32-NEXT: } SYMBOL32-NEXT: Symbol { SYMBOL32-NEXT: Index: 20 SYMBOL32-NEXT: Name: SYMBOL32-NEXT: Value (RelocatableAddress): 0x134 SYMBOL32-NEXT: Section: .data SYMBOL32-NEXT: Type: 0x0 SYMBOL32-NEXT: StorageClass: C_HIDEXT (0x6B) SYMBOL32-NEXT: NumberOfAuxEntries: 1 SYMBOL32-NEXT: CSECT Auxiliary Entry { SYMBOL32-NEXT: Index: 21 SYMBOL32-NEXT: SectionLen: 5 SYMBOL32-NEXT: ParameterHashIndex: 0x0 SYMBOL32-NEXT: TypeChkSectNum: 0x0 SYMBOL32-NEXT: SymbolAlignmentLog2: 3 SYMBOL32-NEXT: SymbolType: XTY_SD (0x1) SYMBOL32-NEXT: StorageMappingClass: XMC_RO (0x1) SYMBOL32-NEXT: StabInfoIndex: 0x0 SYMBOL32-NEXT: StabSectNum: 0x0 SYMBOL32-NEXT: } SYMBOL32-NEXT: } SYMBOL32-NEXT: Symbol { SYMBOL32-NEXT: Index: 22 SYMBOL32-NEXT: Name: _$STATIC_BSS SYMBOL32-NEXT: Value (RelocatableAddress): 0x13C SYMBOL32-NEXT: Section: .bss SYMBOL32-NEXT: Type: 0x0 SYMBOL32-NEXT: StorageClass: C_HIDEXT (0x6B) SYMBOL32-NEXT: NumberOfAuxEntries: 1 SYMBOL32-NEXT: CSECT Auxiliary Entry { SYMBOL32-NEXT: Index: 23 SYMBOL32-NEXT: SectionLen: 4 SYMBOL32-NEXT: ParameterHashIndex: 0x0 SYMBOL32-NEXT: TypeChkSectNum: 0x0 SYMBOL32-NEXT: SymbolAlignmentLog2: 2 SYMBOL32-NEXT: SymbolType: XTY_CM (0x3) SYMBOL32-NEXT: StorageMappingClass: XMC_RW (0x5) SYMBOL32-NEXT: StabInfoIndex: 0x0 SYMBOL32-NEXT: StabSectNum: 0x0 SYMBOL32-NEXT: } SYMBOL32-NEXT: } SYMBOL32-NEXT: Symbol { SYMBOL32-NEXT: Index: 24 SYMBOL32-NEXT: Name: _$STATIC_BSS SYMBOL32-NEXT: Value (RelocatableAddress): 0x104 SYMBOL32-NEXT: Section: .data SYMBOL32-NEXT: Type: 0x0 SYMBOL32-NEXT: StorageClass: C_HIDEXT (0x6B) SYMBOL32-NEXT: NumberOfAuxEntries: 1 SYMBOL32-NEXT: CSECT Auxiliary Entry { SYMBOL32-NEXT: Index: 25 SYMBOL32-NEXT: SectionLen: 4 SYMBOL32-NEXT: ParameterHashIndex: 0x0 SYMBOL32-NEXT: TypeChkSectNum: 0x0 SYMBOL32-NEXT: SymbolAlignmentLog2: 2 SYMBOL32-NEXT: SymbolType: XTY_SD (0x1) SYMBOL32-NEXT: StorageMappingClass: XMC_TC (0x3) SYMBOL32-NEXT: StabInfoIndex: 0x0 SYMBOL32-NEXT: StabSectNum: 0x0 SYMBOL32-NEXT: } SYMBOL32-NEXT: } SYMBOL32-NEXT: Symbol { SYMBOL32-NEXT: Index: 26 SYMBOL32-NEXT: Name: fun1 SYMBOL32-NEXT: Value (RelocatableAddress): 0x118 SYMBOL32-NEXT: Section: .data SYMBOL32-NEXT: Type: 0x0 SYMBOL32-NEXT: StorageClass: C_EXT (0x2) SYMBOL32-NEXT: NumberOfAuxEntries: 1 SYMBOL32-NEXT: CSECT Auxiliary Entry { SYMBOL32-NEXT: Index: 27 SYMBOL32-NEXT: SectionLen: 12 SYMBOL32-NEXT: ParameterHashIndex: 0x0 SYMBOL32-NEXT: TypeChkSectNum: 0x0 SYMBOL32-NEXT: SymbolAlignmentLog2: 2 SYMBOL32-NEXT: SymbolType: XTY_SD (0x1) SYMBOL32-NEXT: StorageMappingClass: XMC_DS (0xA) SYMBOL32-NEXT: StabInfoIndex: 0x0 SYMBOL32-NEXT: StabSectNum: 0x0 SYMBOL32-NEXT: } SYMBOL32-NEXT: } SYMBOL32-NEXT: Symbol { SYMBOL32-NEXT: Index: 28 SYMBOL32-NEXT: Name: fun1 SYMBOL32-NEXT: Value (RelocatableAddress): 0x100 SYMBOL32-NEXT: Section: .data SYMBOL32-NEXT: Type: 0x0 SYMBOL32-NEXT: StorageClass: C_HIDEXT (0x6B) SYMBOL32-NEXT: NumberOfAuxEntries: 1 SYMBOL32-NEXT: CSECT Auxiliary Entry { SYMBOL32-NEXT: Index: 29 SYMBOL32-NEXT: SectionLen: 4 SYMBOL32-NEXT: ParameterHashIndex: 0x0 SYMBOL32-NEXT: TypeChkSectNum: 0x0 SYMBOL32-NEXT: SymbolAlignmentLog2: 2 SYMBOL32-NEXT: SymbolType: XTY_SD (0x1) SYMBOL32-NEXT: StorageMappingClass: XMC_TC (0x3) SYMBOL32-NEXT: StabInfoIndex: 0x0 SYMBOL32-NEXT: StabSectNum: 0x0 SYMBOL32-NEXT: } SYMBOL32-NEXT: } SYMBOL32-NEXT: Symbol { SYMBOL32-NEXT: Index: 30 SYMBOL32-NEXT: Name: p SYMBOL32-NEXT: Value (RelocatableAddress): 0x130 SYMBOL32-NEXT: Section: .data SYMBOL32-NEXT: Type: 0x0 SYMBOL32-NEXT: StorageClass: C_EXT (0x2) SYMBOL32-NEXT: NumberOfAuxEntries: 1 SYMBOL32-NEXT: CSECT Auxiliary Entry { SYMBOL32-NEXT: Index: 31 SYMBOL32-NEXT: SectionLen: 4 SYMBOL32-NEXT: ParameterHashIndex: 0x0 SYMBOL32-NEXT: TypeChkSectNum: 0x0 SYMBOL32-NEXT: SymbolAlignmentLog2: 2 SYMBOL32-NEXT: SymbolType: XTY_SD (0x1) SYMBOL32-NEXT: StorageMappingClass: XMC_RW (0x5) SYMBOL32-NEXT: StabInfoIndex: 0x0 SYMBOL32-NEXT: StabSectNum: 0x0 SYMBOL32-NEXT: } SYMBOL32-NEXT: } SYMBOL32-NEXT: Symbol { SYMBOL32-NEXT: Index: 32 SYMBOL32-NEXT: Name: p SYMBOL32-NEXT: Value (RelocatableAddress): 0x108 SYMBOL32-NEXT: Section: .data SYMBOL32-NEXT: Type: 0x0 SYMBOL32-NEXT: StorageClass: C_HIDEXT (0x6B) SYMBOL32-NEXT: NumberOfAuxEntries: 1 SYMBOL32-NEXT: CSECT Auxiliary Entry { SYMBOL32-NEXT: Index: 33 SYMBOL32-NEXT: SectionLen: 4 SYMBOL32-NEXT: ParameterHashIndex: 0x0 SYMBOL32-NEXT: TypeChkSectNum: 0x0 SYMBOL32-NEXT: SymbolAlignmentLog2: 2 SYMBOL32-NEXT: SymbolType: XTY_SD (0x1) SYMBOL32-NEXT: StorageMappingClass: XMC_TC (0x3) SYMBOL32-NEXT: StabInfoIndex: 0x0 SYMBOL32-NEXT: StabSectNum: 0x0 SYMBOL32-NEXT: } SYMBOL32-NEXT: } SYMBOL32-NEXT: Symbol { SYMBOL32-NEXT: Index: 34 SYMBOL32-NEXT: Name: main SYMBOL32-NEXT: Value (RelocatableAddress): 0x124 SYMBOL32-NEXT: Section: .data SYMBOL32-NEXT: Type: 0x0 SYMBOL32-NEXT: StorageClass: C_EXT (0x2) SYMBOL32-NEXT: NumberOfAuxEntries: 1 SYMBOL32-NEXT: CSECT Auxiliary Entry { SYMBOL32-NEXT: Index: 35 SYMBOL32-NEXT: SectionLen: 12 SYMBOL32-NEXT: ParameterHashIndex: 0x0 SYMBOL32-NEXT: TypeChkSectNum: 0x0 SYMBOL32-NEXT: SymbolAlignmentLog2: 2 SYMBOL32-NEXT: SymbolType: XTY_SD (0x1) SYMBOL32-NEXT: StorageMappingClass: XMC_DS (0xA) SYMBOL32-NEXT: StabInfoIndex: 0x0 SYMBOL32-NEXT: StabSectNum: 0x0 SYMBOL32-NEXT: } SYMBOL32-NEXT: } SYMBOL32-NEXT: Symbol { SYMBOL32-NEXT: Index: 36 SYMBOL32-NEXT: Name: main SYMBOL32-NEXT: Value (RelocatableAddress): 0x10C SYMBOL32-NEXT: Section: .data SYMBOL32-NEXT: Type: 0x0 SYMBOL32-NEXT: StorageClass: C_HIDEXT (0x6B) SYMBOL32-NEXT: NumberOfAuxEntries: 1 SYMBOL32-NEXT: CSECT Auxiliary Entry { SYMBOL32-NEXT: Index: 37 SYMBOL32-NEXT: SectionLen: 4 SYMBOL32-NEXT: ParameterHashIndex: 0x0 SYMBOL32-NEXT: TypeChkSectNum: 0x0 SYMBOL32-NEXT: SymbolAlignmentLog2: 2 SYMBOL32-NEXT: SymbolType: XTY_SD (0x1) SYMBOL32-NEXT: StorageMappingClass: XMC_TC (0x3) SYMBOL32-NEXT: StabInfoIndex: 0x0 SYMBOL32-NEXT: StabSectNum: 0x0 SYMBOL32-NEXT: } SYMBOL32-NEXT: } SYMBOL32-NEXT: Symbol { SYMBOL32-NEXT: Index: 38 SYMBOL32-NEXT: Name: i SYMBOL32-NEXT: Value (RelocatableAddress): 0x0 SYMBOL32-NEXT: Section: N_UNDEF SYMBOL32-NEXT: Type: 0x0 SYMBOL32-NEXT: StorageClass: C_EXT (0x2) SYMBOL32-NEXT: NumberOfAuxEntries: 1 SYMBOL32-NEXT: CSECT Auxiliary Entry { SYMBOL32-NEXT: Index: 39 SYMBOL32-NEXT: SectionLen: 0 SYMBOL32-NEXT: ParameterHashIndex: 0x0 SYMBOL32-NEXT: TypeChkSectNum: 0x0 SYMBOL32-NEXT: SymbolAlignmentLog2: 0 SYMBOL32-NEXT: SymbolType: XTY_ER (0x0) SYMBOL32-NEXT: StorageMappingClass: XMC_UA (0x4) SYMBOL32-NEXT: StabInfoIndex: 0x0 SYMBOL32-NEXT: StabSectNum: 0x0 SYMBOL32-NEXT: } SYMBOL32-NEXT: } SYMBOL32-NEXT: Symbol { SYMBOL32-NEXT: Index: 40 SYMBOL32-NEXT: Name: i SYMBOL32-NEXT: Value (RelocatableAddress): 0x110 SYMBOL32-NEXT: Section: .data SYMBOL32-NEXT: Type: 0x0 SYMBOL32-NEXT: StorageClass: C_HIDEXT (0x6B) SYMBOL32-NEXT: NumberOfAuxEntries: 1 SYMBOL32-NEXT: CSECT Auxiliary Entry { SYMBOL32-NEXT: Index: 41 SYMBOL32-NEXT: SectionLen: 4 SYMBOL32-NEXT: ParameterHashIndex: 0x0 SYMBOL32-NEXT: TypeChkSectNum: 0x0 SYMBOL32-NEXT: SymbolAlignmentLog2: 2 SYMBOL32-NEXT: SymbolType: XTY_SD (0x1) SYMBOL32-NEXT: StorageMappingClass: XMC_TC (0x3) SYMBOL32-NEXT: StabInfoIndex: 0x0 SYMBOL32-NEXT: StabSectNum: 0x0 SYMBOL32-NEXT: } SYMBOL32-NEXT: } SYMBOL32-NEXT: Symbol { SYMBOL32-NEXT: Index: 42 SYMBOL32-NEXT: Name: .fun SYMBOL32-NEXT: Value (RelocatableAddress): 0x0 SYMBOL32-NEXT: Section: N_UNDEF SYMBOL32-NEXT: Type: 0x0 SYMBOL32-NEXT: StorageClass: C_EXT (0x2) SYMBOL32-NEXT: NumberOfAuxEntries: 1 SYMBOL32-NEXT: CSECT Auxiliary Entry { SYMBOL32-NEXT: Index: 43 SYMBOL32-NEXT: SectionLen: 0 SYMBOL32-NEXT: ParameterHashIndex: 0x0 SYMBOL32-NEXT: TypeChkSectNum: 0x0 SYMBOL32-NEXT: SymbolAlignmentLog2: 0 SYMBOL32-NEXT: SymbolType: XTY_ER (0x0) SYMBOL32-NEXT: StorageMappingClass: XMC_PR (0x0) SYMBOL32-NEXT: StabInfoIndex: 0x0 SYMBOL32-NEXT: StabSectNum: 0x0 SYMBOL32-NEXT: } SYMBOL32-NEXT: } SYMBOL32-NEXT: ]