[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