[llvm] r207109 - AArch64/ARM64: support relocated ADR instruction

Tim Northover tnorthover at apple.com
Thu Apr 24 05:56:31 PDT 2014


Author: tnorthover
Date: Thu Apr 24 07:56:30 2014
New Revision: 207109

URL: http://llvm.org/viewvc/llvm-project?rev=207109&view=rev
Log:
AArch64/ARM64: support relocated ADR instruction

Modified:
    llvm/trunk/lib/Target/ARM64/MCTargetDesc/ARM64ELFObjectWriter.cpp
    llvm/trunk/test/MC/AArch64/elf-reloc-pcreladdressing.s

Modified: llvm/trunk/lib/Target/ARM64/MCTargetDesc/ARM64ELFObjectWriter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM64/MCTargetDesc/ARM64ELFObjectWriter.cpp?rev=207109&r1=207108&r2=207109&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM64/MCTargetDesc/ARM64ELFObjectWriter.cpp (original)
+++ llvm/trunk/lib/Target/ARM64/MCTargetDesc/ARM64ELFObjectWriter.cpp Thu Apr 24 07:56:30 2014
@@ -67,7 +67,8 @@ unsigned ARM64ELFObjectWriter::GetRelocT
     case FK_Data_8:
       return ELF::R_AARCH64_PREL64;
     case ARM64::fixup_arm64_pcrel_adr_imm21:
-      llvm_unreachable("No ELF relocations supported for ADR at the moment");
+      assert(SymLoc == ARM64MCExpr::VK_NONE && "unexpected ADR relocation");
+      return ELF::R_AARCH64_ADR_PREL_LO21;
     case ARM64::fixup_arm64_pcrel_adrp_imm21:
       if (SymLoc == ARM64MCExpr::VK_ABS && !IsNC)
         return ELF::R_AARCH64_ADR_PREL_PG_HI21;

Modified: llvm/trunk/test/MC/AArch64/elf-reloc-pcreladdressing.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/AArch64/elf-reloc-pcreladdressing.s?rev=207109&r1=207108&r2=207109&view=diff
==============================================================================
--- llvm/trunk/test/MC/AArch64/elf-reloc-pcreladdressing.s (original)
+++ llvm/trunk/test/MC/AArch64/elf-reloc-pcreladdressing.s Thu Apr 24 07:56:30 2014
@@ -1,6 +1,9 @@
 // RUN: llvm-mc -triple=aarch64-none-linux-gnu -filetype=obj %s -o - | \
 // RUN:   llvm-readobj -r | FileCheck -check-prefix=OBJ %s
 
+        // RUN: llvm-mc -triple=arm64-none-linux-gnu -filetype=obj %s -o - | \
+// RUN:   llvm-readobj -r | FileCheck -check-prefix=OBJ %s
+
         adr x2, some_label
         adrp x5, some_label
 





More information about the llvm-commits mailing list