bfd_close and target free_cached_memory
authorAlan Modra <amodra@gmail.com>
Wed, 31 May 2023 11:47:48 +0000 (21:17 +0930)
committerAlan Modra <amodra@gmail.com>
Thu, 1 Jun 2023 00:21:59 +0000 (09:51 +0930)
commit8261abd51344cb4c454514fba1389a9292f9652b
treee2a43836533c31389d177a41f81a955b23015352
parent90fd5049bde965ad217a013398ffc722f298de82
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.
bfd/elfnn-aarch64.c
bfd/opncls.c
bfd/som.c