[llvm] 6b22c37 - RuntimeDyldELF: Don't abort on R_AARCH64_NONE relocation
Vladislav Khmelevsky via llvm-commits
llvm-commits at lists.llvm.org
Thu Jan 13 00:56:46 PST 2022
Author: Vladislav Khmelevsky
Date: 2022-01-13T11:54:48+03:00
New Revision: 6b22c370c82398273d690383f46830dd886e446b
URL: https://github.com/llvm/llvm-project/commit/6b22c370c82398273d690383f46830dd886e446b
DIFF: https://github.com/llvm/llvm-project/commit/6b22c370c82398273d690383f46830dd886e446b.diff
LOG: 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
Added:
llvm/test/ExecutionEngine/RuntimeDyld/AArch64/ELF_ARM64_NONE.yaml
Modified:
llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
Removed:
################################################################################
diff --git a/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp b/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
index 0de76ab78e0fd..f92618afdff6d 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<int64_t>(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 0000000000000..59ff7b6892d39
--- /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:
More information about the llvm-commits
mailing list