diff options
author | Ian Lance Taylor <ian@airs.com> | 1994-04-01 22:12:00 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 1994-04-01 22:12:00 +0000 |
commit | dfe09c4926f59250567b319e77a1d3340d783894 (patch) | |
tree | 55c5765bcf3dc21863def9a6c734d4c21b062860 /bfd | |
parent | 5c8444f8f80fee5a32dfecbc0e408640c57c6809 (diff) | |
download | gdb-dfe09c4926f59250567b319e77a1d3340d783894.zip gdb-dfe09c4926f59250567b319e77a1d3340d783894.tar.gz gdb-dfe09c4926f59250567b319e77a1d3340d783894.tar.bz2 |
* 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.
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/ChangeLog | 39 | ||||
-rw-r--r-- | bfd/archive.c | 7 |
2 files changed, 45 insertions, 1 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 4f25e82..8bda4bc 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -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. diff --git a/bfd/archive.c b/bfd/archive.c index 88e6dfa..589199b 100644 --- a/bfd/archive.c +++ b/bfd/archive.c @@ -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; } } |