* linux-arm-low.c: Include <signal.h>.
[deliverable/binutils-gdb.git] / ld / ldfile.c
index 701b3803cad1b2fd8eade09993f18d14e0cc3e20..c4b89120eeed9860e40a07e22007e218d1da652d 100644 (file)
@@ -1,6 +1,7 @@
 /* Linker file opening and searching.
    Copyright 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2001, 2002,
-   2003, 2004, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+   2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011
+   Free Software Foundation, Inc.
 
    This file is part of the GNU Binutils.
 
@@ -312,40 +313,20 @@ success:
      bfd_object that it sets the bfd's arch and mach, which
      will be needed when and if we want to bfd_create a new
      one using this one as a template.  */
-  if (bfd_check_format (entry->the_bfd, bfd_object))
+  if (bfd_check_format (entry->the_bfd, bfd_object)
+      && plugin_active_plugins_p ()
+      && !no_more_claiming)
     {
       int fd = open (attempt, O_RDONLY | O_BINARY);
       if (fd >= 0)
        {
          struct ld_plugin_input_file file;
-         int claimed = 0;
 
          file.name = attempt;
          file.offset = 0;
          file.filesize = lseek (fd, 0, SEEK_END);
          file.fd = fd;
-         /* We create a dummy BFD, initially empty, to house
-            whatever symbols the plugin may want to add.  */
-         file.handle = plugin_get_ir_dummy_bfd (attempt, entry->the_bfd);
-         if (plugin_call_claim_file (&file, &claimed))
-           einfo (_("%P%F: %s: plugin reported error claiming file\n"),
-             plugin_error_plugin ());
-         if (claimed)
-           {
-             /* Discard the real file's BFD and substitute the dummy one.  */
-             bfd_close (entry->the_bfd);
-             entry->the_bfd = file.handle;
-             entry->claimed = TRUE;
-             bfd_make_readable (entry->the_bfd);
-           }
-         else
-           {
-             /* If plugin didn't claim the file, we don't need the fd or the
-                dummy bfd.  Can't avoid speculatively creating it, alas.  */
-             bfd_close_all_done (file.handle);
-             close (fd);
-             entry->claimed = FALSE;
-           }
+         plugin_maybe_claim (&file, entry);
        }
     }
 #endif /* ENABLE_PLUGINS */
@@ -368,7 +349,7 @@ ldfile_open_file_search (const char *arch,
 
   /* If this is not an archive, try to open it in the current
      directory first.  */
-  if (! entry->is_archive)
+  if (! entry->maybe_archive)
     {
       if (entry->sysrooted && IS_ABSOLUTE_PATH (entry->filename))
        {
@@ -405,7 +386,7 @@ ldfile_open_file_search (const char *arch,
            }
        }
 
-      if (entry->is_archive)
+      if (entry->maybe_archive)
        string = concat (search->name, slash, lib, entry->filename,
                         arch, suffix, (const char *) NULL);
       else
@@ -441,7 +422,7 @@ ldfile_open_file (lang_input_statement_type *entry)
       if (ldfile_try_open_bfd (entry->filename, entry))
        return;
 
-      if (strcmp (entry->filename, entry->local_sym_name) != 0)
+      if (filename_cmp (entry->filename, entry->local_sym_name) != 0)
        einfo (_("%P: cannot find %s (%s): %E\n"),
               entry->filename, entry->local_sym_name);
       else
This page took 0.024453 seconds and 4 git commands to generate.