[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