Fri Oct 23 13:55:35 1992 Ian Lance Taylor (ian@cygnus.com)
authorIan Lance Taylor <ian@airs.com>
Fri, 23 Oct 1992 21:01:29 +0000 (21:01 +0000)
committerIan Lance Taylor <ian@airs.com>
Fri, 23 Oct 1992 21:01:29 +0000 (21:01 +0000)
* Check fclose return value for errors.
libbfd.h: bfd_cache_close now returns a boolean.
cache.c (bfd_cache_delete): return fclose success value.
(bfd_cache_close): return bfd_cache_delete return value.
opncls.c (bfd_close, bfd_close_all_done): return result of
bfd_cache_close.

bfd/ChangeLog
bfd/cache.c
bfd/libbfd.h

index c70b31c0deebb7a5b81d02ef378835cfff69e53e..b820465da9464c90f1cd0223f6158a8ef921134e 100644 (file)
@@ -1,3 +1,12 @@
+Fri Oct 23 13:55:35 1992  Ian Lance Taylor  (ian@cygnus.com)
+
+       * Check fclose return value for errors.
+       libbfd.h: bfd_cache_close now returns a boolean.
+       cache.c (bfd_cache_delete): return fclose success value.
+       (bfd_cache_close): return bfd_cache_delete return value.
+       opncls.c (bfd_close, bfd_close_all_done): return result of
+       bfd_cache_close.
+
 Fri Oct 23 10:32:36 1992  Steve Chamberlain  (sac@thepub.cygnus.com)
 
        * seclet.c (rel): don't load sections without the SEC_LOAD bit.
index 1d4ee567ed135beb46de05c38b759dbdc80dc38c..fbd46bf9b2f5903d8f3ae55c9f409547aeb8b1bc 100644 (file)
@@ -1,6 +1,5 @@
-
 /* BFD library -- caching of file descriptors.
-   Copyright (C) 1990-1991 Free Software Foundation, Inc.
+   Copyright 1990, 1991, 1992 Free Software Foundation, Inc.
    Hacked by Steve Chamberlain of Cygnus Support (steve@cygnus.com).
 
 This file is part of BFD, the Binary File Descriptor library.
@@ -36,8 +35,6 @@ SECTION
 
 */
 
-/* $Id$ */
-
 #include "bfd.h"
 #include "sysdep.h"
 #include "libbfd.h"
@@ -47,7 +44,7 @@ INTERNAL_FUNCTION
        BFD_CACHE_MAX_OPEN macro
 
 DESCRIPTION
-       The maxiumum number of files which the cache will keep open at
+       The maximum number of files which the cache will keep open at
        one time.
 
 .#define BFD_CACHE_MAX_OPEN 10
@@ -93,7 +90,7 @@ bfd *bfd_last_cache;
  *
  */
 
-static void bfd_cache_delete();
+static boolean EXFUN(bfd_cache_delete,(bfd *));
 
 
 static void
@@ -111,7 +108,7 @@ DEFUN_VOID(close_one)
     }
 
     kill->where = ftell((FILE *)(kill->iostream));
-    bfd_cache_delete(kill);
+    (void) bfd_cache_delete(kill);
 }
 
 /* Cuts the BFD abfd out of the chain in the cache */
@@ -124,15 +121,21 @@ DEFUN(snip,(abfd),
   if (cache_sentinel == abfd) cache_sentinel = (bfd *)NULL;
 }
 
-static void
+static boolean
 DEFUN(bfd_cache_delete,(abfd),
       bfd *abfd)
 {
-  fclose ((FILE *)(abfd->iostream));
+  boolean ret;
+
+  if (fclose ((FILE *)(abfd->iostream)) == EOF)
+    ret = false;
+  else
+    ret = true;
   snip (abfd);
   abfd->iostream = NULL;
   open_files--;
   bfd_last_cache = 0;
+  return ret;
 }
   
 static bfd *
@@ -183,16 +186,24 @@ DESCRIPTION
        then close it too.
 
 SYNOPSIS
-       void bfd_cache_close (bfd *);
+       boolean bfd_cache_close (bfd *);
+
+RETURNS
+       <<false>> is returned if closing the file fails, <<true>> is
+       returned if all is well.
 */
-void
+boolean
 DEFUN(bfd_cache_close,(abfd),
       bfd *abfd)
 {
   /* If this file is open then remove from the chain */
   if (abfd->iostream) 
     {
-      bfd_cache_delete(abfd);
+      return bfd_cache_delete(abfd);
+    }
+  else
+    {
+      return true;
     }
 }
 
index aee8fdc1902560508b8f2d4c6c2db429160ad1cd..1bcfe842b795c133bbe259dcc1052276d28a160a 100644 (file)
@@ -71,6 +71,7 @@ PROTO(PTR, bfd_zalloc,(bfd *abfd, bfd_size_type size));
 PROTO(PTR, bfd_realloc,(bfd *abfd, PTR orig, bfd_size_type new));
 PROTO(void, bfd_alloc_grow,(bfd *abfd, PTR thing, bfd_size_type size));
 PROTO(PTR, bfd_alloc_finish,(bfd *abfd));
+PROTO(PTR, bfd_alloc_by_size_t,(bfd *abfd, size_t wanted));
 
 #define bfd_release(x,y) (void) obstack_free(&(x->memory),y)
 
@@ -204,7 +205,7 @@ extern bfd *bfd_last_cache;
       (FILE*)(bfd_last_cache->iostream): \
        bfd_cache_lookup_worker(x))
 void  EXFUN(bfd_cache_init , (bfd *));
-void EXFUN(bfd_cache_close , (bfd *));
+boolean EXFUN(bfd_cache_close , (bfd *));
 FILE* EXFUN(bfd_open_file, (bfd *));
 FILE *EXFUN(bfd_cache_lookup_worker, (bfd *));
 void EXFUN(bfd_constructor_entry, (bfd *abfd, 
@@ -233,3 +234,4 @@ CONST bfd_arch_info_type *EXFUN(bfd_default_compatible
     , (CONST bfd_arch_info_type *a,
     CONST bfd_arch_info_type *b));
 boolean EXFUN(bfd_default_scan, (CONST struct bfd_arch_info *, CONST char *));
+struct elf_internal_shdr *EXFUN(bfd_elf_find_section , (bfd *abfd, char *name));