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.
This commit is contained in:
parent
c26d7d179c
commit
700b2ee3ef
3 changed files with 35 additions and 13 deletions
|
@ -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)
|
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.
|
* seclet.c (rel): don't load sections without the SEC_LOAD bit.
|
||||||
|
|
35
bfd/cache.c
35
bfd/cache.c
|
@ -1,6 +1,5 @@
|
||||||
|
|
||||||
/* BFD library -- caching of file descriptors.
|
/* 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).
|
Hacked by Steve Chamberlain of Cygnus Support (steve@cygnus.com).
|
||||||
|
|
||||||
This file is part of BFD, the Binary File Descriptor library.
|
This file is part of BFD, the Binary File Descriptor library.
|
||||||
|
@ -36,8 +35,6 @@ SECTION
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* $Id$ */
|
|
||||||
|
|
||||||
#include "bfd.h"
|
#include "bfd.h"
|
||||||
#include "sysdep.h"
|
#include "sysdep.h"
|
||||||
#include "libbfd.h"
|
#include "libbfd.h"
|
||||||
|
@ -47,7 +44,7 @@ INTERNAL_FUNCTION
|
||||||
BFD_CACHE_MAX_OPEN macro
|
BFD_CACHE_MAX_OPEN macro
|
||||||
|
|
||||||
DESCRIPTION
|
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.
|
one time.
|
||||||
|
|
||||||
.#define BFD_CACHE_MAX_OPEN 10
|
.#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
|
static void
|
||||||
|
@ -111,7 +108,7 @@ DEFUN_VOID(close_one)
|
||||||
}
|
}
|
||||||
|
|
||||||
kill->where = ftell((FILE *)(kill->iostream));
|
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 */
|
/* 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;
|
if (cache_sentinel == abfd) cache_sentinel = (bfd *)NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static boolean
|
||||||
DEFUN(bfd_cache_delete,(abfd),
|
DEFUN(bfd_cache_delete,(abfd),
|
||||||
bfd *abfd)
|
bfd *abfd)
|
||||||
{
|
{
|
||||||
fclose ((FILE *)(abfd->iostream));
|
boolean ret;
|
||||||
|
|
||||||
|
if (fclose ((FILE *)(abfd->iostream)) == EOF)
|
||||||
|
ret = false;
|
||||||
|
else
|
||||||
|
ret = true;
|
||||||
snip (abfd);
|
snip (abfd);
|
||||||
abfd->iostream = NULL;
|
abfd->iostream = NULL;
|
||||||
open_files--;
|
open_files--;
|
||||||
bfd_last_cache = 0;
|
bfd_last_cache = 0;
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bfd *
|
static bfd *
|
||||||
|
@ -183,16 +186,24 @@ DESCRIPTION
|
||||||
then close it too.
|
then close it too.
|
||||||
|
|
||||||
SYNOPSIS
|
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),
|
DEFUN(bfd_cache_close,(abfd),
|
||||||
bfd *abfd)
|
bfd *abfd)
|
||||||
{
|
{
|
||||||
/* If this file is open then remove from the chain */
|
/* If this file is open then remove from the chain */
|
||||||
if (abfd->iostream)
|
if (abfd->iostream)
|
||||||
{
|
{
|
||||||
bfd_cache_delete(abfd);
|
return bfd_cache_delete(abfd);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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(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(void, bfd_alloc_grow,(bfd *abfd, PTR thing, bfd_size_type size));
|
||||||
PROTO(PTR, bfd_alloc_finish,(bfd *abfd));
|
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)
|
#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): \
|
(FILE*)(bfd_last_cache->iostream): \
|
||||||
bfd_cache_lookup_worker(x))
|
bfd_cache_lookup_worker(x))
|
||||||
void EXFUN(bfd_cache_init , (bfd *));
|
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_open_file, (bfd *));
|
||||||
FILE *EXFUN(bfd_cache_lookup_worker, (bfd *));
|
FILE *EXFUN(bfd_cache_lookup_worker, (bfd *));
|
||||||
void EXFUN(bfd_constructor_entry, (bfd *abfd,
|
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 *a,
|
||||||
CONST bfd_arch_info_type *b));
|
CONST bfd_arch_info_type *b));
|
||||||
boolean EXFUN(bfd_default_scan, (CONST struct bfd_arch_info *, CONST char *));
|
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));
|
||||||
|
|
Loading…
Reference in a new issue