[PATCH] D19044: ELF: Do not create relative relocations for undefined symbols.

Peter Collingbourne via llvm-commits llvm-commits at lists.llvm.org
Tue Apr 12 19:30:22 PDT 2016


This revision was automatically updated to reflect the committed changes.
Closed by commit rL266161: ELF: Do not create relative relocations for undefined symbols. (authored by pcc).

Changed prior to commit:
  http://reviews.llvm.org/D19044?vs=53506&id=53512#toc

Repository:
  rL LLVM

http://reviews.llvm.org/D19044

Files:
  lld/trunk/ELF/Writer.cpp
  lld/trunk/test/ELF/pie-weak.s

Index: lld/trunk/test/ELF/pie-weak.s
===================================================================
--- lld/trunk/test/ELF/pie-weak.s
+++ lld/trunk/test/ELF/pie-weak.s
@@ -0,0 +1,16 @@
+# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o
+# RUN: ld.lld -pie %t.o -o %t
+# RUN: llvm-readobj -r %t | FileCheck --check-prefix=RELOCS %s
+# RUN: llvm-objdump -d %t | FileCheck --check-prefix=DISASM %s
+
+# RELOCS:      Relocations [
+# RELOCS-NEXT: ]
+
+.weak foo
+
+.globl _start
+_start:
+# DISASM: _start:
+# DISASM-NEXT: 1000: 48 8b 05 69 10 00 00 movq 4201(%rip), %rax
+#                                              ^ .got - (.text + 7)
+mov foo at gotpcrel(%rip), %rax
Index: lld/trunk/ELF/Writer.cpp
===================================================================
--- lld/trunk/ELF/Writer.cpp
+++ lld/trunk/ELF/Writer.cpp
@@ -573,6 +573,10 @@
           DynType = Target->TlsGotRel;
         else if (Preemptible)
           DynType = Target->GotRel;
+        else if (Body.isUndefined())
+          // Weak undefined symbols evaluate to zero, so don't create
+          // relocations for them.
+          continue;
         else
           DynType = Target->RelativeRel;
         AddDyn({DynType, Out<ELFT>::Got, Body.getGotOffset<ELFT>(),


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D19044.53512.patch
Type: text/x-patch
Size: 1269 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160413/28f12ff0/attachment.bin>


More information about the llvm-commits mailing list