* opncls.c (bfd_fopen): Mark returned BFD as cacheable if FD == -1.
authorMark Mitchell <mark@codesourcery.com>
Thu, 9 Jun 2005 07:30:19 +0000 (07:30 +0000)
committerMark Mitchell <mark@codesourcery.com>
Thu, 9 Jun 2005 07:30:19 +0000 (07:30 +0000)
bfd/ChangeLog
bfd/opncls.c

index 0b142675346fd068bcef133f3354bb949fb02dd6..1c90c89637ebd60dcd0d77ec82f2e807e837aa4e 100644 (file)
@@ -1,3 +1,7 @@
+2005-06-08  Mark Mitchell  <mark@codesourcery.com>
+
+       * opncls.c (bfd_fopen): Mark returned BFD as cacheable if FD == -1.
+
 2005-06-09  Alan Modra  <amodra@bigpond.net.au>
 
        * elflink.c (elf_mark_used_section): Delete.
index df2cf6d3ea4c670a1d66838cc51b179c017342fa..56b5925cd6be0fbbe432c441f544a645da192505 100644 (file)
@@ -144,6 +144,8 @@ DESCRIPTION
        Calls <<bfd_find_target>>, so @var{target} is interpreted as by
        that function.
 
+       The new BFD is marked as cacheable iff @var{fd} is -1.
+
        If <<NULL>> is returned then an error has occured.   Possible errors
        are <<bfd_error_no_memory>>, <<bfd_error_invalid_target>> or
        <<system_call>> error.
@@ -198,6 +200,12 @@ bfd_fopen (const char *filename, const char *target, const char *mode, int fd)
       return NULL;
     }
   nbfd->opened_once = TRUE;
+  /* If we opened the file by name, mark it cacheable; we can close it
+     and reopen it later.  However, if a file descriptor was provided,
+     then it may have been opened with special flags that make it
+     unsafe to close and reopen the file.  */
+  if (fd == -1)
+    bfd_set_cacheable (nbfd, TRUE);
 
   return nbfd;
 }