diff options
-rw-r--r-- | lld/ELF/Config.h | 1 | ||||
-rw-r--r-- | lld/ELF/SymbolTable.cpp | 13 |
2 files changed, 9 insertions, 5 deletions
diff --git a/lld/ELF/Config.h b/lld/ELF/Config.h index 0410bc4c04e..d5d830921ee 100644 --- a/lld/ELF/Config.h +++ b/lld/ELF/Config.h @@ -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; diff --git a/lld/ELF/SymbolTable.cpp b/lld/ELF/SymbolTable.cpp index 176a4a65546..85d161f7a8e 100644 --- a/lld/ELF/SymbolTable.cpp +++ b/lld/ELF/SymbolTable.cpp @@ -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; |