From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1015 invoked by alias); 22 Jun 2012 19:45:19 -0000 Received: (qmail 998 invoked by uid 22791); 22 Jun 2012 19:45:15 -0000 X-SWARE-Spam-Status: No, hits=-6.5 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,RCVD_IN_DNSWL_HI,RCVD_IN_HOSTKARMA_W,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; Fri, 22 Jun 2012 19:44:55 +0000 Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q5MJisVq025135 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 22 Jun 2012 15:44:54 -0400 Received: from barimba (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id q5MJiqhd012069 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Fri, 22 Jun 2012 15:44:53 -0400 From: Tom Tromey To: dje@google.com (Doug Evans) Cc: gdb-patches@sourceware.org, ccoutant@google.com Subject: Re: [RFA] Add global/static and symbol kind indicator to .gdb_index References: <20120619074931.6F0B41E136F@ruffy2.mtv.corp.google.com> Date: Fri, 22 Jun 2012 19:45:00 -0000 In-Reply-To: <20120619074931.6F0B41E136F@ruffy2.mtv.corp.google.com> (Doug Evans's message of "Tue, 19 Jun 2012 00:49:31 -0700 (PDT)") Message-ID: <87txy3f7wr.fsf@fleche.redhat.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.1 (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-06/txt/msg00732.txt.bz2 >>>>> "Doug" == Doug Evans writes: Doug> The global/static bit massively speeds up looking up things like Doug> "int" when debugging with lots of shared libraries (all having Doug> .gdb_index). PR 14125 I don't think this patch is needed to achieve this. At least, the "int" case and other similar cases were fixed by: revision 1.462 date: 2010/09/27 18:42:36; author: tromey; state: Exp; lines: +80 -45 * dwarf2read.c (dwarf2_read_index): Only allow version 3. (write_psymbols): Add 'psyms_seen' and 'is_static' arguments. Only emit a given psymbol once. (struct signatured_type_index_data) : New field. (write_one_signatured_type): Update. (cleanup_htab): New function. (write_psymtabs_to_index): Update. Create psyms_seen hash. Bump version to 3. (save_gdb_index_command): Update index documentation. What happens after 1.462 is that a given partial symbol only ends up in the index once. Due to the bcache this means that all duplicates of the same type are filtered out. So, for instance, from gdb.debug on Fedora 16: barimba. readelf --debug-dump=gdb_index /usr/lib/debug/usr/bin/gdb.debug |fgrep '] int:' [29426] int: 0 That is, "int" is just defined in a single CU. Maybe gold isn't doing this? I think it probably should. I was going to ask if you measured the size increase; but I think it can't be very large -- basically only in the case where a psymbol appears in one CU's static list and another CU's global list. I doubt that happens often enough to worry about. Doug> The symbol kind indicator speeds up things like "info fun|var foo". Doug> [One example is ~500MB/67sec -> ~250MB/30sec.] I think this is a reasonable justification. Doug> [The patch adds include/gdb/gdb-index.h which technically needs Doug> approval from binutils@, but no point in submitting it there Doug> until the gdb parts are approved.] I don't think I even knew about this directory until I read your patch :-) Anyway, I read the patch, and I didn't see any issues with it. I think it is ok. Tom