[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