From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6710 invoked by alias); 9 Apr 2010 15:30:23 -0000 Received: (qmail 6687 invoked by uid 22791); 9 Apr 2010 15:30:22 -0000 X-SWARE-Spam-Status: No, hits=-5.3 required=5.0 tests=BAYES_00,KAM_STOCKGEN,RCVD_IN_DNSWL_HI,SPF_HELO_PASS,TW_BJ,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 09 Apr 2010 15:30:18 +0000 Received: from int-mx05.intmail.prod.int.phx2.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.18]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id o39FUHP0018174 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Fri, 9 Apr 2010 11:30:17 -0400 Received: from host0.dyn.jankratochvil.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx05.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id o39FUEPC028995 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 9 Apr 2010 11:30:16 -0400 Received: from host0.dyn.jankratochvil.net (localhost [127.0.0.1]) by host0.dyn.jankratochvil.net (8.14.4/8.14.4) with ESMTP id o39FUEuF010524; Fri, 9 Apr 2010 17:30:14 +0200 Received: (from jkratoch@localhost) by host0.dyn.jankratochvil.net (8.14.4/8.14.4/Submit) id o39FUEGO010523; Fri, 9 Apr 2010 17:30:14 +0200 Date: Fri, 09 Apr 2010 15:30:00 -0000 From: Jan Kratochvil To: Tom Tromey Cc: gdb-patches@sourceware.org Subject: Re: [patch] Fix dangling displays in separate debug Message-ID: <20100409153014.GA10379@host0.dyn.jankratochvil.net> References: <20100403095558.GA22520@host0.dyn.jankratochvil.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.20 (2009-08-17) X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2010-04/txt/msg00239.txt.bz2 On Wed, 07 Apr 2010 21:24:54 +0200, Tom Tromey wrote: > >>>>> "Jan" == Jan Kratochvil 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 Tom Tromey * printcmd.c (display_uses_solib_p): Check also SEPARATE_DEBUG_OBJFILE_BACKLINK. New variable symbol_objfile. gdb/testsuite/ 2010-04-03 Jan Kratochvil * 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