aboutsummaryrefslogtreecommitdiff
path: root/bfd/coffgen.c
diff options
context:
space:
mode:
Diffstat (limited to 'bfd/coffgen.c')
-rw-r--r--bfd/coffgen.c44
1 files changed, 19 insertions, 25 deletions
diff --git a/bfd/coffgen.c b/bfd/coffgen.c
index afc663c..9d45253 100644
--- a/bfd/coffgen.c
+++ b/bfd/coffgen.c
@@ -3275,43 +3275,37 @@ bfd_coff_group_name (bfd *abfd, const asection *sec)
}
bool
-_bfd_coff_close_and_cleanup (bfd *abfd)
+_bfd_coff_free_cached_info (bfd *abfd)
{
- struct coff_tdata *tdata = coff_data (abfd);
+ struct coff_tdata *tdata;
- if (tdata != NULL)
+ if (bfd_family_coff (abfd)
+ && (bfd_get_format (abfd) == bfd_object
+ || bfd_get_format (abfd) == bfd_core)
+ && (tdata = coff_data (abfd)) != NULL)
{
- if (bfd_family_coff (abfd) && bfd_get_format (abfd) == bfd_object)
+ if (tdata->section_by_index)
{
- if (tdata->section_by_index)
- {
- htab_delete (tdata->section_by_index);
- tdata->section_by_index = NULL;
- }
+ htab_delete (tdata->section_by_index);
+ tdata->section_by_index = NULL;
+ }
- if (tdata->section_by_target_index)
- {
- htab_delete (tdata->section_by_target_index);
- tdata->section_by_target_index = NULL;
- }
+ if (tdata->section_by_target_index)
+ {
+ htab_delete (tdata->section_by_target_index);
+ tdata->section_by_target_index = NULL;
}
+ _bfd_dwarf2_cleanup_debug_info (abfd, &tdata->dwarf2_find_line_info);
+ _bfd_stab_cleanup (abfd, &tdata->line_info);
+
/* 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_get_format (abfd) == bfd_object
- && bfd_family_coff (abfd)
- && !_bfd_coff_free_symbols (abfd))
+ if (!_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);
- _bfd_stab_cleanup (abfd, &tdata->line_info);
- }
}
- return _bfd_generic_close_and_cleanup (abfd);
+ return _bfd_generic_bfd_free_cached_info (abfd);
}