Files
clang-p2996/lldb/test/Shell/ObjectFile/ELF/aarch32-relocations.yaml
Stefan Gränitz 64a2520bac [lldb][ObjectFileELF] Support AArch32 in ApplyRelocations
Allow the ObjectFileELF plugin to resolve R_ARM_ABS32 relocations from AArch32 object files. This fixes https://github.com/llvm/llvm-project/issues/61948

The existing architectures work with RELA-type relocation records that read addend from the relocation entry. REL-type relocations in AArch32 store addend in-place.
The new function doesn't re-use ELFRelocation::RelocAddend32(), because the interface doesn't match: in addition to the relocation entry we need the actual target section memory.

Reviewed By: labath

Differential Revision: https://reviews.llvm.org/D147642
2023-04-29 17:34:39 +02:00

63 lines
2.0 KiB
YAML

# RUN: yaml2obj %s -o %t
# RUN: lldb-test object-file -contents %t | FileCheck %s
## Test that R_ARM_ABS32 relocations are resolved in .debug_info sections on aarch32.
## REL-type relocations store implicit addend as signed values inline.
## We relocate the symbol foo with 4 different addends and bar once in the .debug_info section.
## Results that exceed the 32-bit range or overflow are logged and ignored.
# CHECK: Name: .debug_info
# CHECK: Data: (
#
# Addends: Zero Positive Negative Overflow Out-of-range
# 00000000 04030201 D6FFFFFF D5FFFFFF FFFFFF7F
# CHECK-NEXT: 0000: 2A000000 2E030201 00000000 D5FFFFFF FFFFFF7F
# CHECK-NEXT: )
--- !ELF
FileHeader:
Class: ELFCLASS32
Data: ELFDATA2LSB
Type: ET_REL
Machine: EM_ARM
Flags: [ EF_ARM_EABI_VER5 ]
Sections:
- Name: .text
Type: SHT_PROGBITS
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
- Name: .debug_info
Type: SHT_PROGBITS
Content: 0000000004030201D6FFFFFFD5FFFFFFFFFFFF7F
- Name: .rel.debug_info
Type: SHT_REL
Info: .debug_info
Relocations:
- Offset: 0x0
Symbol: foo
Type: R_ARM_ABS32
- Offset: 0x4
Symbol: foo
Type: R_ARM_ABS32
- Offset: 0x8
Symbol: foo
Type: R_ARM_ABS32
- Offset: 0xC
Symbol: foo
Type: R_ARM_ABS32
- Offset: 0x10
Symbol: bar
Type: R_ARM_ABS32
Symbols:
- Name: .debug_info
Type: STT_SECTION
Section: .debug_info
- Name: foo
Type: STT_FUNC
Section: .debug_info
Value: 0x0000002A
- Name: bar
Type: STT_FUNC
Section: .debug_info
Value: 0xFF000000
...