This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch] Fix dangling displays in separate debug


On Friday 09 April 2010 21:00:46, Jan Kratochvil wrote:
> On Fri, 09 Apr 2010 18:47:50 +0200, Pedro Alves wrote:

> > and `solib->objfile'
> > (because GDB didn't find any symbols for the shared library) be NULL,
> 
> I was convinced due to some invalid reasons solib->objfile cannot be NULL.

There's an easy way to see that state:

 (gdb) nosharedlibrary
 (gdb) info sharedlibrary

This will not reload symbol info, thus you'll have
a bunch of solibs with objfile set to NULL.
[do `(gdb) sharedlibrary' to reload debug info].

> gdb/
> 2010-04-09  Jan Kratochvil  <jan.kratochvil@redhat.com>
> 	    Tom Tromey  <tromey@redhat.com>
> 	    Pedro Alves  <pedro@codesourcery.com>
> 
> 	* printcmd.c (display_uses_solib_p): Check also
> 	SEPARATE_DEBUG_OBJFILE_BACKLINK.  New variable symbol_objfile.
> 	* solist.h (struct so_list) <objfile>: New comment.
> 	* symtab.h (struct general_symbol_info) <obj_section>: Extend the
> 	comment.

This part is OK.  Thanks for the new comments.

> 
> gdb/testsuite/
> 2010-04-09  Jan Kratochvil  <jan.kratochvil@redhat.com>
> 
> 	* gdb.base/solib-display.exp (split solib): New.

Doesn't this make it so that only the separate debug info
case is exercised, and, it stops exercising the non-separate
debug info case?  I think we should instead be running the
relevant parts the test twice instead?

> --- 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

Not all systems support this, so this should 
be `unsupported' instead.  When you make the tests
run twice, this would skip the rest of the
rerunning.

> +} else {
> +    pass $test
> +}

> +
>  gdb_exit
>  gdb_start
>  gdb_reinitialize_dir $srcdir/$subdir

-- 
Pedro Alves


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]