A new debugger for Linux - would it work for D?

Thomas Kuehne thomas-dloop at kuehne.cn
Thu Nov 23 12:25:30 PST 2006


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Don Clugston schrieb am 2006-11-23:
> Walter Bright wrote:
>> Don Clugston wrote:
>>> Thomas Kühne wrote:
>>>> Cristian Vlasceanu wrote:
>>>>> D has a demangling scheme that is not compatible with C++?
>>>>> Then that's another area that needs work in the debugger.
>>>>
>>>> see attachment
>>>>
>>>> Thomas
>>> Wow, it's interesting to compare yours with my compile-time demangler. 
>>> They are both about the same number of lines of code (and both seem 
>>> more comprehensive than the one in Phobos).
>> 
>> Would you two care to take the best of both, and we can replace the 
>> Phobos one?
>
> I think there a couple of issues in the mangling algorithm which need to 
> be addressed first.

<snip>

> - Items that use D mangling but don't have D linkage. I suggest changing 
> those cases to use "0" then the linkage type ('W' for Windows, 'U', for 
> C, etc, same as for delegate/function pointers), then the length.
> So instead of
> main3abci
>
> it would be
> 0U4main3abci

I dislike unnecessary special cases:
#
# module wood;
# 
# class Tree{
#    static this(){
#    }
# 
#    ~this(){
#    }
# }
# 
# extern(C) void outer(){
#    extern(Windows) int middle(){
#       void inner(){
#       }
#       return 0;
#    }
# }
# 

DMD-0.174 generates the following symbols
(special cases are marked by an asterisk):
> _Class_4wood4Tree *
> _D4wood4Tree11_staticCtorFZv
> _D4wood4Tree5_dtorFZv
> _init_4wood4Tree *
> _modctor_4wood *
> outer
> outer6middleWZi *
> outer6middleWZi5innerFZv *
> _vtbl_4wood4Tree *

I propose the following mangling:
> _D4wood4Tree9__Class__Pv
> _D4wood4Tree12__staticCtorFZv
> _D4wood4Tree6__dtorFZv
> _D4wood4Tree8__init__Pv
> _D4wood11__modctor__FZv
> outer
> _D4wood5outerFZv6middleWZi
> _D4wood5outerFZv6middleWZi5innerFZv
> _D4wood4Tree8__vtbl__Av

There are no special cases(identifiers starting with two underscores are
reserved), thus no need for the demangler to know anything about the RT's
internals.

Thomas


-----BEGIN PGP SIGNATURE-----

iD8DBQFFZhBmLK5blCcjpWoRAhvHAJ48XOpVGhQrtWqzUlnnSwWYa5ZctwCgiJ5g
DU12Ih86ucKYv9td8e3iSJ0=
=0YBV
-----END PGP SIGNATURE-----



More information about the Digitalmars-d-announce mailing list