[lld] r251523 - [ELF2/AArch64] Add support for R_AARCH64_PREL64.

Davide Italiano via llvm-commits llvm-commits at lists.llvm.org
Wed Oct 28 09:14:19 PDT 2015


Author: davide
Date: Wed Oct 28 11:14:18 2015
New Revision: 251523

URL: http://llvm.org/viewvc/llvm-project?rev=251523&view=rev
Log:
[ELF2/AArch64] Add support for R_AARCH64_PREL64.

Modified:
    lld/trunk/ELF/Target.cpp
    lld/trunk/test/elf2/aarch64-data-relocs.s

Modified: lld/trunk/ELF/Target.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Target.cpp?rev=251523&r1=251522&r2=251523&view=diff
==============================================================================
--- lld/trunk/ELF/Target.cpp (original)
+++ lld/trunk/ELF/Target.cpp Wed Oct 28 11:14:18 2015
@@ -628,6 +628,10 @@ void AArch64TargetInfo::relocateOne(uint
     updateAArch64Adr(Loc, (X >> 12) & 0x1FFFFF); // X[32:12]
     break;
   }
+  case R_AARCH64_PREL64:
+    // No overflow check needed.
+    write64le(Loc, SA - P);
+    break;
   default:
     error("unrecognized reloc " + Twine(Type));
   }

Modified: lld/trunk/test/elf2/aarch64-data-relocs.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf2/aarch64-data-relocs.s?rev=251523&r1=251522&r2=251523&view=diff
==============================================================================
--- lld/trunk/test/elf2/aarch64-data-relocs.s (original)
+++ lld/trunk/test/elf2/aarch64-data-relocs.s Wed Oct 28 11:14:18 2015
@@ -27,3 +27,14 @@
 // CHECK-NEXT:     1006:       24 00 00 00     .word
 //                             ^-- A = 0x24
 // CHECK-NEXT:     100a:       00 00 00 00     .word
+
+.section .R_AARCH64_PREL64, "ax", at progbits
+  .xword sym - . + 36
+
+// S + A = 0x24
+// P = 0x100e
+// SA - P = 0xfffffffffffff016
+// CHECK: Disassembly of section .R_AARCH64_PREL64:
+// CHECK-NEXT: $d.3:
+// CHECK-NEXT:     100e:       16 f0 ff ff     .word
+// CHECK-NEXT:     1012:       ff ff ff ff     .word




More information about the llvm-commits mailing list