[PATCH] D18739: Don't omit dynamic relocations for the GOT.

Ed Schouten via llvm-commits llvm-commits at lists.llvm.org
Tue Apr 5 11:52:36 PDT 2016


ed updated this revision to Diff 52719.
ed added a comment.

Simplify, as suggested by Rafael. Also add a test.


http://reviews.llvm.org/D18739

Files:
  ELF/Writer.cpp
  test/ELF/aarch64-got-relocations.s

Index: test/ELF/aarch64-got-relocations.s
===================================================================
--- /dev/null
+++ test/ELF/aarch64-got-relocations.s
@@ -0,0 +1,21 @@
+# REQUIRES: aarch64
+# RUN: llvm-mc -filetype=obj -triple=aarch64-unknown-cloudabi %s -o %t.o
+# RUN: ld.lld -pie %t.o -o %t
+# RUN: llvm-readobj -r %t | FileCheck %s
+
+# If we're addressing a global relatively through the GOT, we still need to
+# emit a relocation for the entry in the GOT itself.
+# CHECK: Relocations [
+# CHECK:   Section (4) .rela.dyn {
+# CHECK:     0x{{[0-9A-F]+}} R_AARCH64_RELATIVE - 0x{{[0-9A-F]+}}
+# CHECK:   }
+# CHECK: ]
+
+	.globl	_start
+	.type	_start, at function
+_start:
+	adrp	x8, :got:i
+	ldr	x8, [x8, :got_lo12:i]
+
+	.type	i, at object
+	.comm	i,4,4
Index: ELF/Writer.cpp
===================================================================
--- ELF/Writer.cpp
+++ ELF/Writer.cpp
@@ -432,9 +432,7 @@
         // ftp://www.linux-mips.org/pub/linux/mips/doc/ABI/mipsabi.pdf
         continue;
 
-      bool Dynrel = Config->Pic && !Target->isRelRelative(Type) &&
-                    !Target->isSizeRel(Type);
-      if (Preemptible || Dynrel) {
+      if (Preemptible || Config->Pic) {
         uint32_t DynType;
         if (Body.isTls())
           DynType = Target->TlsGotRel;


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D18739.52719.patch
Type: text/x-patch
Size: 1293 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160405/5ba5aeb9/attachment.bin>


More information about the llvm-commits mailing list