
Chapter 10.
c++filt
c++filt [-_|--strip-underscores]
[-j|--java]
[-n|--no-strip-underscores]
[-p|--no-params]
[-s format|--format=format]
[--help] [--version] [symbol...]
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
1
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.
-_
-strip-underscores
On some systems, both the C and C++ compilers put an underscore in front of every name.
For example, the C name foo gets the low-level name _foo. This option removes the initial
underscore. Whether c++filt removes the underscore by default is target dependent.
-j
-java
Prints demangled names using Java syntax. The default is to use C++ syntax.
-n
-no-strip-underscores
Do not remove the initial underscore.
-p
-no-params
When demangling the name of a function, do not display the types of the function’s parameters.
1. MS-DOS does not allow + characters in file names, so on MS-DOS this program is named cxxfilt.
Kommentare zu diesen Handbüchern