From 0013291dce39125792058ff42e1cd8e413ba091f Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Fri, 31 Oct 2003 10:27:34 +0000 Subject: [PATCH] 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. --- ld/ChangeLog | 10 ++++++++++ ld/ldlang.c | 13 +++++++++---- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/ld/ChangeLog b/ld/ChangeLog index b5efd5c1812..83350bd996c 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,13 @@ +2003-10-31 Nick Clifton + + * ldlang.c (lookup_name): 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. + 2003-10-30 Andrew Cagney * emultempl/pe.em, pe-dll.c: Replace "struct symbol_cache_entry" diff --git a/ld/ldlang.c b/ld/ldlang.c index b343c275ae5..1dc2b1ea44e 100644 --- a/ld/ldlang.c +++ b/ld/ldlang.c @@ -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 -- 2.30.2