diff options
author | Ian Lance Taylor <ian@airs.com> | 1994-04-01 22:08:38 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 1994-04-01 22:08:38 +0000 |
commit | 5c8444f8f80fee5a32dfecbc0e408640c57c6809 (patch) | |
tree | 6a44fabf7c642cf0c41fdeabe57063890231a015 /bfd/bout.c | |
parent | 9deaaaf1b35a54f776957492c4300ea993a3961c (diff) | |
download | gdb-5c8444f8f80fee5a32dfecbc0e408640c57c6809.zip gdb-5c8444f8f80fee5a32dfecbc0e408640c57c6809.tar.gz gdb-5c8444f8f80fee5a32dfecbc0e408640c57c6809.tar.bz2 |
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.
Diffstat (limited to 'bfd/bout.c')
-rw-r--r-- | bfd/bout.c | 11 |
1 files changed, 7 insertions, 4 deletions
@@ -457,8 +457,10 @@ b_out_slurp_reloc_table (abfd, asect, symbols) struct relocation_info *relocs; arelent *reloc_cache; - if (asect->relocation) return true; - if (!aout_32_slurp_symbol_table (abfd)) return false; + if (asect->relocation) + return true; + if (!aout_32_slurp_symbol_table (abfd)) + return false; if (asect == obj_datasec (abfd)) { reloc_size = exec_hdr(abfd)->a_drsize; @@ -474,7 +476,8 @@ b_out_slurp_reloc_table (abfd, asect, symbols) return false; doit: - bfd_seek (abfd, (file_ptr)(asect->rel_filepos), SEEK_SET); + if (bfd_seek (abfd, (file_ptr)(asect->rel_filepos), SEEK_SET) != 0) + return false; count = reloc_size / sizeof (struct relocation_info); relocs = (struct relocation_info *) malloc (reloc_size); @@ -1379,7 +1382,7 @@ b_out_get_relocated_section_contents (in_abfd, link_info, link_order, data, #define aout_32_bfd_link_hash_table_create _bfd_generic_link_hash_table_create #define aout_32_bfd_link_add_symbols _bfd_generic_link_add_symbols #define aout_32_bfd_final_link _bfd_generic_final_link -#define aout_32_bfd_free_cached_info bfd_true +#define aout_32_close_and_cleanup aout_32_bfd_free_cached_info bfd_target b_out_vec_big_host = { |