This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [RFA/dwarf] Don't process types multiple times


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]