cpp_demangle icon indicating copy to clipboard operation
cpp_demangle copied to clipboard

Failed demangling with 5.1 while c++filt succeeds

Open rockdaboot opened this issue 1 month ago • 3 comments

From KDE's konsole, mangled symbol is

_ZSt4swapIN7Konsole12LinePropertyEENSt9enable_ifIXsrSt6__and_IJSt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS6_ESt18is_move_assignableIS6_EEE5valueEvE4typeERS6_SG_

c++filt (version 2.45) prints

std::enable_if<std::__and_<std::__not_<std::__is_tuple_like<Konsole::LineProperty> >, std::is_move_constructible<Konsole::LineProperty>, std::is_move_assignable<Konsole::LineProperty> >::value, void>::type std::swap<Konsole::LineProperty>(Konsole::LineProperty&, Konsole::LineProperty&)

Tried with a recursion limit of 1024, but demangling still fails.

rockdaboot avatar Nov 18 '25 12:11 rockdaboot

This is the same issue as https://github.com/gimli-rs/cpp_demangle/issues/302#issuecomment-3418942896 and https://github.com/gimli-rs/cpp_demangle/issues/302#issuecomment-3419937451

So far we've chosen not to act here because gcc and LLVM disagree and the way forward is not clear.

khuey avatar Nov 18 '25 14:11 khuey

TY for the pointers, @khuey. Hard to believe the upstream issue is from 2015 🥹

Did you think about an option for gcc style demangling? That way applications could first try without and if it doesn't demangle, then try with the gcc option. Because even if the problem is solved upstream, we will see the "broken" symbols forever. It's not an option to show the mangled symbols to any end-user (or ask an AI to understand it) - they will always complain or silently think the application creators are incompetent.

rockdaboot avatar Nov 18 '25 15:11 rockdaboot

It's not something I'm going to do myself but I would take a PR for it.

khuey avatar Nov 28 '25 17:11 khuey