diff options
Diffstat (limited to 'gdb/symfile.c')
-rw-r--r-- | gdb/symfile.c | 44 |
1 files changed, 23 insertions, 21 deletions
diff --git a/gdb/symfile.c b/gdb/symfile.c index 72080ac..e9c290c 100644 --- a/gdb/symfile.c +++ b/gdb/symfile.c @@ -2446,6 +2446,29 @@ reread_symbols (void) exec_file_attach (bfd_get_filename (objfile->obfd), 0); } + /* Keep the calls order approx. the same as in free_objfile. */ + + /* Free the separate debug objfiles. It will be + automatically recreated by sym_read. */ + free_objfile_separate_debug (objfile); + + /* Remove any references to this objfile in the global + value lists. */ + preserve_values (objfile); + + /* Nuke all the state that we will re-read. Much of the following + code which sets things to NULL really is necessary to tell + other parts of GDB that there is nothing currently there. + + Try to keep the freeing order compatible with free_objfile. */ + + if (objfile->sf != NULL) + { + (*objfile->sf->sym_finish) (objfile); + } + + clear_objfile_data (objfile); + /* Clean up any state BFD has sitting around. We don't need to close the descriptor but BFD lacks a way of closing the BFD without closing the descriptor. */ @@ -2471,27 +2494,6 @@ reread_symbols (void) memcpy (offsets, objfile->section_offsets, SIZEOF_N_SECTION_OFFSETS (num_offsets)); - /* Remove any references to this objfile in the global - value lists. */ - preserve_values (objfile); - - /* Nuke all the state that we will re-read. Much of the following - code which sets things to NULL really is necessary to tell - other parts of GDB that there is nothing currently there. - - Try to keep the freeing order compatible with free_objfile. */ - - if (objfile->sf != NULL) - { - (*objfile->sf->sym_finish) (objfile); - } - - clear_objfile_data (objfile); - - /* Free the separate debug objfiles. It will be - automatically recreated by sym_read. */ - free_objfile_separate_debug (objfile); - /* FIXME: Do we have to free a whole linked list, or is this enough? */ if (objfile->global_psymbols.list) |