This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: cache.c reorg


	* hppabsd-core.c (hppabsd_core_core_file_p): Use bfd_stat, not fstat.
	* sco5-core.c (sco5_core_file_p): Likewise.
	* trad-core.c (trad_unix_core_file_p): Likewise.

The above allows the following.

	* cache.c (BFD_CACHE_MAX_OPEN): Make private to this file.
	(bfd_last_cache, bfd_cache_lookup, bfd_cache_lookup_worker): Likewise.
	* libbfd-in.h (bfd_cache_lookup_worker, bfd_last_cache): Delete.
	* libbfd.h: Regenerate.

Index: bfd/cache.c
===================================================================
RCS file: /cvs/src/src/bfd/cache.c,v
retrieving revision 1.25
diff -u -p -r1.25 cache.c
--- bfd/cache.c	27 Oct 2005 03:22:13 -0000	1.25
+++ bfd/cache.c	27 Oct 2005 03:28:22 -0000
@@ -45,36 +45,20 @@ SUBSECTION
 #include "libbfd.h"
 #include "libiberty.h"
 
-/*
-INTERNAL_FUNCTION
-	BFD_CACHE_MAX_OPEN macro
-
-DESCRIPTION
-	The maximum number of files which the cache will keep open at
-	one time.
+/* The maximum number of files which the cache will keep open at
+   one time.  */
 
-.#define BFD_CACHE_MAX_OPEN 10
-
-*/
+#define BFD_CACHE_MAX_OPEN 10
 
 /* The number of BFD files we have open.  */
 
 static int open_files;
 
-/*
-INTERNAL_FUNCTION
-	bfd_last_cache
-
-SYNOPSIS
-	extern bfd *bfd_last_cache;
-
-DESCRIPTION
-	Zero, or a pointer to the topmost BFD on the chain.  This is
-	used by the <<bfd_cache_lookup>> macro in @file{libbfd.h} to
-	determine when it can avoid a function call.
-*/
+/* Zero, or a pointer to the topmost BFD on the chain.  This is
+   used by the <<bfd_cache_lookup>> macro in @file{libbfd.h} to
+   determine when it can avoid a function call.  */
 
-bfd *bfd_last_cache = NULL;
+static bfd *bfd_last_cache = NULL;
 
 /* Insert a BFD into the cache.  */
 
@@ -169,40 +153,24 @@ close_one (void)
   return bfd_cache_delete (kill);
 }
 
-/*
-  INTERNAL_FUNCTION
-  	bfd_cache_lookup
-
-  DESCRIPTION
- 	Check to see if the required BFD is the same as the last one
- 	looked up. If so, then it can use the stream in the BFD with
- 	impunity, since it can't have changed since the last lookup;
- 	otherwise, it has to perform the complicated lookup function.
-
-  .#define bfd_cache_lookup(x) \
-  .    ((x) == bfd_last_cache ? \
-  .      (FILE *) (bfd_last_cache->iostream): \
-  .       bfd_cache_lookup_worker (x))
-
- */
-
-/*
-INTERNAL_FUNCTION
-	bfd_cache_lookup_worker
+/* Check to see if the required BFD is the same as the last one
+   looked up. If so, then it can use the stream in the BFD with
+   impunity, since it can't have changed since the last lookup;
+   otherwise, it has to perform the complicated lookup function.  */
+
+#define bfd_cache_lookup(x) \
+  ((x) == bfd_last_cache			\
+   ? (FILE *) (bfd_last_cache->iostream)	\
+   : bfd_cache_lookup_worker (x))
+
+/* Called when the macro <<bfd_cache_lookup>> fails to find a
+   quick answer.  Find a file descriptor for @var{abfd}.  If
+   necessary, it open it.  If there are already more than
+   <<BFD_CACHE_MAX_OPEN>> files open, it tries to close one first, to
+   avoid running out of file descriptors.  It will return NULL
+   if it is unable to (re)open the @var{abfd}.  */
 
