MSVC name demangler cannot demangle COM ptr mangled names
Opened this issue · 3 comments
When using COM pointers, MSVC emits pretty long mangled names.
Example:
?_Release@?$_com_ptr_t@V?$_com_IIID@UIPiggyback@@$1?IID_IPiggyback@@3U_GUID@@B@@@@AAEXXZ
per http://demangler.com/ results in
struct _GUID const _IPiggyback::_com_ptr_t::_Release
Objdiff fails to demangle these and leaves them as-is.
This is an issue with the upstream demangler crate msvc-demangler, and should be filed there.
This is an issue with the upstream demangler crate
msvc-demangler, and should be filed there.
Filed. mstange/msvc-demangler-rust#79
Though something tells me it may not get resolved...
Would it be infeasible to attempt to use native de-mangling utilities when possible to avoid this? UnDecorateSymbolName function (dbghelp.h) in this case.
Unfortunately calling out to the system library is pretty difficult (and not cross-platform).
https://github.com/Ryan-rsm-McKenzie/undname-rs claims it has better accuracy than msvc-demangler, may be worth checking out.
I’ve made a PR to msvc-demangler in the past and it was merged pretty quickly, so adding support for COM names is always an option.