From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2722 invoked by alias); 26 Apr 2012 18:38:28 -0000 Received: (qmail 2651 invoked by uid 22791); 26 Apr 2012 18:38:26 -0000 X-SWARE-Spam-Status: No, hits=-5.9 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:38:14 +0000 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q3QIcETt010723 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Thu, 26 Apr 2012 14:38:14 -0400 Received: from barimba (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id q3QIcC6M006692 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Thu, 26 Apr 2012 14:38:13 -0400 From: Tom Tromey To: Jan Kratochvil Cc: gdb-patches@sourceware.org Subject: Re: [3/10] introduce psymtab users References: <87haw7brks.fsf@fleche.redhat.com> <20120426172711.GA19350@host2.jankratochvil.net> Date: Thu, 26 Apr 2012 18:42:00 -0000 In-Reply-To: <20120426172711.GA19350@host2.jankratochvil.net> (Jan Kratochvil's message of "Thu, 26 Apr 2012 19:27:11 +0200") Message-ID: <87zk9y72zv.fsf@fleche.redhat.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.95 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain 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/msg00950.txt.bz2 >> + /* A flag that is temporarily used when searching psymtabs. */ >> + >> + unsigned char searched_flag; Jan> Please make it the enum. I didn't do this originally because this field and the enum values are purely temporary. They have no meaning outside one little bit of the code. But, I don't mind, I will make the change. Very little should be including psympriv.h anyway. >> @@ -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. Jan> I do not see why to use the 'keep_going' variable here, just use 'break;'. Jan> But it applies also to the current code. Yeah, I don't want to change code I just moved around. Cleanups are fine separately. Tom