diff options
Diffstat (limited to 'binutils/binutils.texi')
-rw-r--r-- | binutils/binutils.texi | 39 |
1 files changed, 25 insertions, 14 deletions
diff --git a/binutils/binutils.texi b/binutils/binutils.texi index f8f7845..22af2de 100644 --- a/binutils/binutils.texi +++ b/binutils/binutils.texi @@ -1102,22 +1102,33 @@ archives, @samp{strip -v} lists all members of the archive. @kindex c++filt @cindex demangling C++ symbols -The C++ language provides function overloading, which means that -you can write many function with the same name (but taking -different kinds of parameters). So that the linker can keep these -overloaded functions from clashing, all C++ function names are -encoded (``mangled'') into a funny-looking low-level assembly label. -The @code{c++filt} program does the inverse mapping: It decodes -(``demangles'') low-level names into user-level names. - -When you use @code{c++filt} as a filter (which is usually the case), -it reads from standard input. 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 will replace the low-level name in the output. +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 (in some circles this is described as +@dfn{mangling}). The @code{c++filt} program does the inverse mapping: it +decodes (@dfn{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. A typical use of @code{c++filt} is to pipe the output of @code{nm} -though it. +though it, using @code{c++filt} as a filter: + +@example +nm @var{objfile} | c++filt +@end example + +You can also use @code{c++filt} to decipher individual symbols: + +@example +c++filt @var{symbol} +@end example + +All results are printed on the standard output. Note that on some systems, both the C and C++ compilers put an underscore in front of every name. (I.e. the C name @code{foo} gets the |