When looking for a previously loaded file compare the local_sym_name not the

filename, as the filename might have been transformed via the search directory
path lookup.  If the sought-for file has not been found in the input file
chain then create a new node with the search_dirs_flag set so that the entire
set of directory paths will be scanned for it.
This commit is contained in:
Nick Clifton
2003-10-31 10:27:34 +00:00
parent 83b6e7e845
commit 0013291dce
2 changed files with 19 additions and 4 deletions

View File

@@ -1320,16 +1320,21 @@ lookup_name (const char *name)
search != NULL;
search = (lang_input_statement_type *) search->next_real_file)
{
if (search->filename == NULL && name == NULL)
/* Use the local_sym_name as the name of the file that has
already been loaded as filename might have been transformed
via the search directory lookup mechanism. */
const char * filename = search->local_sym_name;
if (filename == NULL && name == NULL)
return search;
if (search->filename != NULL
if (filename != NULL
&& name != NULL
&& strcmp (search->filename, name) == 0)
&& strcmp (filename, name) == 0)
break;
}
if (search == NULL)
search = new_afile (name, lang_input_file_is_file_enum, default_target,
search = new_afile (name, lang_input_file_is_search_file_enum, default_target,
FALSE);
/* If we have already added this file, or this file is not real