From: Jeffrey Osier Date: Fri, 28 May 1993 00:00:59 +0000 (+0000) Subject: * biutils.texi: revised c++filt chapter X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=6c69b6bde1422949d3825d9c0cb286c07c59984b;p=binutils-gdb.git * biutils.texi: revised c++filt chapter --- diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 1c55ee8ae77..7071e4e6592 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,7 @@ +Thu May 27 16:58:31 1993 Jeffrey Osier (jeffrey@cygnus.com) + + * biutils.texi: revised c++filt chapter + Wed May 26 17:24:17 1993 Ian Lance Taylor (ian@cygnus.com) * Makefile.in (FLAGS_TO_PASS): Pass down CC and CFLAGS. diff --git a/binutils/binutils.texi b/binutils/binutils.texi index f8f7845f5c5..22af2de2ea8 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