[lld] efb7a71 - [ELF] Support missing relocations in AArch64::getImplicitAddend()

Fangrui Song via llvm-commits llvm-commits at lists.llvm.org
Sat Jul 30 01:24:59 PDT 2022


Author: Fangrui Song
Date: 2022-07-30T01:24:55-07:00
New Revision: efb7a71a13e5cd7000e15ab9d125d1a2f240977d

URL: https://github.com/llvm/llvm-project/commit/efb7a71a13e5cd7000e15ab9d125d1a2f240977d
DIFF: https://github.com/llvm/llvm-project/commit/efb7a71a13e5cd7000e15ab9d125d1a2f240977d.diff

LOG: [ELF] Support missing relocations in AArch64::getImplicitAddend()

Added: 
    

Modified: 
    lld/ELF/Arch/AArch64.cpp
    lld/ELF/Driver.cpp

Removed: 
    


################################################################################
diff  --git a/lld/ELF/Arch/AArch64.cpp b/lld/ELF/Arch/AArch64.cpp
index d3b337a996fd..807e5dda9d5b 100644
--- a/lld/ELF/Arch/AArch64.cpp
+++ b/lld/ELF/Arch/AArch64.cpp
@@ -198,11 +198,16 @@ int64_t AArch64::getImplicitAddend(const uint8_t *buf, RelType type) const {
   case R_AARCH64_TLSDESC:
     return read64(buf + 8);
   case R_AARCH64_NONE:
+  case R_AARCH64_GLOB_DAT:
+  case R_AARCH64_JUMP_SLOT:
     return 0;
   case R_AARCH64_PREL32:
     return SignExtend64<32>(read32(buf));
   case R_AARCH64_ABS64:
   case R_AARCH64_PREL64:
+  case R_AARCH64_RELATIVE:
+  case R_AARCH64_IRELATIVE:
+  case R_AARCH64_TLS_TPREL64:
     return read64(buf);
   default:
     internalLinkerError(getErrorLocation(buf),

diff  --git a/lld/ELF/Driver.cpp b/lld/ELF/Driver.cpp
index 7dc4ab2f57de..9fe450855998 100644
--- a/lld/ELF/Driver.cpp
+++ b/lld/ELF/Driver.cpp
@@ -1533,7 +1533,8 @@ static void setConfigs(opt::InputArgList &args) {
   // enable the debug checks for all targets, but currently not all targets
   // have support for reading Elf_Rel addends, so we only enable for a subset.
 #ifndef NDEBUG
-  bool checkDynamicRelocsDefault = m == EM_ARM || m == EM_386 || m == EM_MIPS ||
+  bool checkDynamicRelocsDefault = m == EM_AARCH64 || m == EM_ARM ||
+                                   m == EM_386 || m == EM_MIPS ||
                                    m == EM_X86_64 || m == EM_RISCV;
 #else
   bool checkDynamicRelocsDefault = false;


        


More information about the llvm-commits mailing list