-SYNOPSIS
-	FILE *bfd_cache_lookup_worker (bfd *abfd);
-
-DESCRIPTION
-	Called when the macro <<bfd_cache_lookup>> fails to find a
-	quick answer.  Find a file descriptor for @var{abfd}.  If
-	necessary, it open it.  If there are already more than
-	<<BFD_CACHE_MAX_OPEN>> files open, it tries to close one first, to
-	avoid running out of file descriptors.  It will return NULL
-	if it is unable to (re)open the @var{abfd}.
-*/
-
-FILE *
+static FILE *
 bfd_cache_lookup_worker (bfd *abfd)
 {
   bfd *orig_bfd = abfd;
Index: bfd/hppabsd-core.c
===================================================================
RCS file: /cvs/src/src/bfd/hppabsd-core.c,v
retrieving revision 1.16
diff -u -p -r1.16 hppabsd-core.c
--- bfd/hppabsd-core.c	26 Oct 2005 12:17:42 -0000	1.16
+++ bfd/hppabsd-core.c	27 Oct 2005 03:28:22 -0000
@@ -137,16 +137,11 @@ hppabsd_core_core_file_p (abfd)
   /* Sanity checks.  Make sure the size of the core file matches the
      the size computed from information within the core itself.  */
   {
-    FILE *stream = bfd_cache_lookup (abfd);
     struct stat statbuf;
 
-    if (stream == NULL)
+    if (bfd_stat (abfd, &statbuf) < 0)
       return NULL;
-    if (fstat (fileno (stream), &statbuf) < 0)
-      {
-	bfd_set_error (bfd_error_system_call);
-	return NULL;
-      }
+
     if (NBPG * (UPAGES + u.u_dsize + u.u_ssize) > statbuf.st_size)
       {
 	bfd_set_error (bfd_error_file_truncated);
Index: bfd/libbfd-in.h
===================================================================
RCS file: /cvs/src/src/bfd/libbfd-in.h,v
retrieving revision 1.57
diff -u -p -r1.57 libbfd-in.h
--- bfd/libbfd-in.h	24 Oct 2005 01:40:58 -0000	1.57
+++ bfd/libbfd-in.h	27 Oct 2005 03:28:23 -0000
@@ -652,11 +652,6 @@ extern void _bfd_abort
 extern file_ptr real_ftell (FILE *file);
 extern int real_fseek (FILE *file, file_ptr offset, int whence);
 
-FILE *	bfd_cache_lookup_worker
-  (bfd *);
-
-extern bfd *bfd_last_cache;
-
 /* List of supported target vectors, and the default vector (if
    bfd_default_vector[0] is NULL, there is no default).  */
 extern const bfd_target * const *bfd_target_vector;
Index: bfd/libbfd.h
===================================================================
RCS file: /cvs/src/src/bfd/libbfd.h,v
retrieving revision 1.161
diff -u -p -r1.161 libbfd.h
--- bfd/libbfd.h	25 Oct 2005 17:40:10 -0000	1.161
+++ bfd/libbfd.h	27 Oct 2005 03:28:23 -0000
@@ -657,11 +657,6 @@ extern void _bfd_abort
 extern file_ptr real_ftell (FILE *file);
 extern int real_fseek (FILE *file, file_ptr offset, int whence);
 
-FILE *	bfd_cache_lookup_worker
-  (bfd *);
-
-extern bfd *bfd_last_cache;
-
 /* List of supported target vectors, and the default vector (if
    bfd_default_vector[0] is NULL, there is no default).  */
 extern const bfd_target * const *bfd_target_vector;
@@ -767,21 +762,12 @@ struct _bfd_window_internal {
   unsigned mapped : 1;         /* 1 = mmap, 0 = malloc */
 };
 /* Extracted from cache.c.  */
-#define BFD_CACHE_MAX_OPEN 10
-extern bfd *bfd_last_cache;
-
-#define bfd_cache_lookup(x) \
-    ((x) == bfd_last_cache ? \
-      (FILE *) (bfd_last_cache->iostream): \
-       bfd_cache_lookup_worker (x))
 bfd_boolean bfd_cache_init (bfd *abfd);
 
 bfd_boolean bfd_cache_close (bfd *abfd);
 
 FILE* bfd_open_file (bfd *abfd);
 
-FILE *bfd_cache_lookup_worker (bfd *abfd);
-
 /* Extracted from reloc.c.  */
 #ifdef _BFD_MAKE_TABLE_bfd_reloc_code_real
 
Index: bfd/sco5-core.c
===================================================================
RCS file: /cvs/src/src/bfd/sco5-core.c,v
retrieving revision 1.16
diff -u -p -r1.16 sco5-core.c
--- bfd/sco5-core.c	26 Oct 2005 12:17:42 -0000	1.16
+++ bfd/sco5-core.c	27 Oct 2005 03:28:23 -0000
@@ -126,16 +126,11 @@ sco5_core_file_p (abfd)
   /* Read coreoffsets region at end of core (see core(FP)).  */
 
   {
-    FILE *stream = bfd_cache_lookup (abfd);
     struct stat statbuf;
 
-    if (stream == NULL)
+    if (bfd_stat (abfd, &statbuf) < 0)
       return NULL;
-    if (fstat (fileno (stream), &statbuf) < 0)
-      {
-	bfd_set_error (bfd_error_system_call);
-	return NULL;
-      }
+
     coresize = statbuf.st_size;
   }
   /* Last long in core is sizeof struct coreoffsets, read it */
Index: bfd/trad-core.c
===================================================================
RCS file: /cvs/src/src/bfd/trad-core.c,v
retrieving revision 1.21
diff -u -p -r1.21 trad-core.c
--- bfd/trad-core.c	26 Oct 2005 12:17:42 -0000	1.21
+++ bfd/trad-core.c	27 Oct 2005 03:28:23 -0000
@@ -109,16 +109,11 @@ trad_unix_core_file_p (abfd)
 
   /* Check that the size claimed is no greater than the file size.  */
   {
-    FILE *stream = bfd_cache_lookup (abfd);
     struct stat statbuf;
 
-    if (stream == NULL)
+    if (bfd_stat (abfd, &statbuf) < 0)
       return 0;
-    if (fstat (fileno (stream), &statbuf) < 0)
-      {
-	bfd_set_error (bfd_error_system_call);
-	return 0;
-      }
+
     if ((unsigned long) (NBPG * (UPAGES + u.u_dsize
 #ifdef TRAD_CORE_DSIZE_INCLUDES_TSIZE
 				 - u.u_tsize

-- 
Alan Modra
IBM OzLabs - Linux Technology Centre


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]