[lld] r249520 - Don't create dynamic relocations for weak undefined symbols.

Rafael Espindola via llvm-commits llvm-commits at lists.llvm.org
Tue Oct 6 21:22:56 PDT 2015


Author: rafael
Date: Tue Oct  6 23:22:55 2015
New Revision: 249520

URL: http://llvm.org/viewvc/llvm-project?rev=249520&view=rev
Log:
Don't create dynamic relocations for weak undefined symbols.

Modified:
    lld/trunk/ELF/OutputSections.cpp
    lld/trunk/test/elf2/dynamic-reloc.s

Modified: lld/trunk/ELF/OutputSections.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/OutputSections.cpp?rev=249520&r1=249519&r2=249520&view=diff
==============================================================================
--- lld/trunk/ELF/OutputSections.cpp (original)
+++ lld/trunk/ELF/OutputSections.cpp Tue Oct  6 23:22:55 2015
@@ -413,7 +413,9 @@ lld::elf2::getLocalSymVA(const typename
 bool lld::elf2::canBePreempted(const SymbolBody *Body) {
   if (!Body)
     return false;
-  if (Body->isShared() || Body->isUndefined())
+  if (Body->isShared())
+    return true;
+  if (Body->isUndefined() && !Body->isWeak())
     return true;
   if (!Config->Shared)
     return false;

Modified: lld/trunk/test/elf2/dynamic-reloc.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf2/dynamic-reloc.s?rev=249520&r1=249519&r2=249520&view=diff
==============================================================================
--- lld/trunk/test/elf2/dynamic-reloc.s (original)
+++ lld/trunk/test/elf2/dynamic-reloc.s Tue Oct  6 23:22:55 2015
@@ -59,4 +59,6 @@
 .global _start
 _start:
 .quad bar + 0x42
+.weak foo
+.quad foo
 call main




More information about the llvm-commits mailing list