diff options
author | Alan Modra <amodra@gmail.com> | 2023-05-31 21:17:48 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2023-06-01 09:51:59 +0930 |
commit | 8261abd51344cb4c454514fba1389a9292f9652b (patch) | |
tree | e2a43836533c31389d177a41f81a955b23015352 /bfd/som.c | |
parent | 90fd5049bde965ad217a013398ffc722f298de82 (diff) | |
download | gdb-8261abd51344cb4c454514fba1389a9292f9652b.zip gdb-8261abd51344cb4c454514fba1389a9292f9652b.tar.gz gdb-8261abd51344cb4c454514fba1389a9292f9652b.tar.bz2 |
bfd_close and target free_cached_memory
bfd_free_cached_info is used in just one place in archive.c, which
means most times we reach bfd_close the function isn't called. On the
other hand, if bfd_free_cached_info is called we can't do much on the
bfd since it loses all its obj_alloc memory. This restricts what can
be done in a target _close_and_cleanup. In particular you can't look
at sections, which leads to duplication of code in target
close_and_cleanup and free_cached_info, eg. elfnn-aarch64.c.
* opncls.c (_bfd_delete_bfd): Call bfd_free_cached_info.
* elfnn-aarch64.c (elfNN_aarch64_close_and_cleanup): Delete.
(bfd_elfNN_close_and_cleanup): Don't define.
* som.c (som_bfd_free_cached_info): Don't call
_bfd_generic_close_and_cleanup here.
(som_close_and_cleanup): Define as _bfd_generic_close_and_cleanup.
Diffstat (limited to 'bfd/som.c')
-rw-r--r-- | bfd/som.c | 6 |
1 files changed, 4 insertions, 2 deletions
@@ -6813,7 +6813,9 @@ som_bfd_free_cached_info (bfd *abfd) #undef FREE } - return _bfd_generic_close_and_cleanup (abfd); + /* Do not call _bfd_free_cached_info here. som_write_armap needs + to access the bfd obj_alloc memory. */ + return true; } /* End of miscellaneous support functions. */ @@ -6828,7 +6830,7 @@ som_bfd_link_split_section (bfd *abfd ATTRIBUTE_UNUSED, asection *sec) #define som_find_line _bfd_nosymbols_find_line #define som_get_symbol_version_string _bfd_nosymbols_get_symbol_version_string -#define som_close_and_cleanup som_bfd_free_cached_info +#define som_close_and_cleanup _bfd_generic_close_and_cleanup #define som_read_ar_hdr _bfd_generic_read_ar_hdr #define som_write_ar_hdr _bfd_generic_write_ar_hdr #define som_openr_next_archived_file bfd_generic_openr_next_archived_file |