On Wednesday, 22 April 2015 at 01:46:57 UTC, Daniel Murphy wrote:
Until fairly recently .mangleof was completely broken for eg extern(C++) mangling on windows. I'm not surprised there are still bugs there. Ideally .mangleof will give exactly the string that ends up in the object file.

This is still broken
https://issues.dlang.org/show_bug.cgi?id=14178

I'm actually recoding the name mangling for linux/osx right now because the current implementation cannot work correctly with compression/substitutions (see http://mentorembedded.github.io/cxx-abi/abi.html#mangling-compression)

This is really tricky since substitution doesn't work the same when mangling template parameters or arguments. I'm making progress but there's a lot of gotchas. Especially if you start mixing namespace nesting, template instantiation and STL mangling substitutions.

You can have a look at the incomplete tests I have :
https://raw.githubusercontent.com/gchatelet/dmd/new_cpp_mangle/test/compilable/cppmangle.d

For instance this one is already pretty hard to understand :
_ZNK6nested21NestedTemplatedStructIiE23templatedMemberFunctionINS_12NestedStructEEEPT_PPKS4_
You can check the result with http://demangler.com/

Getting this right is a prerequisite to C++/STL integration.

Reply via email to