PATH: Restore file cache for bfd_openr
Mark Mitchell
mark@codesourcery.com
Wed Jun 8 22:43:00 GMT 2005
PR 996 is a problem caused by my recent patch to bfd_openr.
Unbeknownst to me, bfd_openr set the cacheable flag on BFDs it
created, while bfd_fdopenr did not. When I made them share common
code, I made all BFDs created by either function non-cacheable.
This patch restores the caching behavior in bfd_openr. I tested it
with the binutils testsuite and also by running strace with and
without the patch, and checking that indeed old object files were
being closed when using the patch, but were not closed without the
patch.
OK to apply?
--
Mark Mitchell
CodeSourcery, LLC
mark@codesourcery.com
2005-06-08 Mark Mitchell <mark@codesourcery.com>
* opncls.c (bfd_openr): Call bfd_set_cacheable on returned BFDs.
Index: opncls.c
===================================================================
RCS file: /cvs/src/src/bfd/opncls.c,v
retrieving revision 1.37
diff -c -5 -p -r1.37 opncls.c
*** opncls.c 8 Jun 2005 03:51:32 -0000 1.37
--- opncls.c 8 Jun 2005 22:35:41 -0000
*************** DESCRIPTION
*** 222,232 ****
*/
bfd *
bfd_openr (const char *filename, const char *target)
{
! return bfd_fopen (filename, target, FOPEN_RB, -1);
}
/* Don't try to `optimize' this function:
o - We lock using stack space so that interrupting the locking
--- 222,236 ----
*/
bfd *
bfd_openr (const char *filename, const char *target)
{
! bfd *nbfd;
! nbfd = bfd_fopen (filename, target, FOPEN_RB, -1);
! if (nbfd)
! bfd_set_cacheable (nbfd, TRUE);
! return nbfd;
}
/* Don't try to `optimize' this function:
o - We lock using stack space so that interrupting the locking
More information about the Binutils
mailing list