From Craig Silverstein: add support for searching for input files

named in linker scripts.
This commit is contained in:
Ian Lance Taylor
2007-10-02 21:24:41 +00:00
parent f5c3f2256f
commit 51dee2fec3
5 changed files with 85 additions and 21 deletions

View File

@@ -1166,20 +1166,14 @@ extern "C" void
script_add_file(void* closurev, const char* name)
{
Parser_closure* closure = static_cast<Parser_closure*>(closurev);
std::string absname;
if (name[0] == '/')
{
absname = name;
}
else
{
// Prepend `dirname closure->filename()` to make the path absolute.
char *slash = strrchr(closure->filename(), '/');
absname.assign(closure->filename(),
slash ? slash - closure->filename() + 1 : 0);
absname += name;
}
Input_file_argument file(absname.c_str(), false, closure->position_dependent_options());
// In addition to checking the normal library search path, we also
// want to check in the script-directory.
const char *slash = strrchr(closure->filename(), '/');
std::string script_directory(closure->filename(),
slash ? slash - closure->filename() + 1 : 0);
Input_file_argument file(name, false,
slash ? script_directory.c_str() : ".",
closure->position_dependent_options());
closure->inputs()->add_file(file);
}