forked from Imagelibrary/binutils-gdb
Make relative references in linker scripts absolute and update a
comment about relocate() being called.
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user