If "=" is the first character in a ldscript input file, force a sysroot prefix.
* ldlang.c (lang_add_input_file): If the first character in the filename is '=', prepend the sysroot and force the context of that input file to non-sysroot. The "input_flags.sysrooted = 0" thing described in the comment is covered by the testsuite part ("root-anchored =-prefixed script inside"), but only observable for --with-sysroot configurations.
This commit is contained in:
parent
ef1ab8e216
commit
bfa2343443
2 changed files with 23 additions and 0 deletions
|
@ -1,5 +1,8 @@
|
|||
2014-10-15 Hans-Peter Nilsson <hp@axis.com>
|
||||
|
||||
* ldlang.c (lang_add_input_file): If the first character in the
|
||||
filename is '=', prepend the sysroot and force the context of that
|
||||
input file to non-sysroot.
|
||||
* ld.texinfo (Options): When mentioning "=" and sysroot, mention
|
||||
that --sysroot controls it, not only through the configuration.
|
||||
(input files in linker scripts): When mentioning
|
||||
|
|
20
ld/ldlang.c
20
ld/ldlang.c
|
@ -1118,6 +1118,26 @@ lang_add_input_file (const char *name,
|
|||
lang_input_file_enum_type file_type,
|
||||
const char *target)
|
||||
{
|
||||
if (name != NULL && *name == '=')
|
||||
{
|
||||
lang_input_statement_type *ret;
|
||||
char *sysrooted_name
|
||||
= concat (ld_sysroot, name + 1, (const char *) NULL);
|
||||
|
||||
/* We've now forcibly prepended the sysroot, making the input
|
||||
file independent of the context. Therefore, temporarily
|
||||
force a non-sysrooted context for this statement, so it won't
|
||||
get the sysroot prepended again when opened. (N.B. if it's a
|
||||
script, any child nodes with input files starting with "/"
|
||||
will be handled as "sysrooted" as they'll be found to be
|
||||
within the sysroot subdirectory.) */
|
||||
unsigned int outer_sysrooted = input_flags.sysrooted;
|
||||
input_flags.sysrooted = 0;
|
||||
ret = new_afile (sysrooted_name, file_type, target, TRUE);
|
||||
input_flags.sysrooted = outer_sysrooted;
|
||||
return ret;
|
||||
}
|
||||
|
||||
return new_afile (name, file_type, target, TRUE);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue