From 4decd602d8570eda5d36fd6cca2e50091000fa7a Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Wed, 22 May 2019 17:52:59 +0930 Subject: 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. --- bfd/som.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) (limited to 'bfd/som.c') diff --git a/bfd/som.c b/bfd/som.c index 640253e..0d17b32 100644 --- a/bfd/som.c +++ b/bfd/som.c @@ -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. */ -- cgit v1.1