[lld] r264653 - Remove dead flags.
Rui Ueyama via llvm-commits
llvm-commits at lists.llvm.org
Mon Mar 28 13:59:48 PDT 2016
Author: ruiu
Date: Mon Mar 28 15:59:47 2016
New Revision: 264653
URL: http://llvm.org/viewvc/llvm-project?rev=264653&view=rev
Log:
Remove dead flags.
searchArchivesToOverrideTentativeDefinitions and
searchSharedLibrariesToOverrideTentativeDefinitions are always false.
For the dead flags, we have a fairly large amount of code which is
never be executed.
http://reviews.llvm.org/D17791
Modified:
lld/trunk/include/lld/Core/ArchiveLibraryFile.h
lld/trunk/include/lld/Core/LinkingContext.h
lld/trunk/include/lld/Core/Resolver.h
lld/trunk/include/lld/Core/SharedLibraryFile.h
lld/trunk/lib/Core/Resolver.cpp
lld/trunk/lib/ReaderWriter/FileArchive.cpp
lld/trunk/lib/ReaderWriter/MachO/File.h
lld/trunk/lib/ReaderWriter/MachO/FlatNamespaceFile.h
lld/trunk/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp
Modified: lld/trunk/include/lld/Core/ArchiveLibraryFile.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/include/lld/Core/ArchiveLibraryFile.h?rev=264653&r1=264652&r2=264653&view=diff
==============================================================================
--- lld/trunk/include/lld/Core/ArchiveLibraryFile.h (original)
+++ lld/trunk/include/lld/Core/ArchiveLibraryFile.h Mon Mar 28 15:59:47 2016
@@ -32,7 +32,7 @@ public:
/// Check if any member of the archive contains an Atom with the
/// specified name and return the File object for that member, or nullptr.
- virtual File *find(StringRef name, bool dataSymbolOnly) = 0;
+ virtual File *find(StringRef name) = 0;
virtual std::error_code
parseAllMembers(std::vector<std::unique_ptr<File>> &result) = 0;
Modified: lld/trunk/include/lld/Core/LinkingContext.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/include/lld/Core/LinkingContext.h?rev=264653&r1=264652&r2=264653&view=diff
==============================================================================
--- lld/trunk/include/lld/Core/LinkingContext.h (original)
+++ lld/trunk/include/lld/Core/LinkingContext.h Mon Mar 28 15:59:47 2016
@@ -69,28 +69,6 @@ public:
_deadStripRoots.push_back(symbolName);
}
- /// Archive files (aka static libraries) are normally lazily loaded. That is,
- /// object files within an archive are only loaded and linked in, if the
- /// object file contains a DefinedAtom which will replace an existing
- /// UndefinedAtom. If this method returns true, core linking will also look
- /// for archive members to replace existing tentative definitions in addition
- /// to replacing undefines. Note: a "tentative definition" (also called a
- /// "common" symbols) is a C (but not C++) concept. They are modeled in lld
- /// as a DefinedAtom with merge() of mergeAsTentative.
- bool searchArchivesToOverrideTentativeDefinitions() const {
- return _searchArchivesToOverrideTentativeDefinitions;
- }
-
- /// Normally core linking will turn a tentative definition into a real
- /// definition if not replaced by a real DefinedAtom from some object file.
- /// If this method returns true, core linking will search all supplied
- /// dynamic shared libraries for symbol names that match remaining tentative
- /// definitions. If any are found, the corresponding tentative definition
- /// atom is replaced with SharedLibraryAtom.
- bool searchSharedLibrariesToOverrideTentativeDefinitions() const {
- return _searchSharedLibrariesToOverrideTentativeDefinitions;
- }
-
/// Normally, every UndefinedAtom must be replaced by a DefinedAtom or a
/// SharedLibraryAtom for the link to be successful. This method controls
/// whether core linking prints out a list of remaining UndefinedAtoms.
@@ -139,12 +117,6 @@ public:
void setDeadStripping(bool enable) { _deadStrip = enable; }
void setGlobalsAreDeadStripRoots(bool v) { _globalsAreDeadStripRoots = v; }
- void setSearchArchivesToOverrideTentativeDefinitions(bool search) {
- _searchArchivesToOverrideTentativeDefinitions = search;
- }
- void setSearchSharedLibrariesToOverrideTentativeDefinitions(bool search) {
- _searchSharedLibrariesToOverrideTentativeDefinitions = search;
- }
void setPrintRemainingUndefines(bool print) {
_printRemainingUndefines = print;
}
@@ -257,12 +229,10 @@ protected:
StringRef _entrySymbolName;
bool _deadStrip = false;
bool _globalsAreDeadStripRoots = false;
- bool _searchArchivesToOverrideTentativeDefinitions = false;
- bool _searchSharedLibrariesToOverrideTentativeDefinitions = false;
bool _printRemainingUndefines = true;
bool _allowRemainingUndefines = false;
bool _logInputFiles = false;
- bool _allowShlibUndefines = true;
+ bool _allowShlibUndefines = false;
std::vector<StringRef> _deadStripRoots;
std::vector<const char *> _llvmOptions;
StringRefVector _initialUndefinedSymbols;
Modified: lld/trunk/include/lld/Core/Resolver.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/include/lld/Core/Resolver.h?rev=264653&r1=264652&r2=264653&view=diff
==============================================================================
--- lld/trunk/include/lld/Core/Resolver.h (original)
+++ lld/trunk/include/lld/Core/Resolver.h Mon Mar 28 15:59:47 2016
@@ -56,7 +56,7 @@ public:
std::unique_ptr<SimpleFile> resultFile() { return std::move(_result); }
private:
- typedef std::function<ErrorOr<bool>(StringRef, bool)> UndefCallback;
+ typedef std::function<ErrorOr<bool>(StringRef)> UndefCallback;
bool undefinesAdded(int begin, int end);
File *getFile(int &index);
@@ -67,8 +67,7 @@ private:
void deadStripOptimize();
bool checkUndefines();
void removeCoalescedAwayAtoms();
- ErrorOr<bool> forEachUndefines(File &file, bool searchForOverrides,
- UndefCallback callback);
+ ErrorOr<bool> forEachUndefines(File &file, UndefCallback callback);
void markLive(const Atom *atom);
Modified: lld/trunk/include/lld/Core/SharedLibraryFile.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/include/lld/Core/SharedLibraryFile.h?rev=264653&r1=264652&r2=264653&view=diff
==============================================================================
--- lld/trunk/include/lld/Core/SharedLibraryFile.h (original)
+++ lld/trunk/include/lld/Core/SharedLibraryFile.h Mon Mar 28 15:59:47 2016
@@ -27,8 +27,7 @@ public:
/// Check if the shared library exports a symbol with the specified name.
/// If so, return a SharedLibraryAtom which represents that exported
/// symbol. Otherwise return nullptr.
- virtual OwningAtomPtr<SharedLibraryAtom> exports(StringRef name,
- bool dataSymbolOnly) const = 0;
+ virtual OwningAtomPtr<SharedLibraryAtom> exports(StringRef name) const = 0;
// Returns the install name.
virtual StringRef getDSOName() const = 0;
Modified: lld/trunk/lib/Core/Resolver.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/Core/Resolver.cpp?rev=264653&r1=264652&r2=264653&view=diff
==============================================================================
--- lld/trunk/lib/Core/Resolver.cpp (original)
+++ lld/trunk/lib/Core/Resolver.cpp Mon Mar 28 15:59:47 2016
@@ -46,8 +46,7 @@ ErrorOr<bool> Resolver::handleFile(File
return undefAdded;
}
-ErrorOr<bool> Resolver::forEachUndefines(File &file, bool searchForOverrides,
- UndefCallback callback) {
+ErrorOr<bool> Resolver::forEachUndefines(File &file, UndefCallback callback) {
size_t i = _undefineIndex[&file];
bool undefAdded = false;
do {
@@ -61,27 +60,11 @@ ErrorOr<bool> Resolver::forEachUndefines
_undefines[i] = "";
continue;
}
- auto undefAddedOrError = callback(undefName, false);
+ auto undefAddedOrError = callback(undefName);
if (undefAddedOrError.getError())
return undefAddedOrError;
undefAdded |= undefAddedOrError.get();
}
- if (!searchForOverrides)
- continue;
- for (StringRef tentDefName : _symbolTable.tentativeDefinitions()) {
- // Load for previous tentative may also have loaded
- // something that overrode this tentative, so always check.
- const Atom *curAtom = _symbolTable.findByName(tentDefName);
- assert(curAtom != nullptr);
- if (const DefinedAtom *curDefAtom = dyn_cast<DefinedAtom>(curAtom)) {
- if (curDefAtom->merge() == DefinedAtom::mergeAsTentative) {
- auto undefAddedOrError = callback(tentDefName, true);
- if (undefAddedOrError.getError())
- return undefAddedOrError;
- undefAdded |= undefAddedOrError.get();
- }
- }
- }
} while (i < _undefines.size());
_undefineIndex[&file] = i;
return undefAdded;
@@ -89,12 +72,8 @@ ErrorOr<bool> Resolver::forEachUndefines
ErrorOr<bool> Resolver::handleArchiveFile(File &file) {
ArchiveLibraryFile *archiveFile = cast<ArchiveLibraryFile>(&file);
- bool searchForOverrides =
- _ctx.searchArchivesToOverrideTentativeDefinitions();
- return forEachUndefines(file, searchForOverrides,
- [&](StringRef undefName,
- bool dataSymbolOnly)->ErrorOr<bool> {
- if (File *member = archiveFile->find(undefName, dataSymbolOnly)) {
+ return forEachUndefines(file, [&](StringRef undefName) -> ErrorOr<bool> {
+ if (File *member = archiveFile->find(undefName)) {
member->setOrdinal(_ctx.getNextOrdinalAndIncrement());
return handleFile(*member);
}
@@ -108,16 +87,13 @@ std::error_code Resolver::handleSharedLi
auto undefAddedOrError = handleFile(*sharedLibrary);
if (undefAddedOrError.getError())
return undefAddedOrError.getError();
- bool searchForOverrides =
- _ctx.searchSharedLibrariesToOverrideTentativeDefinitions();
- undefAddedOrError = forEachUndefines(file, searchForOverrides,
- [&](StringRef undefName,
- bool dataSymbolOnly)->ErrorOr<bool> {
- auto atom = sharedLibrary->exports(undefName, dataSymbolOnly);
- if (atom.get())
- doSharedLibraryAtom(std::move(atom));
- return false;
- });
+ undefAddedOrError =
+ forEachUndefines(file, [&](StringRef undefName) -> ErrorOr<bool> {
+ auto atom = sharedLibrary->exports(undefName);
+ if (atom.get())
+ doSharedLibraryAtom(std::move(atom));
+ return false;
+ });
if (undefAddedOrError.getError())
return undefAddedOrError.getError();
Modified: lld/trunk/lib/ReaderWriter/FileArchive.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/FileArchive.cpp?rev=264653&r1=264652&r2=264653&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/FileArchive.cpp (original)
+++ lld/trunk/lib/ReaderWriter/FileArchive.cpp Mon Mar 28 15:59:47 2016
@@ -42,7 +42,7 @@ public:
/// \brief Check if any member of the archive contains an Atom with the
/// specified name and return the File object for that member, or nullptr.
- File *find(StringRef name, bool dataSymbolOnly) override {
+ File *find(StringRef name) override {
auto member = _symbolMemberMap.find(name);
if (member == _symbolMemberMap.end())
return nullptr;
@@ -57,9 +57,6 @@ public:
const char *memberStart = buf->data();
if (_membersInstantiated.count(memberStart))
return nullptr;
- if (dataSymbolOnly && !isDataSymbol(ci, name))
- return nullptr;
-
_membersInstantiated.insert(memberStart);
std::unique_ptr<File> result;
@@ -157,46 +154,6 @@ private:
return std::error_code();
}
- // Parses the given memory buffer as an object file, and returns true
- // code if the given symbol is a data symbol. If the symbol is not a data
- // symbol or does not exist, returns false.
- bool isDataSymbol(Archive::child_iterator cOrErr, StringRef symbol) const {
- if (cOrErr->getError())
- return false;
- Archive::child_iterator member = cOrErr->get();
- ErrorOr<llvm::MemoryBufferRef> buf = (*member)->getMemoryBufferRef();
- if (buf.getError())
- return false;
- std::unique_ptr<MemoryBuffer> mb(MemoryBuffer::getMemBuffer(
- buf.get().getBuffer(), buf.get().getBufferIdentifier(), false));
-
- auto objOrErr(ObjectFile::createObjectFile(mb->getMemBufferRef()));
- if (objOrErr.getError())
- return false;
- std::unique_ptr<ObjectFile> obj = std::move(objOrErr.get());
-
- for (SymbolRef sym : obj->symbols()) {
- // Skip until we find the symbol.
- ErrorOr<StringRef> name = sym.getName();
- if (!name)
- return false;
- if (*name != symbol)
- continue;
- uint32_t flags = sym.getFlags();
- if (flags <= SymbolRef::SF_Undefined)
- continue;
-
- // Returns true if it's a data symbol.
- ErrorOr<SymbolRef::Type> typeOrErr = sym.getType();
- if (typeOrErr.getError())
- return false;
- SymbolRef::Type type = *typeOrErr;
- if (type == SymbolRef::ST_Data)
- return true;
- }
- return false;
- }
-
std::error_code buildTableOfContents() {
DEBUG_WITH_TYPE("FileArchive", llvm::dbgs()
<< "Table of contents for archive '"
Modified: lld/trunk/lib/ReaderWriter/MachO/File.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/MachO/File.h?rev=264653&r1=264652&r2=264653&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/MachO/File.h (original)
+++ lld/trunk/lib/ReaderWriter/MachO/File.h Mon Mar 28 15:59:47 2016
@@ -275,8 +275,7 @@ public:
MachODylibFile(StringRef path) : SharedLibraryFile(path) {}
- OwningAtomPtr<SharedLibraryAtom> exports(StringRef name,
- bool isData) const override {
+ OwningAtomPtr<SharedLibraryAtom> exports(StringRef name) const override {
// Pass down _installName so that if this requested symbol
// is re-exported through this dylib, the SharedLibraryAtom's loadName()
// is this dylib installName and not the implementation dylib's.
Modified: lld/trunk/lib/ReaderWriter/MachO/FlatNamespaceFile.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/MachO/FlatNamespaceFile.h?rev=264653&r1=264652&r2=264653&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/MachO/FlatNamespaceFile.h (original)
+++ lld/trunk/lib/ReaderWriter/MachO/FlatNamespaceFile.h Mon Mar 28 15:59:47 2016
@@ -25,8 +25,7 @@ public:
FlatNamespaceFile(const MachOLinkingContext &context)
: SharedLibraryFile("flat namespace") { }
- OwningAtomPtr<SharedLibraryAtom> exports(StringRef name,
- bool dataSymbolOnly) const override {
+ OwningAtomPtr<SharedLibraryAtom> exports(StringRef name) const override {
return new (allocator()) MachOSharedLibraryAtom(*this, name, getDSOName(),
false);
}
Modified: lld/trunk/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp?rev=264653&r1=264652&r2=264653&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp (original)
+++ lld/trunk/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp Mon Mar 28 15:59:47 2016
@@ -591,22 +591,11 @@ template <> struct MappingTraits<const l
_noAbsoluteAtoms.clear();
}
- File *find(StringRef name, bool dataSymbolOnly) override {
- for (const ArchMember &member : _members) {
- for (const lld::DefinedAtom *atom : member._content->defined()) {
- if (name == atom->name()) {
- if (!dataSymbolOnly)
- return const_cast<File *>(member._content);
- switch (atom->contentType()) {
- case lld::DefinedAtom::typeData:
- case lld::DefinedAtom::typeZeroFill:
- return const_cast<File *>(member._content);
- default:
- break;
- }
- }
- }
- }
+ File *find(StringRef name) override {
+ for (const ArchMember &member : _members)
+ for (const lld::DefinedAtom *atom : member._content->defined())
+ if (name == atom->name())
+ return const_cast<File *>(member._content);
return nullptr;
}
More information about the llvm-commits
mailing list