When looking for a previously loaded file compare the local_sym_name not the
authorNick Clifton <nickc@redhat.com>
Fri, 31 Oct 2003 10:27:34 +0000 (10:27 +0000)
committerNick Clifton <nickc@redhat.com>
Fri, 31 Oct 2003 10:27:34 +0000 (10:27 +0000)
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
ld/ldlang.c

index b5efd5c..83350bd 100644 (file)
@@ -1,3 +1,13 @@
+2003-10-31  Nick Clifton  <nickc@redhat.com>
+
+        * 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  <cagney@redhat.com>
 
        * emultempl/pe.em, pe-dll.c: Replace "struct symbol_cache_entry"
index b343c27..1dc2b1e 100644 (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