RUN: llvm-readobj -s -t -dt -dynamic-table -needed-libs \ RUN: %p/Inputs/shared-object-test.elf-i386 \ RUN: | FileCheck %s -check-prefix ELF RUN: llvm-readobj -s -t -dt -dynamic-table -needed-libs \ RUN: %p/Inputs/shared-object-test.elf-i386 \ RUN: | FileCheck %s -check-prefix ELF32 RUN: llvm-readobj -s -t -dt -dynamic-table -needed-libs \ RUN: %p/Inputs/shared-object-test.elf-x86-64 \ RUN: | FileCheck %s -check-prefix ELF RUN: llvm-readobj -s -t -dt -dynamic-table -needed-libs \ RUN: %p/Inputs/shared-object-test.elf-x86-64 \ RUN: | FileCheck %s -check-prefix ELF64 ELF64: Format: ELF64-x86-64 ELF64: Arch: x86_64 ELF64: AddressSize: 64bit ELF64: LoadName: libfoo.so ELF32: Format: ELF32-i386 ELF32: Arch: i386 ELF32: AddressSize: 32bit ELF32: LoadName: libfoo.so ELF: Sections [ ELF: Section { ELF: Name: (0) ELF: Type: SHT_NULL ELF: Flags [ (0x0) ELF: ] ELF: } ELF: Section { ELF: Name: .hash ELF: Type: SHT_HASH ELF: Flags [ (0x2) ELF: SHF_ALLOC ELF: ] ELF: } ELF: Section { ELF: Name: .dynsym ELF: Type: SHT_DYNSYM ELF: Flags [ (0x2) ELF: SHF_ALLOC ELF: ] ELF: } ELF: Section { ELF: Name: .dynstr ELF: Type: SHT_STRTAB ELF: Flags [ (0x2) ELF: SHF_ALLOC ELF: ] ELF: } ELF: Section { ELF: Name: .text ELF: Type: SHT_PROGBITS ELF: Flags [ (0x6) ELF: SHF_ALLOC ELF: SHF_EXECINSTR ELF: ] ELF: } ELF: Section { ELF: Name: .eh_frame ELF: Type: SHT_PROGBITS ELF: Flags [ (0x2) ELF: SHF_ALLOC ELF: ] ELF: } ELF: Section { ELF: Name: .tdata ELF: Type: SHT_PROGBITS ELF: Flags [ (0x403) ELF: SHF_ALLOC ELF: SHF_TLS ELF: SHF_WRITE ELF: ] ELF: } ELF: Section { ELF: Name: .dynamic ELF: Type: SHT_DYNAMIC ELF: Flags [ (0x3) ELF: SHF_ALLOC ELF: SHF_WRITE ELF: ] ELF: } ELF: Section { ELF: Name: .got.plt ELF: Type: SHT_PROGBITS ELF: Flags [ (0x3) ELF: SHF_ALLOC ELF: SHF_WRITE ELF: ] ELF: } ELF: Section { ELF: Name: .data ELF: Type: SHT_PROGBITS ELF: Flags [ (0x3) ELF: SHF_ALLOC ELF: SHF_WRITE ELF: ] ELF: } ELF: Section { ELF: Name: .bss ELF: Type: SHT_NOBITS ELF: Flags [ (0x3) ELF: SHF_ALLOC ELF: SHF_WRITE ELF: ] ELF: } ELF: Section { ELF: Name: .shstrtab ELF: Type: SHT_STRTAB ELF: Flags [ (0x0) ELF: ] ELF: } ELF: Section { ELF: Name: .symtab ELF: Type: SHT_SYMTAB ELF: Flags [ (0x0) ELF: ] ELF: } ELF: Section { ELF: Name: .strtab ELF: Type: SHT_STRTAB ELF: Flags [ (0x0) ELF: ] ELF: } ELF: ] ELF: Symbols [ ELF: Symbol { ELF: Name: (0) ELF: Binding: Local ELF: Type: Section ELF: Section: .hash ELF: } ELF: Symbol { ELF: Name: (0) ELF: Binding: Local ELF: Type: Section ELF: Section: .dynsym ELF: } ELF: Symbol { ELF: Name: (0) ELF: Binding: Local ELF: Type: Section ELF: Section: .dynstr ELF: } ELF: Symbol { ELF: Name: (0) ELF: Binding: Local ELF: Type: Section ELF: Section: .text ELF: } ELF: Symbol { ELF: Name: (0) ELF: Binding: Local ELF: Type: Section ELF: Section: .eh_frame ELF: } ELF: Symbol { ELF: Name: (0) ELF: Binding: Local ELF: Type: Section ELF: Section: .tdata ELF: } ELF: Symbol { ELF: Name: (0) ELF: Binding: Local ELF: Type: Section ELF: Section: .dynamic ELF: } ELF: Symbol { ELF: Name: (0) ELF: Binding: Local ELF: Type: Section ELF: Section: .got.plt ELF: } ELF: Symbol { ELF: Name: (0) ELF: Binding: Local ELF: Type: Section ELF: Section: .data ELF: } ELF: Symbol { ELF: Name: (0) ELF: Binding: Local ELF: Type: Section ELF: Section: .bss ELF: } ELF: Symbol { ELF: Name: shared.ll ELF: Binding: Local ELF: Type: File ELF: Section: Absolute (0xFFF1) ELF: } ELF: Symbol { ELF: Name: local_func ELF: Binding: Local ELF: Type: Function ELF: Section: .text ELF: } ELF: Symbol { ELF: Name: _GLOBAL_OFFSET_TABLE_ ELF: Binding: Local ELF: Type: Object ELF: Section: Absolute (0xFFF1) ELF: } ELF: Symbol { ELF: Name: _DYNAMIC ELF: Binding: Local ELF: Type: Object ELF: Section: Absolute (0xFFF1) ELF: } ELF: Symbol { ELF: Name: common_sym ELF: Binding: Global ELF: Type: Object ELF: Section: .bss ELF: } ELF: Symbol { ELF: Name: tls_sym ELF: Binding: Global ELF: Type: TLS ELF: Section: .tdata ELF: } ELF: Symbol { ELF: Name: defined_sym ELF: Binding: Global ELF: Type: Object ELF: Section: .data ELF: } ELF: Symbol { ELF: Name: __bss_start ELF: Binding: Global ELF: Type: None ELF: Section: Absolute (0xFFF1) ELF: } ELF: Symbol { ELF: Name: _end ELF: Binding: Global ELF: Type: None ELF: Section: Absolute (0xFFF1) ELF: } ELF: Symbol { ELF: Name: global_func ELF: Binding: Global ELF: Type: Function ELF: Section: .text ELF: } ELF: Symbol { ELF: Name: _edata ELF: Binding: Global ELF: Type: None ELF: Section: Absolute (0xFFF1) ELF: } ELF: ] ELF: DynamicSymbols [ ELF: Symbol { ELF: Name: common_sym ELF: Binding: Global ELF: Type: Object ELF: Section: .bss ELF: } ELF: Symbol { ELF: Name: tls_sym ELF: Binding: Global ELF: Type: TLS ELF: Section: .tdata ELF: } ELF: Symbol { ELF: Name: defined_sym ELF: Binding: Global ELF: Type: Object ELF: Section: .data ELF: } ELF: Symbol { ELF: Name: __bss_start ELF: Binding: Global ELF: Type: None ELF: Section: Absolute (0xFFF1) ELF: } ELF: Symbol { ELF: Name: _end ELF: Binding: Global ELF: Type: None ELF: Section: Absolute (0xFFF1) ELF: } ELF: Symbol { ELF: Name: global_func ELF: Binding: Global ELF: Type: Function ELF: Section: .text ELF: } ELF: Symbol { ELF: Name: _edata ELF: Binding: Global ELF: Type: None ELF: Section: Absolute (0xFFF1) ELF: } ELF: ] ELF32: DynamicSection [ (9 entries) ELF32: Tag Type Name/Value ELF32: 0x00000001 NEEDED Shared library: [libc.so.6] ELF32: 0x00000001 NEEDED Shared library: [libm.so.6] ELF32: 0x0000000E SONAME Library soname: [libfoo.so] ELF32: 0x00000004 HASH {{[0-9a-f]+}} ELF32: 0x00000005 STRTAB {{[0-9a-f]+}} ELF32: 0x00000006 SYMTAB {{[0-9a-f]+}} ELF32: 0x0000000A STRSZ {{[0-9]+}} (bytes) ELF32: 0x0000000B SYMENT {{[0-9]+}} (bytes) ELF32: 0x00000000 NULL 0x0 ELF32: ] ELF64: DynamicSection [ (9 entries) ELF64: Tag Type Name/Value ELF64: 0x0000000000000001 NEEDED Shared library: [libc.so.6] ELF64: 0x0000000000000001 NEEDED Shared library: [libm.so.6] ELF64: 0x000000000000000E SONAME Library soname: [libfoo.so] ELF64: 0x0000000000000004 HASH {{[0-9a-f]+}} ELF64: 0x0000000000000005 STRTAB {{[0-9a-f]+}} ELF64: 0x0000000000000006 SYMTAB {{[0-9a-f]+}} ELF64: 0x000000000000000A STRSZ {{[0-9]+}} (bytes) ELF64: 0x000000000000000B SYMENT {{[0-9]+}} (bytes) ELF64: 0x0000000000000000 NULL 0x0 ELF64: ] ELF: NeededLibraries [ ELF-NEXT: libc.so.6 ELF-NEXT: libm.so.6 ELF-NEXT: ]