[lld] r249417 - Never fetch members for weak undefined symbols.
Rafael Espindola via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 6 08:18:51 PDT 2015
Author: rafael
Date: Tue Oct 6 10:18:50 2015
New Revision: 249417
URL: http://llvm.org/viewvc/llvm-project?rev=249417&view=rev
Log:
Never fetch members for weak undefined symbols.
We were still fetching them when the archive was seen first.
We should experiment with just letting lazy symbols get to compare, it
might be cleaner for ELF.
Modified:
lld/trunk/ELF/SymbolTable.cpp
lld/trunk/test/elf2/archive.s
Modified: lld/trunk/ELF/SymbolTable.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/SymbolTable.cpp?rev=249417&r1=249416&r2=249417&view=diff
==============================================================================
--- lld/trunk/ELF/SymbolTable.cpp (original)
+++ lld/trunk/ELF/SymbolTable.cpp Tue Oct 6 10:18:50 2015
@@ -222,6 +222,12 @@ template <class ELFT> void SymbolTable::
if (Lazy *L = dyn_cast<Lazy>(Existing)) {
if (New->isUndefined()) {
+ if (New->isWeak()) {
+ // See the explanation in SymbolTable::addLazy
+ L->setUsedInRegularObj();
+ L->setWeak();
+ return;
+ }
addMemberFile(L);
return;
}
Modified: lld/trunk/test/elf2/archive.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf2/archive.s?rev=249417&r1=249416&r2=249417&view=diff
==============================================================================
--- lld/trunk/test/elf2/archive.s (original)
+++ lld/trunk/test/elf2/archive.s Tue Oct 6 10:18:50 2015
@@ -30,4 +30,7 @@
# RUN: lld -flavor gnu2 %tar %t -o %tout
# RUN: llvm-nm %tout | FileCheck --check-prefix=AR-FIRST %s
-# AR-FIRST: T _start
+# AR-FIRST: T _start
+# AR-FIRST-NEXT: w bar
+# AR-FIRST-NEXT: T end
+# AR-FIRST-NEXT: w foo
More information about the llvm-commits
mailing list