[RFA] Introduce notion of "search name"

Daniel Jacobowitz drow@false.org
Fri Apr 9 22:40:00 GMT 2004


On Tue, Apr 06, 2004 at 09:35:16AM -0500, Jim Blandy wrote:
> 
> Paul Hilfinger <hilfingr@gnat.com> writes:
> > Do you really object to our simply making permanent copies of these
> > names as needed?  (I'm perfectly happy to ditch the kludgy
> > objfile-finding hack.) You can't expect to save any space by
> > reclaiming these demangled names space when you reload the symbol
> > file, because (as I argued before) the set of demangled names
> > generally doesn't change much in such cases, and we are "interning"
> > the demangled symbols, so that multiple computations of the same
> > demangled symbol don't increase space.  This particular choice of name
> > storage is confined to the Ada module (the symbol table module doesn't
> > apply free to names stored in symbols, partial symbols, or minimal
> > symbols, so it doesn't care if one them has a longer than necessary
> > lifetime).
> 
> I tend to think it's not ideal, but okay.  Daniel, you were unhappy
> with this; did you have suggestions?

I'm unhappy with it, partly because not having a lifetime for these
things make it harder to identify memory leaks (of which we already
have quite enough, thank you).  But there are two options:

  - decide that lazily demangling is useful, and arrange to pass
    an objfile to every call to SYMBOL_DEMANGLED_NAME.  This also
    affects, at least, SYMBOL_NATURAL_NAME and SYMBOL_PRINT_NAME.
    I think it wouldn't be hard, just messy.
  - decide that being picky about the storage lifetime doesn't matter,
    and Paul's approximation is good enough.

I'm happier with the global hash table than I am with kludging around
searching for an objfile, certainly.  What do you think of the options?

On Fri, Apr 02, 2004 at 03:29:55AM -0500, Paul Hilfinger wrote:
> > What you did not explain is how [SYMBOL_DEMANGLED_SEARCH_NAME] 
> > is supposed to be different from SYMBOL_SEARCH_NAME.
> 
> Well, the direct answer is that for Ada, 
>       SYMBOL_DEMANGLED_SEARCH_NAME (sym) == NULL
> whereas 
>       SYMBOL_SEARCH_NAME (sym) == the "linkage name" of the symbol
> Perhaps, now that you bring it up, it might be clearer simply to make
> this a predicate: 
>       SYMBOL_SEARCHED_BY_DEMANGLED_NAME (sym) 
> or something like that?

I don't think that either of those divisions is general enough to be
useful.  Why should the search name have to be the linkage name or the
demangled name?  For C++ there are two potential 'search names' - the
name without DMGL_PARAMS, or just the basename.  Neither of these is
the linkage or natural name.

> > The existing ada_demangle never fails.  How does that interact with
> > what you said above?  Hopefully not by tagging all minsyms as Ada!
> 
> Ah, I have been putting off syncing the ada-* files with ours (they
> aren't compiled at the moment, and I feel no need to clutter the 
> public file system with unused versions.  However, perhaps it's time to
> check in the current versions, which are considerably different from the
> snapshot that's currently there.  In short: you are quite right, and the
> current Ada demangler returns NULL for non-Ada-mangled symbols.

Perhaps it's time to do this again.  I'm not sure how to handle it.

-- 
Daniel Jacobowitz
MontaVista Software                         Debian GNU/Linux Developer



More information about the Gdb-patches mailing list