[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