[patch] Fix dangling displays in separate debug
Jan Kratochvil
jan.kratochvil@redhat.com
Fri Apr 9 15:30:00 GMT 2010
On Wed, 07 Apr 2010 21:24:54 +0200, Tom Tromey wrote:
> >>>>> "Jan" == Jan Kratochvil <jan.kratochvil@redhat.com> writes:
> Jan> - if (SYMBOL_SYMTAB (symbol)->objfile == solib->objfile)
> Jan> + if (SYMBOL_SYMTAB (symbol)->objfile == solib->objfile
> Jan> + || SYMBOL_SYMTAB (symbol)->objfile
> Jan> + == solib->objfile->separate_debug_objfile)
>
> An objfile can now have multiple separate debuginfo objfiles, linked
> using separate_debug_objfile_link.
Yes, I agree, forgot...
> So, I think this test should actually be:
>
> if (SYMBOL_SYMTAB (symbol)->objfile == solib->objfile
> || SYMBOL_SYMTAB (symbol)->objfile->separate_debug_objfile_backlink
> == solib->objfile)
>
> What do you think?
Unaware how to improve it more.
No regressions on {x86_64,x86_64-m32,i686}-fedora12-linux-gnu.
OK to check-in?
Thanks,
Jan
gdb/
2010-04-03 Jan Kratochvil <jan.kratochvil@redhat.com>
Tom Tromey <tromey@redhat.com>
* printcmd.c (display_uses_solib_p): Check also
SEPARATE_DEBUG_OBJFILE_BACKLINK. New variable symbol_objfile.
gdb/testsuite/
2010-04-03 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.base/solib-display.exp (split solib): New.
--- a/gdb/printcmd.c
+++ b/gdb/printcmd.c
@@ -1888,6 +1888,7 @@ display_uses_solib_p (const struct display *d,
{
const struct block *const block = elts[i + 1].block;
const struct symbol *const symbol = elts[i + 2].symbol;
+ struct objfile *symbol_objfile;
if (block != NULL
&& solib_contains_address_p (solib,
@@ -1895,7 +1896,10 @@ display_uses_solib_p (const struct display *d,
return 1;
/* SYMBOL_OBJ_SECTION (symbol) may be NULL. */
- if (SYMBOL_SYMTAB (symbol)->objfile == solib->objfile)
+ symbol_objfile = SYMBOL_SYMTAB (symbol)->objfile;
+ if (symbol_objfile == solib->objfile
+ || symbol_objfile->separate_debug_objfile_backlink
+ == solib->objfile)
return 1;
}
endpos -= oplen;
--- a/gdb/testsuite/gdb.base/solib-display.exp
+++ b/gdb/testsuite/gdb.base/solib-display.exp
@@ -53,6 +53,13 @@ if { [gdb_compile_shlib ${srcfile_lib} ${binfile_lib} $lib_flags] != ""
return -1
}
+set test "split solib"
+if {[gdb_gnu_strip_debug $binfile_lib] != 0} {
+ fail $test
+} else {
+ pass $test
+}
+
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
More information about the Gdb-patches
mailing list