This is the mail archive of the gdb@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: Demangling and searches


On Tue, 07 Jan 2003 15:54:36 -0800, Paul Hilfinger <hilfingr@CS.Berkeley.EDU> said:

> For some time, I've been meaning to ask a basic question about GDB
> search strategy: for language implementations that mangle their
> identifiers, the standard procedure in GDB at the moment is to
> search for the demangled identifier among the demangled identifiers
> of the symbol table, and to speed this search up by precomputing and
> storing the demangled symbol names.  Why?

> We used to do that for Ada mode in GDB, but subsequently changed our
> approach entirely.  For Ada, we MANGLE the symbol we're searching
> for and then search among the MANGLED (i.e., raw, unmodified,
> warm-from- the-executable) names.

I'm curious: in Ada, what does the mangling do?  In particular, how
much type info does it contain?  In C++, the mangled name contains
type info for the arguments for functions; I don't see how, using
GDB's current data structures, to allow us to allow users to, say,
break on a function without requiring them to specify the types of the
arguments, if we took your approach.  (Though it might be possible to
modify GDB's data structures to allow that.)

Also, C++ debugging really takes place in a mixed C/C++ environment
(which is really inherent to the nature of C++, given the possibility
of 'extern "C"') so it can be hard to tell if mangling is required in
the first place.  Come to think of it, anonymous namespaces would make
life pretty difficult, too.

It's amusing that you raise the issue right now, because several of us
are arguing about this off-list: I'd rather not deal with the fact
that sometimes we demangle and sometimes (partial symbols) we don't,
but other people say that demangling partial symbols would be too
expensive.  Daniel Jacobowitz might be coming up with a nice
compromise that allows us to share data when appropriate.  I don't see
how to reasonably avoid doing quite a lot of demangling (at the very
least demangling all minimal symbols when loading them in), but maybe
it's possible if you folks are doing it.

David Carlton
carlton@math.stanford.edu


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