Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Daniel Jacobowitz <drow@mvista.com>
To: David Carlton <carlton@math.stanford.edu>
Cc: gdb-patches@sources.redhat.com
Subject: Re: RFA/symtab: Let search_symbols find exact matches
Date: Mon, 10 Feb 2003 20:25:00 -0000	[thread overview]
Message-ID: <20030210202506.GA17910@nevyn.them.org> (raw)
In-Reply-To: <ro1vfzrj3qt.fsf@jackfruit.Stanford.EDU>

On Mon, Feb 10, 2003 at 12:10:50PM -0800, David Carlton wrote:
> On Mon, 10 Feb 2003 11:01:07 -0500, Daniel Jacobowitz <drow@mvista.com> said:
> 
> > This patch renames search_symbols to search_symbols_aux, and lets it
> > take an argument that specified regex or exact (well, strcmp_iw)
> > matching.  Then search_symbols becomes a wrapper.
> 
> > The new function is used by make_symbol_overload_list, which shaves
> > 50% time off of some tests in the C++ directory if your system libc
> > has debugging symbols; it removes the bogusity where all psymtabs
> > were converted to symtabs during overload resolution.  Whew.  This
> > cuts memory for namespace.exp from 70MB to 7MB, allowing some of my
> > hardware to actually run the test without crashing.
> 
> I love combining functions, but your patch makes me a bit nervous:
> search_symbols and make_symbol_overload_list are fairly different
> beasts.  If all you want to do is get rid of the aforementioned
> bogosity, how about the much more modest patch that I've included at
> the end of this message?
> 
> Benefits:
> 
> * It's more or less the minimal patch necessary to avoid converting
>   unnecessary symtabs.
> 
> * It should be faster: it uses the fact that global psymbols are
>   sorted.

[Bah, we should hash them.  We hash everything else.]

> Drawbacks:
> 
> * I'm to busy to spend too much time today thinking about whether or
>   not lookup_partial_symbol really works well enough for this patch to
>   work.  It certainly depends on partial symbols being demangled, but
>   they are now.  My guess is that lookup_partial_symbol still doesn't
>   work quite right (both because of improper use of
>   SYMBOL_SOURCE_NAME, and because of improper use of strcmp instead of
>   strcmp_iw).  The former shouldn't be a big deal; the latter might be
>   a big deal in some situations but probably shouldn't affect
>   lookup_partial_symbol (I _think_).  The correct fix there is to fix
>   lookup_partial_symbol, though, rather than avoiding its use.  (I
>   have run the patch through the testsuite; it passes, but that means
>   almost nothing, given how little the testsuite exercises partial
>   symbols.)
> 
> Could be either:
> 
> * If you really want some of the extra stuff that search_symbols does
>   and that make_symbol_overload_list doesn't (e.g. look at minimal
>   symbols), then of course your patch is a better idea.  But if you
>   don't, then probably you should avoid using search_symbols.
> 
> Anyways, give it a run on your platform to see if it works.  Compared
> to unpatched GDB, I'm getting a 3x memory improvement and a 2x speed
> improvement when running namespace.exp.
> 
> (If anybody else out there wants a laugh, just try to figure out what
> the part of lookup_partial_symbols that this patch removes actually
> does.  It's rather different from what the comment claims...)

There are like a million ways in GDB to find a list of symbols.  Me, I
think that's a recipe for suffering.  They're all subtly different.  I
want the same set of symbols considered for overload resolution and tab
completion, and there's no reason that this should be different from
the results of "break".  I intend some day to condense them all.

I imagine your patch will work; I'd still rather centralize the logic. 
I'm open to other opinions, though.

You had a good point about the sorted-list thing, since we really only
want "does at least one partial symbol in this psymtab match".  That
can be done as a follow-up patch to search_symbols_aux.  Really doing
this properly requires symbol functions which can return lists, and
we'll have that someday.  Then the logic would look like:
  ALL_SYMTABS
    get all matching functions in this symtab
  ALL_PSYMTABS
    if readin continue
    find a matching function in this psymtab
    if there is one
      read in
      get all matching functions in the new symtab

--  
Daniel Jacobowitz
MontaVista Software                         Debian GNU/Linux Developer


  parent reply	other threads:[~2003-02-10 20:25 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-02-10 16:01 Daniel Jacobowitz
2003-02-10 20:10 ` David Carlton
2003-02-10 20:18   ` David Carlton
2003-02-10 20:25   ` Daniel Jacobowitz [this message]
2003-02-10 21:15     ` David Carlton
2003-02-10 21:17       ` Daniel Jacobowitz
2003-02-20 22:41 ` David Carlton
2003-02-21 14:10   ` Daniel Jacobowitz
2003-02-21 15:27     ` Elena Zannoni
2003-02-21 17:14       ` David Carlton
2003-02-21 17:09     ` David Carlton
2003-02-25  0:35       ` David Carlton
2003-02-21 19:15   ` Elena Zannoni

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20030210202506.GA17910@nevyn.them.org \
    --to=drow@mvista.com \
    --cc=carlton@math.stanford.edu \
    --cc=gdb-patches@sources.redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox