RuntimeDyldELF: Don't abort on R_AARCH64_NONE relocation

Do nothing on R_AARCH64_NONE relocation. The relocation is used by BOLT when re-linking the final binary. It is used as a dummy relocation hack in order to stop the RuntimeDyld to skip the allocation of the section.

Reviewed By: lhames

Differential Revision: https://reviews.llvm.org/D117066
This commit is contained in:
Vladislav Khmelevsky 2022-01-13 00:08:45 +03:00
parent ea9394c43c
commit 6b22c370c8
2 changed files with 26 additions and 0 deletions

View File

@ -422,6 +422,8 @@ void RuntimeDyldELF::resolveAArch64Relocation(const SectionEntry &Section,
default: default:
report_fatal_error("Relocation type not implemented yet!"); report_fatal_error("Relocation type not implemented yet!");
break; break;
case ELF::R_AARCH64_NONE:
break;
case ELF::R_AARCH64_ABS16: { case ELF::R_AARCH64_ABS16: {
uint64_t Result = Value + Addend; uint64_t Result = Value + Addend;
assert(static_cast<int64_t>(Result) >= INT16_MIN && Result < UINT16_MAX); assert(static_cast<int64_t>(Result) >= INT16_MIN && Result < UINT16_MAX);

View File

@ -0,0 +1,24 @@
# RUN: yaml2obj %s -o %t.o
# RUN: llvm-rtdyld -triple=arm64-none-linux-gnu %t.o -printline
## Verify rtdyld doesn't abort in presence of R_AARCH64_NONE.
!ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
OSABI: ELFOSABI_FREEBSD
Type: ET_REL
Machine: EM_AARCH64
Sections:
- Name: .text
Type: SHT_PROGBITS
Flags: [ SHF_ALLOC ]
- Name: .rela.text
Type: SHT_RELA
Link: .symtab
Info: .text
Relocations:
- Offset: 0x0000000000000000
Type: R_AARCH64_NONE
Symbols: