Georgii Rymar 51f4958057 [yaml2obj/obj2yaml] - Improve dumping/creating of ELF versioning sections.
This makes the following improvements.

For `SHT_GNU_versym`:
 * yaml2obj: set `sh_link` to index of `.dynsym` section automatically.
For `SHT_GNU_verdef`:
 * yaml2obj: set `sh_link` to index of `.dynstr` section automatically.
 * yaml2obj: set `sh_info` field automatically.
 * obj2yaml: don't dump the `Info` field when its value matches the number of version definitions.
For `SHT_GNU_verneed`:
 * yaml2obj: set `sh_link` to index of `.dynstr` section automatically.
 * yaml2obj: set `sh_info` field automatically.
 * obj2yaml: don't dump the `Info` field when its value matches the number of version dependencies.

Also, simplifies few test cases.

Differential revision: https://reviews.llvm.org/D94956
2021-01-21 10:36:48 +03:00

47 lines
1.3 KiB
Plaintext

# RUN: yaml2obj %s -o %t
# RUN: llvm-objdump -p %t | FileCheck %s
# CHECK: Version References:
# CHECK-NEXT: required from dso.so.0:
# CHECK-NEXT: 0x000004d2 0x0a 03 v1
# CHECK-NEXT: 0x0000162e 0x0b 04 v2
# CHECK-NEXT: required from dso.so.1:
# CHECK-NEXT: 0x000011d7 0x0c 02 v3
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_EXEC
Machine: EM_X86_64
Entry: 0x0000000000201000
Sections:
- Name: .gnu.version_r
Type: SHT_GNU_verneed
Flags: [ SHF_ALLOC ]
Address: 0x0000000000200250
Link: .dynstr
AddressAlign: 0x0000000000000004
Dependencies:
- Version: 1
File: dso.so.0
Entries:
- Name: v1
Hash: 1234
Flags: 10
Other: 3
- Name: v2
Hash: 5678
Flags: 11
Other: 4
- Version: 1
File: dso.so.1
Entries:
- Name: v3
Hash: 4567
Flags: 12
Other: 2
DynamicSymbols:
- Name: f1
Binding: STB_GLOBAL