Make relative references in linker scripts absolute and update a

comment about relocate() being called.
This commit is contained in:
chatham
2007-08-21 21:29:12 +00:00
parent 0496d5e5b4
commit 72a2eed757
2 changed files with 15 additions and 2 deletions

View File

@@ -1141,7 +1141,20 @@ extern "C" void
script_add_file(void* closurev, const char* name)
{
Parser_closure* closure = static_cast<Parser_closure*>(closurev);
Input_file_argument file(name, false, closure->position_dependent_options());
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());
closure->inputs()->add_file(file);
}

View File

@@ -91,7 +91,7 @@ scan_relocs(
}
// This function implements the generic part of relocation processing.
// This is an inline function which take a class whose operator()
// This is an inline function which take a class whose relocate()
// implements the machine specific part of relocation. We do it this
// way to avoid making a function call for each relocation, and to
// avoid repeating the generic relocation handling code for each