Remove Config::FirstElf.
authorRui Ueyama <ruiu@google.com>
Sun, 15 Oct 2017 21:43:09 +0000 (21:43 +0000)
committerRui Ueyama <ruiu@google.com>
Sun, 15 Oct 2017 21:43:09 +0000 (21:43 +0000)
llvm-svn: 315881

lld/ELF/Config.h
lld/ELF/SymbolTable.cpp

index 0410bc4c04ef2fbabeeb83ef0ecd43ac348f0aca..d5d830921eead260d6e5958b440c46528d43a73d 100644 (file)
@@ -72,7 +72,6 @@ struct VersionDefinition {
 // and such fields have the same name as the corresponding options.
 // Most fields are initialized by the driver.
 struct Configuration {
-  InputFile *FirstElf = nullptr;
   uint8_t OSABI = 0;
   llvm::CachePruningPolicy ThinLTOCachePolicy;
   llvm::StringMap<uint64_t> SectionStartMap;
index 176a4a6554639b086f528873f1955e569d3997fc..85d161f7a8e1ec5b6f1f184b245d2b6ebb990e34 100644 (file)
@@ -31,6 +31,14 @@ using namespace lld::elf;
 
 SymbolTable *elf::Symtab;
 
+static InputFile *getFirstElf() {
+  if (!ObjectFiles.empty())
+    return ObjectFiles[0];
+  if (!SharedFiles.empty())
+    return SharedFiles[0];
+  return nullptr;
+}
+
 // All input object files must be for the same architecture
 // (e.g. it does not make sense to link x86 object files with
 // MIPS object files.) This function checks for that error.
@@ -48,15 +56,12 @@ template <class ELFT> static bool isCompatible(InputFile *F) {
   if (!Config->Emulation.empty())
     error(toString(F) + " is incompatible with " + Config->Emulation);
   else
-    error(toString(F) + " is incompatible with " + toString(Config->FirstElf));
+    error(toString(F) + " is incompatible with " + toString(getFirstElf()));
   return false;
 }
 
 // Add symbols in File to the symbol table.
 template <class ELFT> void SymbolTable::addFile(InputFile *File) {
-  if (!Config->FirstElf && isa<ELFFileBase<ELFT>>(File))
-    Config->FirstElf = File;
-
   if (!isCompatible<ELFT>(File))
     return;