PR26239, memory leak in _bfd_dwarf2_slurp_debug_info

PR 26239
	* coffgen.c (_bfd_coff_close_and_cleanup): Free dwarf2 info.
This commit is contained in:
Alan Modra
2020-07-15 10:59:20 +09:30
parent 4fd8d58564
commit 28b80303a2
2 changed files with 15 additions and 4 deletions

View File

@@ -1,3 +1,8 @@
2020-07-15 Alan Modra <amodra@gmail.com>
PR 26239
* coffgen.c (_bfd_coff_close_and_cleanup): Free dwarf2 info.
2020-07-15 Nick Clifton <nickc@redhat.com>
PR26240

View File

@@ -3141,16 +3141,22 @@ bfd_coff_group_name (bfd *abfd, const asection *sec)
bfd_boolean
_bfd_coff_close_and_cleanup (bfd *abfd)
{
if (abfd->format == bfd_object
&& bfd_family_coff (abfd)
&& coff_data (abfd) != NULL)
struct coff_tdata *tdata = coff_data (abfd);
if (tdata != NULL)
{
/* PR 25447:
Do not clear the keep_syms and keep_strings flags.
These may have been set by pe_ILF_build_a_bfd() indicating
that the syms and strings pointers are not to be freed. */
if (!_bfd_coff_free_symbols (abfd))
if (bfd_get_format (abfd) == bfd_object
&& bfd_family_coff (abfd)
&& !_bfd_coff_free_symbols (abfd))
return FALSE;
if (bfd_get_format (abfd) == bfd_object
|| bfd_get_format (abfd) == bfd_core)
_bfd_dwarf2_cleanup_debug_info (abfd, &tdata->dwarf2_find_line_info);
}
return _bfd_generic_close_and_cleanup (abfd);
}