diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2016-02-28 16:27:08 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2016-02-28 16:27:08 +0000 |
commit | c778aa4a302e68a5090ee4fcd64628df24b9beea (patch) | |
tree | 5fe2a1d254c1fb6d5e4d02d2b8b20b2320aece72 /lld/lib/Core | |
parent | 8c3184137b7fe0b78d154cd788779f1f70589db8 (diff) | |
download | bcm5719-llvm-c778aa4a302e68a5090ee4fcd64628df24b9beea.tar.gz bcm5719-llvm-c778aa4a302e68a5090ee4fcd64628df24b9beea.zip |
Delete more COFF and ELF bits from the old linker.
llvm-svn: 262184
Diffstat (limited to 'lld/lib/Core')
-rw-r--r-- | lld/lib/Core/Resolver.cpp | 11 | ||||
-rw-r--r-- | lld/lib/Core/SymbolTable.cpp | 17 |
2 files changed, 1 insertions, 27 deletions
diff --git a/lld/lib/Core/Resolver.cpp b/lld/lib/Core/Resolver.cpp index 840cbbe1d67..de98fb83412 100644 --- a/lld/lib/Core/Resolver.cpp +++ b/lld/lib/Core/Resolver.cpp @@ -98,7 +98,6 @@ ErrorOr<bool> Resolver::handleArchiveFile(File &file) { bool dataSymbolOnly)->ErrorOr<bool> { if (File *member = archiveFile->find(undefName, dataSymbolOnly)) { member->setOrdinal(_ctx.getNextOrdinalAndIncrement()); - member->beforeLink(); updatePreloadArchiveMap(); return handleFile(*member); } @@ -142,15 +141,6 @@ bool Resolver::doUndefinedAtom(const UndefinedAtom &atom) { if (newUndefAdded) _undefines.push_back(atom.name()); - // If the undefined symbol has an alternative name, try to resolve the - // symbol with the name to give it a second chance. This feature is used - // for COFF "weak external" symbol. - if (newUndefAdded || !_symbolTable.isDefined(atom.name())) { - if (const UndefinedAtom *fallbackAtom = atom.fallback()) { - doUndefinedAtom(*fallbackAtom); - _symbolTable.addReplacement(&atom, fallbackAtom); - } - } return newUndefAdded; } @@ -297,7 +287,6 @@ bool Resolver::resolveUndefines() { } DEBUG_WITH_TYPE("resolver", llvm::dbgs() << "Loaded file: " << file->path() << "\n"); - file->beforeLink(); updatePreloadArchiveMap(); switch (file->kind()) { case File::kindErrorObject: diff --git a/lld/lib/Core/SymbolTable.cpp b/lld/lib/Core/SymbolTable.cpp index 9382db9af25..99e8547d601 100644 --- a/lld/lib/Core/SymbolTable.cpp +++ b/lld/lib/Core/SymbolTable.cpp @@ -196,23 +196,8 @@ bool SymbolTable::addByName(const Atom &newAtom) { << " and in " << newUndef->file().path() << "\n"; } - const UndefinedAtom *existingFallback = existingUndef->fallback(); - const UndefinedAtom *newFallback = newUndef->fallback(); - bool hasDifferentFallback = - (existingFallback && newFallback && - existingFallback->name() != newFallback->name()); - if (hasDifferentFallback) { - llvm::errs() << "lld warning: undefined symbol " - << existingUndef->name() << " has different fallback: " - << existingFallback->name() << " in " - << existingUndef->file().path() << " and " - << newFallback->name() << " in " - << newUndef->file().path() << "\n"; - } - - bool hasNewFallback = newUndef->fallback(); if (sameCanBeNull) - useNew = hasNewFallback; + useNew = false; else useNew = (newUndef->canBeNull() < existingUndef->canBeNull()); break; |