This is the mail archive of the gdb-patches@sourceware.org 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: pr9065 patch (the typeid thing)


On 03/11/10 16:32, Tom Tromey wrote:

Chris> Another difference is that the real typeid returns mangled names, Chris> leaving it to the user to demangle. This strikes me as a pain, so I Chris> just provide the demangled names.

It should be compatible. GDB has a demangle command for this purpose.


I've done a lot of re-write on this patch over the last week or so, but the requirement for returning mangled names turns out to be a bit of a stopper: mangled names for built-in types don't exist at all in gdb, and mangled names for symbols are only occasionally available.


My first thought was to clone the gcc mangler; my second thought was that's not really the best solution. I don't know if it's intended for gdb to be able to debug stuff compiled by anything other than gcc, but since every compiler uses its own mangling algo, forcing the use of the gcc mangling algo certainly wouldn't be compatible with that. Also, though I don't know how likely it is, it's not impossible that the gcc algo could change.

At least one of the probable reasons mangled symbol names aren't available seems to be that they're not emitted in the DWARF. In my testcase, of the dozen or so vars and fcns I use, the mangled name of only one of them appears in the DWARF (tagged with DW_AT_MIPS_linkage_name--why just that one symbol and nothing else, I haven't a clue), so my guess is that if gcc could somehow be convinced to emit the mangled names of all symbols and primitive types, things would be cool, but I don't know how hard it would be to get gcc (i.e., its maintainers) to do that.. (I couldn't find a gcc option that made that happen...)

Chris


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