mirror of
https://github.com/RPCS3/llvm.git
synced 2026-07-19 15:13:49 -04:00
c3396d4174
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
51 lines
1.4 KiB
Plaintext
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
|