Who has a std.demangle that works with 0.177?

Lutger lutger.blijdestijn at gmail.com
Thu Dec 21 07:08:42 PST 2006


Lionello Lunesu wrote:
> I'm writing a little program that generates a .di file from obj/lib.
> 
> Needless to say, it makes heavy use of std.demangle, but that module was 
> not updated for the changed name mangling in 0.177. My program works 
> 'fine' for 0.176, but not for 0.177 (see results at end of mail).
> 
> I saw some bugzilla entries related to the name mangling, but they are 
> all pre-0.176, so not related to my problem.
> 
> Can anybody tell me what needs to change in std.demangle? A patch perhaps?
> 
> Thanks,
> 
> L.

Try this:

insert the following at around line 200:
     case 'M':
     p = parseType();
     goto L1;

This will take care of types that need a this pointer.

Then for nested types do as in that patch, change the following in 
std.demangle (line 463-465) from:

     if (ni != name.length)
         goto Lnot;
     return result;

to:

     while(ni < name.length)
     {
         result ~= " . " ~ parseType(parseQualifiedName());
     }

     if (ni != name.length)
         goto Lnot;
     return result;

I believe that's it, correct me if I'm wrong.





More information about the Digitalmars-d mailing list