From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28809 invoked by alias); 26 Apr 2012 18:42:39 -0000 Received: (qmail 28795 invoked by uid 22791); 26 Apr 2012 18:42:39 -0000 X-SWARE-Spam-Status: No, hits=-5.6 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,RCVD_IN_DNSWL_HI,RCVD_IN_HOSTKARMA_W,SARE_LWSHORTT,SPF_HELO_PASS,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; Thu, 26 Apr 2012 18:42:24 +0000 Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q3QIgOo7016779 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Thu, 26 Apr 2012 14:42:24 -0400 Received: from host2.jankratochvil.net (ovpn-116-17.ams2.redhat.com [10.36.116.17]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id q3QIgKsi004115 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Thu, 26 Apr 2012 14:42:23 -0400 Date: Thu, 26 Apr 2012 18:48:00 -0000 From: Jan Kratochvil To: Tom Tromey Cc: gdb-patches@sourceware.org Subject: Re: [3/10] introduce psymtab users Message-ID: <20120426184219.GB21029@host2.jankratochvil.net> References: <87haw7brks.fsf@fleche.redhat.com> <20120426172711.GA19350@host2.jankratochvil.net> <87zk9y72zv.fsf@fleche.redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <87zk9y72zv.fsf@fleche.redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) 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: 2012-04/txt/msg00951.txt.bz2 On Thu, 26 Apr 2012 20:38:12 +0200, Tom Tromey wrote: > >> @@ -760,6 +769,11 @@ lookup_partial_symbol (struct partial_symtab > >> *pst, const char *name, > >> static struct symtab * > >> psymtab_to_symtab (struct partial_symtab *pst) > >> { > >> + /* If it is a shared psymtab, find an unshared psymtab that includes > >> + it. Any such psymtab will do. */ > >> + while (pst->users != NULL) > >> + pst = pst->users[0]; > > Jan> Currently GDB already has a problem that if it needs to expand > Jan> symtab A to get symbol X it already expands also symtabs B, C and > Jan> D, all of them pretty big for C++. > > Jan> With such random choosing of a symtab for expansion this multi-expand > Jan> performance hit may get even worse for big C++ programs. > > Jan> (Not sure if you do not already plan some more general fix for that.) > > Someday I would like to implement my lazy CU expansion ideas. > Well, unless we think of something better. And if we think they'll help > enough; first one of us should redo the performance comparisons. > > In the short term, though, I don't think this makes things any worse. > My reasoning is that in the uncompressed DWARF, gdb would read the first > matching CU. With the compressed DWARF, gdb still does exactly this, > only it reads the CU and the included PUs. I had on my mind a case where it can make the performance worse but I see now it cannot. If PST is not yet expanded it means very every pst->users[i] element is also not expanded, right? Thanks, Jan