llvm-project/llvm/test/tools/llvm-objdump/ELF/private-headers.test
Fangrui Song 7c26356703
[llvm-objdump] Rework .gnu.version_d dumping
and fix crash when vd_aux is invalid (#86611).

vd_version, vd_flags, vd_ndx, and vd_cnt in Elf{32,64}_Verdef are
16-bit. Change VerDef to use uint16_t instead.

vda_name specifies a NUL-terminated string. Update getVersionDefinitions
to remove some `.c_str()`.

Pull Request: https://github.com/llvm/llvm-project/pull/128434
2025-02-28 09:38:48 -08:00

68 lines
1.9 KiB
Plaintext

## Check that with ELF input --private-headers outputs the program header,
## dynamic section and version definitions.
# RUN: yaml2obj %s -o %t
# RUN: llvm-objdump --private-headers %t | FileCheck %s
# CHECK: Program Header:
# CHECK-NEXT: LOAD off 0x00000000000000b0 vaddr 0x0000000000001000 paddr 0x0000000000001000 align 2**0
# CHECK-NEXT: filesz 0x000000000000003d memsz 0x000000000000003d flags ---
# CHECK-NEXT: DYNAMIC off 0x00000000000000cd vaddr 0x000000000000101d paddr 0x000000000000101d align 2**0
# CHECK-NEXT: filesz 0x0000000000000020 memsz 0x0000000000000020 flags ---
# CHECK: Dynamic Section:
# CHECK-NEXT: NEEDED bar
# CHECK: Version definitions:
# CHECK-NEXT: 1 0x01 0x075bcd15 foo
# CHECK-NEXT: 2 0x02 0x3ade68b1 VERSION_1
# CHECK-NEXT: VERSION_2
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_EXEC
Machine: EM_X86_64
Sections:
- Name: .dynstr
Type: SHT_STRTAB
Address: 0x1000
Content: "0062617200666F6F0056455253494F4E5F320056455253494F4E5F3100"
# Content is: bar, foo, VERSION_2, VERSION_1
- Name: .dynamic
Type: SHT_DYNAMIC
Flags: [ SHF_ALLOC ]
Link: 1
Entries:
- Tag: DT_NEEDED
Value: 0x1
- Tag: DT_NULL
Value: 0x0
- Name: .gnu.version_d
Type: SHT_GNU_verdef
AddressAlign: 4
Entries:
- Version: 1
Flags: 1
VersionNdx: 1
Hash: 123456789
Names:
- foo
- Version: 1
Flags: 2
VersionNdx: 2
Hash: 987654321
Names:
- VERSION_1
- VERSION_2
ProgramHeaders:
- Type: PT_LOAD
VAddr: 0x1000
FirstSec: .dynstr
LastSec: .dynamic
- Type: PT_DYNAMIC
VAddr: 0x101D
FirstSec: .dynamic
LastSec: .dynamic
DynamicSymbols:
- Name: bar
Binding: STB_GLOBAL