Add ability to search only for native shared object, and expose the

functionality to the rest of gccld.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10113 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Misha Brukman 2003-11-20 19:08:06 +00:00
parent 65914f5a57
commit 84fbc653ce
3 changed files with 14 additions and 14 deletions

View File

@ -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<std::string> &Paths) {
std::string FindLib(const std::string &Filename,
const std::vector<std::string> &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<std::string> &DefinedSymbols) {
/// UndefinedSymbols - A set of C++ strings containing the name of all
/// undefined symbols.
///
/// Return value:
/// None.
///
void
GetAllUndefinedSymbols(Module *M, std::set<std::string> &UndefinedSymbols) {
std::set<std::string> DefinedSymbols;

View File

@ -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<std::string> &Paths) {
std::string FindLib(const std::string &Filename,
const std::vector<std::string> &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<std::string> &DefinedSymbols) {
/// UndefinedSymbols - A set of C++ strings containing the name of all
/// undefined symbols.
///
/// Return value:
/// None.
///
void
GetAllUndefinedSymbols(Module *M, std::set<std::string> &UndefinedSymbols) {
std::set<std::string> DefinedSymbols;

View File

@ -58,6 +58,10 @@ GenerateNative (const std::string & OutputFilename,
std::auto_ptr<Module>
LoadObject (const std::string & FN, std::string &OutErrorMessage);
std::string FindLib(const std::string &Filename,
const std::vector<std::string> &Paths,
bool SharedObjectOnly = false);
bool
LinkLibraries (const char * progname,
Module * HeadModule,