Fix a crash bug in --start-lib.

Previously, Lazy symbols were created for undefined symbols even though
such symbols cannot be resolved by loading object files. This patch
fixes that bug.

llvm-svn: 265847
diff --git a/lld/ELF/InputFiles.cpp b/lld/ELF/InputFiles.cpp
index 52b6d44..b8681e5 100644
--- a/lld/ELF/InputFiles.cpp
+++ b/lld/ELF/InputFiles.cpp
@@ -594,7 +594,8 @@
     StringRef StringTable = check(Obj.getStringTableForSymtab(Sec));
     std::vector<StringRef> V;
     for (const Elf_Sym &Sym : Syms.slice(FirstNonLocal))
-      V.push_back(check(Sym.getName(StringTable)));
+      if (Sym.st_shndx != SHN_UNDEF)
+        V.push_back(check(Sym.getName(StringTable)));
     return V;
   }
   return {};
@@ -608,6 +609,8 @@
   for (const BasicSymbolRef &Sym : Obj->symbols()) {
     if (BitcodeFile::shouldSkip(Sym))
       continue;
+    if (Sym.getFlags() == BasicSymbolRef::SF_Undefined)
+      continue;
     SmallString<64> Name;
     raw_svector_ostream OS(Name);
     Sym.printName(OS);
@@ -616,7 +619,7 @@
   return V;
 }
 
-// Returns a vector of globally-visible symbol names.
+// Returns a vector of globally-visible defined symbol names.
 std::vector<StringRef> LazyObjectFile::getSymbols() {
   if (isBitcode(this->MB))
     return getBitcodeSymbols();