mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 03:02:36 +01:00
52e5ec1f09
Commit 6a2ea84600ba ("BPF: Add more relocation kinds") added new relocations R_BPF_64_ABS64 and R_BPF_64_ABS32 for normal 64-bit and 32-bit data relocations. This is to replace some of functionalities with R_BPF_64_64 and R_BPF_64_32 so that new R_BPF_64_64 and R_BPF_64_32 semantics are for ld_imm64 and call instructions only. The BPF support in lib/Object/RelocationResolver.cpp is used to perform normal data relocations for the case like DWARFObjInMemory with an object file (search function getRelocationResolver() in file DebugInfo/DWARF/DWARFContext.cpp) or llvm-readobj to dump ".stack_sizes" section data. In all these casees, normal 64-bit and 32-bit relocations are performed and such resolution resolution is exactly what implemented in RelocationResolver.cpp. But Commit 6a2ea84600ba missed to change R_BPF_64_64/R_BPF_64_32 to R_BPF_64_ABS64/R_BPF_64_ABS32. This patch fixed the issue and added a test for it with llvm-readobj dumping ".stack_sizes" section. Differential Revision: https://reviews.llvm.org/D103864
87 lines
2.4 KiB
YAML
87 lines
2.4 KiB
YAML
# RUN: yaml2obj %s -o %t
|
|
# RUN: llvm-readobj -r --stack-sizes %t | FileCheck %s
|
|
|
|
# CHECK: Relocations [
|
|
# CHECK-NEXT: Section (3) .rel.text {
|
|
# CHECK-NEXT: 0x0 R_BPF_64_64 g
|
|
# CHECK-NEXT: }
|
|
# CHECK-NEXT: Section (5) .rel.stack_sizes {
|
|
# CHECK-NEXT: 0x0 R_BPF_64_ABS64 .text
|
|
# CHECK-NEXT: }
|
|
# CHECK-NEXT: ]
|
|
# CHECK: StackSizes [
|
|
# CHECK-NEXT: Entry {
|
|
# CHECK-NEXT: Function: test
|
|
# CHECK-NEXT: Size: 0x0
|
|
# CHECK-NEXT: }
|
|
# CHECK-NEXT: ]
|
|
|
|
--- !ELF
|
|
FileHeader:
|
|
Class: ELFCLASS64
|
|
Data: ELFDATA2LSB
|
|
Type: ET_REL
|
|
Machine: EM_BPF
|
|
Sections:
|
|
- Name: .text
|
|
Type: SHT_PROGBITS
|
|
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
|
|
AddressAlign: 0x8
|
|
Content: '1801000000000000000000000000000061100000000000009500000000000000'
|
|
- Name: .stack_sizes
|
|
Type: SHT_PROGBITS
|
|
Flags: [ SHF_LINK_ORDER ]
|
|
Link: .text
|
|
AddressAlign: 0x1
|
|
Entries:
|
|
- Size: 0x0
|
|
- Name: .bss
|
|
Type: SHT_NOBITS
|
|
Flags: [ SHF_WRITE, SHF_ALLOC ]
|
|
AddressAlign: 0x4
|
|
Size: 0x4
|
|
- Name: .rel.text
|
|
Type: SHT_REL
|
|
Link: .symtab
|
|
AddressAlign: 0x8
|
|
Info: .text
|
|
Relocations:
|
|
- Symbol: g
|
|
Type: R_BPF_64_64
|
|
- Name: .rel.stack_sizes
|
|
Type: SHT_REL
|
|
Link: .symtab
|
|
AddressAlign: 0x8
|
|
Info: .stack_sizes
|
|
Relocations:
|
|
- Symbol: .text
|
|
Type: R_BPF_64_ABS64
|
|
- Type: SectionHeaderTable
|
|
Sections:
|
|
- Name: .strtab
|
|
- Name: .text
|
|
- Name: .rel.text
|
|
- Name: .stack_sizes
|
|
- Name: .rel.stack_sizes
|
|
- Name: .bss
|
|
- Name: .symtab
|
|
- Name: .shstrtab
|
|
Symbols:
|
|
- Name: t.c
|
|
Type: STT_FILE
|
|
Index: SHN_ABS
|
|
- Name: .text
|
|
Type: STT_SECTION
|
|
Section: .text
|
|
- Name: test
|
|
Type: STT_FUNC
|
|
Section: .text
|
|
Binding: STB_GLOBAL
|
|
Size: 0x20
|
|
- Name: g
|
|
Type: STT_OBJECT
|
|
Section: .bss
|
|
Binding: STB_GLOBAL
|
|
Size: 0x4
|
|
...
|