// - Rust "legacy" mangled symbols start with "_Z".
// - Rust "v0" mangled symbols start with "_R".
// - D programming language mangled symbols start with "_D".
- // XXX: the Java/Rust/Ada demangling here probably doesn't work. See
- // https://bugs.kde.org/show_bug.cgi?id=445235 for details.
+ // - Ada mangled symbols depend on the entity the symbol represents.
+ // See ada_demangle for details.
if (do_cxx_demangling && VG_(clo_demangle)
&& orig != NULL && (VG_(lang_is_ada) ||
(orig[0] == '_' && (orig[1] == 'Z' || orig[1] == 'R' || orig[1] == 'D')))) {
<option><![CDATA[--demangle=<yes|no> [default: yes] ]]></option>
</term>
<listitem>
- <para>Enable/disable automatic demangling (decoding) of C++ names.
+ <para>Enable/disable automatic demangling (decoding) of C++, D,
+ Rust, Java, Ada names.
Enabled by default. When enabled, Valgrind will attempt to
- translate encoded C++ names back to something approaching the
- original. The demangler handles symbols mangled by g++ versions
+ translate encoded names in the listed languages back to something
+ approaching the original.
+ Note that the callgrind tool always disables Ada demangling in order
+ to differentiate overloaded functions and procedures in the callgraph.
+ The demangler handles symbols mangled by g++ versions
2.X, 3.X and 4.X.</para>
<para>An important fact about demangling is that function names