* archive.c (_bfd_write_archive_contents): Once we've found an

object, don't bother to look for more when deciding whether to
	build a map.
	(compute_and_write_armap): After adding the symbols for a BFD,
	call bfd_free_cached_info on it.
This commit is contained in:
Ian Lance Taylor 1994-04-01 22:12:00 +00:00
parent 5c8444f8f8
commit dfe09c4926
2 changed files with 45 additions and 1 deletions

View File

@ -1,5 +1,44 @@
Fri Apr 1 12:40:58 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
* archive.c (_bfd_write_archive_contents): Once we've found an
object, don't bother to look for more when deciding whether to
build a map.
(compute_and_write_armap): After adding the symbols for a BFD,
call bfd_free_cached_info on it.
Add bfd_free_cached_info support to a.out backends.
* aoutx.h (aout_get_external_symbols): Renamed from
aout_link_get_symbols. Read strings even if symbols have been
read. Store string size in obj_aout_string_size.
(NAME(aout,slurp_symbol_table)): Call aout_get_external_symbols to
read the symbols. Allocate the cached symbols with malloc, not
bfd_alloc.
(NAME(aout,slurp_reloc_table)): Allocate the cached relocs with
malloc, not bfd_alloc.
(NAME(aout,bfd_free_cached_info)): New function; free cached
symbols and relocs.
* libaout.h (struct aoutdata): Add external_string_size field.
(obj_aout_external_string_size): New accessor macro.
(NAME(aout,close_and_cleanup)): Don't declare.
(NAME(aout,bfd_free_cached_info)): Declare.
(aout_32_close_and_cleanup): Don't define.
(aout_64_close_and_cleanup): Don't define.
* aout-target.h (MY_bfd_free_cached_info): If not already defined,
define as NAME(aout,free_cached_info).
(MY_close_and_cleanup): If not already defined, define as
MY_bfd_free_cached_info.
* aout-adobe.c (aout_32_close_and_cleanup): Define.
(aout_32_bfd_free_cached_info): Don't define.
* bout.c (aout_32_close_and_cleanup): Define.
(aout_32_bfd_free_cached_info): Don't define.
* hp300hpux.c (MY_bfd_free_cached_info): Define as bfd_true.
(MY_close_and_cleanup): Don't define.
* i386lynx.c (NAME(lynx,slurp_reloc_table)): Allocate the cached
relocs with malloc, not bfd_alloc.
* i386os9k.c (aout_32_close_and_cleanup): Define.
(aout_32_bfd_free_cached_info): Don't define.
Add a new entry point to free memory cached by a BFD.
* targets.c (bfd_target): Add _bfd_free_cached_info field.
* bfd.c (bfd_free_cached_info): Define.
* bfd-in.h (JUMP_TABLE): Add _bfd_free_cached_info.

View File

@ -1476,7 +1476,7 @@ _bfd_write_archive_contents (arch)
(char *) arch_hdr (current)));
}
if (makemap)
if (makemap && ! hasobjects)
{ /* don't bother if we won't make a map! */
if ((bfd_check_format (current, bfd_object))
#if 0 /* FIXME -- these are not set correctly */
@ -1705,6 +1705,11 @@ compute_and_write_armap (arch, elength)
}
}
}
/* Now ask the BFD to free up any cached information, so we
don't fill all of memory with symbol tables. */
if (! bfd_free_cached_info (current))
goto error_return;
}
}