blob: 8401affc090cff7c6e6fe639d8534c767f62e07b [file] [log] [blame]
# RUN: llvm-readobj --sections --symbols --dyn-syms --needed-libs \
# RUN: %p/Inputs/shared-object-test.elf-i386 | FileCheck %s
# RUN: llvm-readobj --sections --symbols --dyn-syms --needed-libs \
# RUN: %p/Inputs/shared-object-test.elf-x86-64 | FileCheck %s
# CHECK: Sections [
# CHECK: Section {
# CHECK: Name: (0)
# CHECK: Type: SHT_NULL
# CHECK: Flags [ (0x0)
# CHECK: ]
# CHECK: }
# CHECK: Section {
# CHECK: Name: .hash
# CHECK: Type: SHT_HASH
# CHECK: Flags [ (0x2)
# CHECK: SHF_ALLOC
# CHECK: ]
# CHECK: }
# CHECK: Section {
# CHECK: Name: .dynsym
# CHECK: Type: SHT_DYNSYM
# CHECK: Flags [ (0x2)
# CHECK: SHF_ALLOC
# CHECK: ]
# CHECK: }
# CHECK: Section {
# CHECK: Name: .dynstr
# CHECK: Type: SHT_STRTAB
# CHECK: Flags [ (0x2)
# CHECK: SHF_ALLOC
# CHECK: ]
# CHECK: }
# CHECK: Section {
# CHECK: Name: .text
# CHECK: Type: SHT_PROGBITS
# CHECK: Flags [ (0x6)
# CHECK: SHF_ALLOC
# CHECK: SHF_EXECINSTR
# CHECK: ]
# CHECK: }
# CHECK: Section {
# CHECK: Name: .eh_frame
# CHECK: Type: SHT_PROGBITS
# CHECK: Flags [ (0x2)
# CHECK: SHF_ALLOC
# CHECK: ]
# CHECK: }
# CHECK: Section {
# CHECK: Name: .tdata
# CHECK: Type: SHT_PROGBITS
# CHECK: Flags [ (0x403)
# CHECK: SHF_ALLOC
# CHECK: SHF_TLS
# CHECK: SHF_WRITE
# CHECK: ]
# CHECK: }
# CHECK: Section {
# CHECK: Name: .dynamic
# CHECK: Type: SHT_DYNAMIC
# CHECK: Flags [ (0x3)
# CHECK: SHF_ALLOC
# CHECK: SHF_WRITE
# CHECK: ]
# CHECK: }
# CHECK: Section {
# CHECK: Name: .got.plt
# CHECK: Type: SHT_PROGBITS
# CHECK: Flags [ (0x3)
# CHECK: SHF_ALLOC
# CHECK: SHF_WRITE
# CHECK: ]
# CHECK: }
# CHECK: Section {
# CHECK: Name: .data
# CHECK: Type: SHT_PROGBITS
# CHECK: Flags [ (0x3)
# CHECK: SHF_ALLOC
# CHECK: SHF_WRITE
# CHECK: ]
# CHECK: }
# CHECK: Section {
# CHECK: Name: .bss
# CHECK: Type: SHT_NOBITS
# CHECK: Flags [ (0x3)
# CHECK: SHF_ALLOC
# CHECK: SHF_WRITE
# CHECK: ]
# CHECK: }
# CHECK: Section {
# CHECK: Name: .shstrtab
# CHECK: Type: SHT_STRTAB
# CHECK: Flags [ (0x0)
# CHECK: ]
# CHECK: }
# CHECK: Section {
# CHECK: Name: .symtab
# CHECK: Type: SHT_SYMTAB
# CHECK: Flags [ (0x0)
# CHECK: ]
# CHECK: }
# CHECK: Section {
# CHECK: Name: .strtab
# CHECK: Type: SHT_STRTAB
# CHECK: Flags [ (0x0)
# CHECK: ]
# CHECK: }
# CHECK: ]
# CHECK: Symbols [
# CHECK: Symbol {
# CHECK: Name: .hash (0)
# CHECK: Binding: Local
# CHECK: Type: Section
# CHECK: Section: .hash
# CHECK: }
# CHECK: Symbol {
# CHECK: Name: .dynsym (0)
# CHECK: Binding: Local
# CHECK: Type: Section
# CHECK: Section: .dynsym
# CHECK: }
# CHECK: Symbol {
# CHECK: Name: .dynstr (0)
# CHECK: Binding: Local
# CHECK: Type: Section
# CHECK: Section: .dynstr
# CHECK: }
# CHECK: Symbol {
# CHECK: Name: .text (0)
# CHECK: Binding: Local
# CHECK: Type: Section
# CHECK: Section: .text
# CHECK: }
# CHECK: Symbol {
# CHECK: Name: .eh_frame (0)
# CHECK: Binding: Local
# CHECK: Type: Section
# CHECK: Section: .eh_frame
# CHECK: }
# CHECK: Symbol {
# CHECK: Name: .tdata (0)
# CHECK: Binding: Local
# CHECK: Type: Section
# CHECK: Section: .tdata
# CHECK: }
# CHECK: Symbol {
# CHECK: Name: .dynamic (0)
# CHECK: Binding: Local
# CHECK: Type: Section
# CHECK: Section: .dynamic
# CHECK: }
# CHECK: Symbol {
# CHECK: Name: .got.plt (0)
# CHECK: Binding: Local
# CHECK: Type: Section
# CHECK: Section: .got.plt
# CHECK: }
# CHECK: Symbol {
# CHECK: Name: .data (0)
# CHECK: Binding: Local
# CHECK: Type: Section
# CHECK: Section: .data
# CHECK: }
# CHECK: Symbol {
# CHECK: Name: .bss (0)
# CHECK: Binding: Local
# CHECK: Type: Section
# CHECK: Section: .bss
# CHECK: }
# CHECK: Symbol {
# CHECK: Name: shared.ll
# CHECK: Binding: Local
# CHECK: Type: File
# CHECK: Section: Absolute (0xFFF1)
# CHECK: }
# CHECK: Symbol {
# CHECK: Name: local_func
# CHECK: Binding: Local
# CHECK: Type: Function
# CHECK: Section: .text
# CHECK: }
# CHECK: Symbol {
# CHECK: Name: _GLOBAL_OFFSET_TABLE_
# CHECK: Binding: Local
# CHECK: Type: Object
# CHECK: Section: Absolute (0xFFF1)
# CHECK: }
# CHECK: Symbol {
# CHECK: Name: _DYNAMIC
# CHECK: Binding: Local
# CHECK: Type: Object
# CHECK: Section: Absolute (0xFFF1)
# CHECK: }
# CHECK: Symbol {
# CHECK: Name: common_sym
# CHECK: Binding: Global
# CHECK: Type: Object
# CHECK: Section: .bss
# CHECK: }
# CHECK: Symbol {
# CHECK: Name: tls_sym
# CHECK: Binding: Global
# CHECK: Type: TLS
# CHECK: Section: .tdata
# CHECK: }
# CHECK: Symbol {
# CHECK: Name: defined_sym
# CHECK: Binding: Global
# CHECK: Type: Object
# CHECK: Section: .data
# CHECK: }
# CHECK: Symbol {
# CHECK: Name: __bss_start
# CHECK: Binding: Global
# CHECK: Type: None
# CHECK: Section: Absolute (0xFFF1)
# CHECK: }
# CHECK: Symbol {
# CHECK: Name: _end
# CHECK: Binding: Global
# CHECK: Type: None
# CHECK: Section: Absolute (0xFFF1)
# CHECK: }
# CHECK: Symbol {
# CHECK: Name: global_func
# CHECK: Binding: Global
# CHECK: Type: Function
# CHECK: Section: .text
# CHECK: }
# CHECK: Symbol {
# CHECK: Name: _edata
# CHECK: Binding: Global
# CHECK: Type: None
# CHECK: Section: Absolute (0xFFF1)
# CHECK: }
# CHECK: ]
# CHECK: DynamicSymbols [
# CHECK: Symbol {
# CHECK: Name: common_sym
# CHECK: Binding: Global
# CHECK: Type: Object
# CHECK: Section: .bss
# CHECK: }
# CHECK: Symbol {
# CHECK: Name: tls_sym
# CHECK: Binding: Global
# CHECK: Type: TLS
# CHECK: Section: .tdata
# CHECK: }
# CHECK: Symbol {
# CHECK: Name: defined_sym
# CHECK: Binding: Global
# CHECK: Type: Object
# CHECK: Section: .data
# CHECK: }
# CHECK: Symbol {
# CHECK: Name: __bss_start
# CHECK: Binding: Global
# CHECK: Type: None
# CHECK: Section: Absolute (0xFFF1)
# CHECK: }
# CHECK: Symbol {
# CHECK: Name: _end
# CHECK: Binding: Global
# CHECK: Type: None
# CHECK: Section: Absolute (0xFFF1)
# CHECK: }
# CHECK: Symbol {
# CHECK: Name: global_func
# CHECK: Binding: Global
# CHECK: Type: Function
# CHECK: Section: .text
# CHECK: }
# CHECK: Symbol {
# CHECK: Name: _edata
# CHECK: Binding: Global
# CHECK: Type: None
# CHECK: Section: Absolute (0xFFF1)
# CHECK: }
# CHECK: ]
# CHECK: NeededLibraries [
# CHECK-NEXT: libc.so.6
# CHECK-NEXT: libm.so.6
# CHECK-NEXT: ]