diff --git a/lib/Linker/LinkArchives.cpp b/lib/Linker/LinkArchives.cpp index 701458bb43e..a009cf59d69 100644 --- a/lib/Linker/LinkArchives.cpp +++ b/lib/Linker/LinkArchives.cpp @@ -39,8 +39,9 @@ namespace llvm { /// named by the value of the environment variable LLVM_LIB_SEARCH_PATH. Returns /// an empty string if no matching file can be found. /// -static std::string FindLib(const std::string &Filename, - const std::vector &Paths) { +std::string FindLib(const std::string &Filename, + const std::vector &Paths, + bool SharedObjectOnly) { // Determine if the pathname can be found as it stands. if (FileOpenable(Filename)) return Filename; @@ -53,13 +54,13 @@ static std::string FindLib(const std::string &Filename, for (unsigned Index = 0; Index != Paths.size(); ++Index) { std::string Directory = Paths[Index] + "/"; - if (FileOpenable(Directory + LibName + ".bc")) + if (!SharedObjectOnly && FileOpenable(Directory + LibName + ".bc")) return Directory + LibName + ".bc"; if (FileOpenable(Directory + LibName + ".so")) return Directory + LibName + ".so"; - if (FileOpenable(Directory + LibName + ".a")) + if (!SharedObjectOnly && FileOpenable(Directory + LibName + ".a")) return Directory + LibName + ".a"; } @@ -99,9 +100,6 @@ void GetAllDefinedSymbols(Module *M, std::set &DefinedSymbols) { /// UndefinedSymbols - A set of C++ strings containing the name of all /// undefined symbols. /// -/// Return value: -/// None. -/// void GetAllUndefinedSymbols(Module *M, std::set &UndefinedSymbols) { std::set DefinedSymbols; diff --git a/tools/gccld/Linker.cpp b/tools/gccld/Linker.cpp index 701458bb43e..a009cf59d69 100644 --- a/tools/gccld/Linker.cpp +++ b/tools/gccld/Linker.cpp @@ -39,8 +39,9 @@ namespace llvm { /// named by the value of the environment variable LLVM_LIB_SEARCH_PATH. Returns /// an empty string if no matching file can be found. /// -static std::string FindLib(const std::string &Filename, - const std::vector &Paths) { +std::string FindLib(const std::string &Filename, + const std::vector &Paths, + bool SharedObjectOnly) { // Determine if the pathname can be found as it stands. if (FileOpenable(Filename)) return Filename; @@ -53,13 +54,13 @@ static std::string FindLib(const std::string &Filename, for (unsigned Index = 0; Index != Paths.size(); ++Index) { std::string Directory = Paths[Index] + "/"; - if (FileOpenable(Directory + LibName + ".bc")) + if (!SharedObjectOnly && FileOpenable(Directory + LibName + ".bc")) return Directory + LibName + ".bc"; if (FileOpenable(Directory + LibName + ".so")) return Directory + LibName + ".so"; - if (FileOpenable(Directory + LibName + ".a")) + if (!SharedObjectOnly && FileOpenable(Directory + LibName + ".a")) return Directory + LibName + ".a"; } @@ -99,9 +100,6 @@ void GetAllDefinedSymbols(Module *M, std::set &DefinedSymbols) { /// UndefinedSymbols - A set of C++ strings containing the name of all /// undefined symbols. /// -/// Return value: -/// None. -/// void GetAllUndefinedSymbols(Module *M, std::set &UndefinedSymbols) { std::set DefinedSymbols; diff --git a/tools/gccld/gccld.h b/tools/gccld/gccld.h index 9b7eb1e8773..a2d2eb8d6ad 100644 --- a/tools/gccld/gccld.h +++ b/tools/gccld/gccld.h @@ -58,6 +58,10 @@ GenerateNative (const std::string & OutputFilename, std::auto_ptr LoadObject (const std::string & FN, std::string &OutErrorMessage); +std::string FindLib(const std::string &Filename, + const std::vector &Paths, + bool SharedObjectOnly = false); + bool LinkLibraries (const char * progname, Module * HeadModule,