bfdtest1 segfaults on hppa-hp-hpux10

The archive element cache needs tidying when closing an archive element.
This patch fixes these failures:
-FAIL: ar long file names (bfdtest1)
-FAIL: ar thin archive (bfdtest1)
-FAIL: ar thin archive with nested archive (bfdtest1)

	* som.c (som_bfd_free_cached_info): Call
	_bfd_generic_close_and_cleanup.
This commit is contained in:
Alan Modra 2019-05-22 17:52:59 +09:30
parent 22c6ccb89e
commit 4decd602d8
2 changed files with 20 additions and 15 deletions

View File

@ -1,3 +1,8 @@
2019-05-22 Alan Modra <amodra@gmail.com>
* som.c (som_bfd_free_cached_info): Call
_bfd_generic_close_and_cleanup.
2019-05-21 Faraz Shahbazker <fshahbazker@wavecomp.com>
* elfxx-mips.c (_bfd_mips_elf_check_relocs): Generate error

View File

@ -6695,25 +6695,25 @@ som_write_armap (bfd *abfd,
static bfd_boolean
som_bfd_free_cached_info (bfd *abfd)
{
asection *o;
if (bfd_get_format (abfd) != bfd_object)
return TRUE;
if (bfd_get_format (abfd) == bfd_object)
{
asection *o;
#define FREE(x) if (x != NULL) { free (x); x = NULL; }
/* Free the native string and symbol tables. */
FREE (obj_som_symtab (abfd));
FREE (obj_som_stringtab (abfd));
for (o = abfd->sections; o != NULL; o = o->next)
{
/* Free the native relocations. */
o->reloc_count = (unsigned) -1;
FREE (som_section_data (o)->reloc_stream);
/* Do not free the generic relocations as they are objalloc'ed. */
}
/* Free the native string and symbol tables. */
FREE (obj_som_symtab (abfd));
FREE (obj_som_stringtab (abfd));
for (o = abfd->sections; o != NULL; o = o->next)
{
/* Free the native relocations. */
o->reloc_count = (unsigned) -1;
FREE (som_section_data (o)->reloc_stream);
/* Do not free the generic relocations as they are objalloc'ed. */
}
#undef FREE
}
return TRUE;
return _bfd_generic_close_and_cleanup (abfd);
}
/* End of miscellaneous support functions. */