Re-commit r231545: PECOFF: Do not add extraneous symbols to the dead strip root
authorRui Ueyama <ruiu@google.com>
Sun, 8 Mar 2015 21:31:36 +0000 (21:31 +0000)
committerRui Ueyama <ruiu@google.com>
Sun, 8 Mar 2015 21:31:36 +0000 (21:31 +0000)
That commit was reverted in r231582 as it was a culprit for
buildbot breakage. Turned out it's not.

llvm-svn: 231610

lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp

index 5eec68c..6abd689 100644 (file)
@@ -375,8 +375,10 @@ void FileCOFF::beforeLink() {
 
   // Add /INCLUDE'ed symbols to the file as if they existed in the
   // file as undefined symbols.
-  for (StringRef sym : undefSyms)
+  for (StringRef sym : undefSyms) {
     addUndefinedSymbol(sym);
+    _ctx.addDeadStripRoot(sym);
+  }
 
   // One can define alias symbols using /alternatename:<sym>=<sym> option.
   // The mapping for /alternatename is in the context object. This helper
@@ -387,10 +389,6 @@ void FileCOFF::beforeLink() {
   // SEH. Disable SEH if the file being read is not compatible.
   if (!isCompatibleWithSEH())
     _ctx.setSafeSEH(false);
-
-  if (_ctx.deadStrip())
-    for (const UndefinedAtom *undef : undefined())
-      _ctx.addDeadStripRoot(undef->name());
 }
 
 /// Iterate over the symbol table to retrieve all symbols.