AArch64/ARM64: support relocated ADR instruction
authorTim Northover <tnorthover@apple.com>
Thu, 24 Apr 2014 12:56:30 +0000 (12:56 +0000)
committerTim Northover <tnorthover@apple.com>
Thu, 24 Apr 2014 12:56:30 +0000 (12:56 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207109 91177308-0d34-0410-b5e6-96231b3b80d8

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

index d73188d4f0b6fe12248a23eeb51e3f1fbede4c0c..2ecc73cf808f99cf6afb9f9c61165fdb8038b990 100644 (file)
@@ -67,7 +67,8 @@ unsigned ARM64ELFObjectWriter::GetRelocType(const MCValue &Target,
     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;
index 093891d931aa067db03cc0f97339463bd47a62df..ee9b2073694a78828ec9a2e07e94df302b76dc7e 100644 (file)
@@ -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