This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: [RFA/dwarf] Don't process types multiple times
- From: Daniel Jacobowitz <drow at false dot org>
- To: gdb-patches at sources dot redhat dot com, Jim Blandy <jimb at redhat dot com>,Elena Zannoni <ezannoni at redhat dot com>
- Date: Thu, 4 Mar 2004 21:55:04 -0500
- Subject: Re: [RFA/dwarf] Don't process types multiple times
- References: <20040225044206.GA23242@nevyn.them.org>
On Tue, Feb 24, 2004 at 11:42:06PM -0500, Daniel Jacobowitz wrote:
> This independent patch is a performance and correctness fix for full symbol
> processing. My description from the intercu branch posting:
>
> There are two ways that we can process a general DIE: process_die or
> read_type_die. Children of particular DIE types may be processed directly,
> but these are the only major dispatch points. It's interesting to notice
> that almost everything called from read_type_die starts with "if (die->type)
> return": everything but enumeration types and aggregate types, in fact.
> This means that if the first reference to an enumeration or aggregate type
> is a DW_AT_type or DW_AT_containing_type in a DIE numerically before the
> type's DIE, we'll end up calling new_symbol for it twice.
>
> Fixing this saves about 8% memory and 4% time from gdb -readnow libc.so.6,
> a lot of duplicate entries on maint print symbols which I vaguely recall
> being confused about but never investigated, and some serious problems for
> inter-CU support. Without this, types could be added to the wrong symbol
> table.
>
> Tested i686-pc-linux-gnu, no regressions. OK to commit?
Ping. I would like to apply this bug fix for GDB 6.1.
--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer