gdb/
* symfile.c (reread_symbols): Move free_objfile_separate_debug, preserve_values, sym_finish and clear_objfile_data calls before BFD close. Move free_objfile_separate_debug as the very first call. New comment on the ordering. gdb/testsuite/ * gdb.base/reread.exp: If srcfile2 fails to build retry it with -DNO_SECTIONS. * gdb.base/reread2.c <!NO_SECTIONS>: New sections block.
This commit is contained in:
parent
8de7d199bb
commit
f6eeced03d
@ -1,3 +1,10 @@
|
||||
2011-12-19 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
* symfile.c (reread_symbols): Move free_objfile_separate_debug,
|
||||
preserve_values, sym_finish and clear_objfile_data calls before BFD
|
||||
close. Move free_objfile_separate_debug as the very first call. New
|
||||
comment on the ordering.
|
||||
|
||||
2011-12-19 Ulrich Weigand <uweigand@de.ibm.com>
|
||||
|
||||
* s390-tdep.c (s390_push_dummy_call): Set addressing mode bit
|
||||
|
@ -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)
|
||||
|
@ -1,3 +1,9 @@
|
||||
2011-12-19 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
* gdb.base/reread.exp: If srcfile2 fails to build retry it with
|
||||
-DNO_SECTIONS.
|
||||
* gdb.base/reread2.c <!NO_SECTIONS>: New sections block.
|
||||
|
||||
2011-12-19 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
* gdb.cp/ptype-cv-cp.exp (ptype v_volatile_const_my_int): Make
|
||||
|
@ -38,7 +38,8 @@ set testfile2 "reread2"
|
||||
set srcfile2 ${testfile2}.c
|
||||
set binfile2 ${objdir}/${subdir}/${testfile2}$EXEEXT
|
||||
|
||||
if { [gdb_compile "${srcdir}/${subdir}/${srcfile2}" "${binfile2}" executable {debug nowarnings}] != "" } {
|
||||
if { [gdb_compile "${srcdir}/${subdir}/${srcfile2}" "${binfile2}" executable {debug nowarnings}] != ""
|
||||
&& [gdb_compile "${srcdir}/${subdir}/${srcfile2}" "${binfile2}" executable {debug nowarnings additional_flags=-DNO_SECTIONS}] != ""} {
|
||||
untested reread.exp
|
||||
return -1
|
||||
}
|
||||
|
@ -15,3 +15,14 @@ int main()
|
||||
foo();
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Ensure the new file will have more sections. It may exploit code not
|
||||
updating its SECTION_COUNT on reread_symbols. */
|
||||
|
||||
#ifndef NO_SECTIONS
|
||||
# define VAR0(n) __attribute__ ((section ("sect" #n))) int var##n;
|
||||
# define VAR1(n) VAR0 (n ## 0) VAR0(n ## 1) VAR0(n ## 2) VAR0(n ## 3)
|
||||
# define VAR2(n) VAR1 (n ## 0) VAR1(n ## 1) VAR1(n ## 2) VAR1(n ## 3)
|
||||
# define VAR3(n) VAR2 (n ## 0) VAR2(n ## 1) VAR2(n ## 2) VAR2(n ## 3)
|
||||
VAR3 (0)
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user