From 6b22c370c82398273d690383f46830dd886e446b Mon Sep 17 00:00:00 2001 From: Vladislav Khmelevsky Date: Thu, 13 Jan 2022 00:08:45 +0300 Subject: [PATCH] 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 --- .../RuntimeDyld/RuntimeDyldELF.cpp | 2 ++ .../RuntimeDyld/AArch64/ELF_ARM64_NONE.yaml | 24 +++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 llvm/test/ExecutionEngine/RuntimeDyld/AArch64/ELF_ARM64_NONE.yaml diff --git a/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp b/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp index 0de76ab78e0f..f92618afdff6 100644 --- a/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp +++ b/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp @@ -422,6 +422,8 @@ void RuntimeDyldELF::resolveAArch64Relocation(const SectionEntry &Section, default: report_fatal_error("Relocation type not implemented yet!"); break; + case ELF::R_AARCH64_NONE: + break; case ELF::R_AARCH64_ABS16: { uint64_t Result = Value + Addend; assert(static_cast(Result) >= INT16_MIN && Result < UINT16_MAX); diff --git a/llvm/test/ExecutionEngine/RuntimeDyld/AArch64/ELF_ARM64_NONE.yaml b/llvm/test/ExecutionEngine/RuntimeDyld/AArch64/ELF_ARM64_NONE.yaml new file mode 100644 index 000000000000..59ff7b6892d3 --- /dev/null +++ b/llvm/test/ExecutionEngine/RuntimeDyld/AArch64/ELF_ARM64_NONE.yaml @@ -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: