Go to the previous, next section.


	[ -n | --no-strip-underscores ]
        [ -s format | --format=format ]

The C++ language provides function overloading, which means that you can write many functions with the same name (providing each takes parameters of different types). All C++ 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.

Every alphanumeric word (consisting of letters, digits, underscores, dollars, or periods) seen in the input is a potential label. If the label decodes into a C++ name, the C++ name replaces the low-level name in the output.

You can use c++filt to decipher individual symbols:

c++filt symbol

If no symbol arguments are given, c++filt reads symbol names from the standard input and writes the demangled names to the standard output. All results are printed on the standard output.


Do not remove the initial underscore.

-s format
GNU nm can decode three different methods of mangling, used by different C++ compilers. The argument to this option selects which method it uses:

the one used by the GNU compiler (the default method)
the one used by the Lucid compiler
the one specified by the C++ Annotated Reference Manual

  • --help Print a summary of the options to c++filt and exit.

  • --version Print the version number of c++filt and exit.

    c++filt symbol

    may in a future release become

    c++filt option symbol

    Go to the previous, next section.