summaryrefslogtreecommitdiffstats
path: root/lld/lib/Core
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2016-02-28 16:27:08 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2016-02-28 16:27:08 +0000
commitc778aa4a302e68a5090ee4fcd64628df24b9beea (patch)
tree5fe2a1d254c1fb6d5e4d02d2b8b20b2320aece72 /lld/lib/Core
parent8c3184137b7fe0b78d154cd788779f1f70589db8 (diff)
downloadbcm5719-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.cpp11
-rw-r--r--lld/lib/Core/SymbolTable.cpp17
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;
OpenPOWER on IntegriCloud