EB: In need of demangling a C++ symbol under windows, and failed to googled such tool, I have successfully
ffidled
UnDecorateSymbolName() function.
The signature of this function, found in
imagehlp.dll, is:
DWORD UnDecorateSymbolName(
IN LPSTR DecoratedName,
OUT LPSTR UnDecoratedName,
IN DWORD UndecoratedLength,
IN DWORD Flags
);
The function take a string buffer for the undecorated name in output. I don't know if this is the good way to do this. I reserve a string of 1024 chars for it.
load ffidl05.dll
ffidl::callout \
dll_UnDecorateSymbolName {pointer-utf8 pointer-utf8 int int} int \
[ffidl::symbol "imagehlp.dll" UnDecorateSymbolName]
proc demangle {symbol} {
set ret [string repeat { } 1024]
dll_UnDecorateSymbolName $symbol $ret 1024 0
set ret
}