Files
llvm/test/tools/llvm-readobj/elf-loadname.test
T
Fangrui Song c3396d4174 [yaml2obj] Write the section header table after section contents
Linkers (ld.bfd/gold/lld) place the section header table at the very
end. This allows tools to strip it, which is optional in executable/shared objects.
In addition, if we add or section, the size of the section header table
will change. Placing the section header table in the end keeps section
offsets unchanged.

yaml2obj currently places the section header table immediately after the
program header. Follow what linkers do to make offset updating easier.

Reviewed By: grimar

Differential Revision: https://reviews.llvm.org/D67221

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@371074 91177308-0d34-0410-b5e6-96231b3b80d8
2019-09-05 14:25:57 +00:00

51 lines
1.4 KiB
Plaintext

## Check we are able to dump library soname properly.
# RUN: yaml2obj %s -o %t.o
# RUN: llvm-readobj %t.o | FileCheck %s --check-prefix LLVM
# RUN: llvm-readelf --dynamic-table %t.o | FileCheck %s --check-prefix GNU
# LLVM: Format: ELF64-x86-64
# LLVM-NEXT: Arch: x86_64
# LLVM-NEXT: AddressSize: 64bit
# LLVM-NEXT: LoadName: test.so
# GNU: Dynamic section at offset 0x80 contains 4 entries:
# GNU-NEXT: Tag Type Name/Value
# GNU-NEXT: 0x0000000000000005 (STRTAB) 0x0
# GNU-NEXT: 0x000000000000000a (STRSZ) 7 (bytes)
# GNU-NEXT: 0x000000000000000e (SONAME) Library soname: [test.so]
# GNU-NEXT: 0x0000000000000000 (NULL) 0x0
!ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_EXEC
Machine: EM_X86_64
Sections:
- Name: .dynstr
Type: SHT_STRTAB
Flags: [ SHF_ALLOC ]
Content: '746573742e736f00' ## "test.so"
- Name: .dynamic
Type: SHT_DYNAMIC
Flags: [ SHF_ALLOC ]
Link: .dynstr
Entries:
- Tag: DT_STRTAB
Value: 0x0000000000000000
- Tag: DT_STRSZ
Value: 0x0000000000000007
- Tag: DT_SONAME
Value: 0x0000000000000000
- Tag: DT_NULL
Value: 0x0000000000000000
ProgramHeaders:
- Type: PT_LOAD
Flags: [ PF_R ]
VAddr: 0x0000
PAddr: 0x0000
Sections:
- Section: .dynstr
- Section: .dynamic