Caution: This version of this document is no longer maintained. For the latest documentation, see


Demangle C++ and Java symbols


c++filt [options] [symbol…]

Runs on:

QNX Neutrino, Linux, Microsoft Windows


See the GNU website at


The C++ and Java languages provides function overloading, which means that you can write many functions with the same name (providing each takes parameters of different types). All C++ and Java function names are encoded into a low-level assembly label (this process is known as mangling). The c++filt program does the inverse mapping: it decodes (demangles) low-level names into user-level names so that the linker can keep these overloaded functions from clashing.

For detailed documentation, see the GNU website at

Contributing author: