From b6216af2696e8ff479c15b8430c7caf5acd92cab Mon Sep 17 00:00:00 2001 From: Per Bothner Date: Sat, 15 May 1993 00:25:03 +0000 Subject: [PATCH] * Makefile.in (underscore.c): Automatically generate (using nm) a file with the variable prepends_underscore. * Makefile.in (c++filt): Link underscore.o with cplus-dem.o so that initial underscores get removed iff appropriate. * binutils.texi: Preliminary documentation for c++filt. * Makefile.in, binutils.texi: Set to version 2.2. --- binutils/binutils.texi | 37 +++++++++++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/binutils/binutils.texi b/binutils/binutils.texi index febb5144a47..6d2e802a84d 100644 --- a/binutils/binutils.texi +++ b/binutils/binutils.texi @@ -52,7 +52,7 @@ into another language, under the above conditions for modified versions. @titlepage @finalout @title The GNU Binary Utilities -@subtitle Version 2.01 +@subtitle Version 2.2 @sp 1 @subtitle April 1993 @author Roland H. Pesch @@ -87,7 +87,7 @@ into another language, under the above conditions for modified versions. @cindex version This brief manual contains preliminary documentation for the GNU binary -utilities (collectively version 2.1): +utilities (collectively version 2.2): @iftex @table @code @@ -123,6 +123,7 @@ Discard symbols * ranlib:: Generate index to archive contents * size:: List section sizes and total size * strip:: Discard symbols +* c++filt:: Filter to demangle encoded C++ symbols * Index:: @end menu @@ -965,7 +966,7 @@ on listing available formats. Display the version number of @code{size}. @end table -@node strip, Index, size, Top +@node strip, c++filt, size, Top @chapter strip @kindex strip @@ -1035,7 +1036,35 @@ Verbose output: list all object files modified. In the case of archives, @samp{strip -v} lists all members of the archive. @end table -@node Index, , strip, Top +@node c++filt, Index, strip, Top +@chapter c++filt + +@kindex c++filt +@cindex demangling C++ symbols + +The C++ language provides function overloading, which means that +the user 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 @code{c++filt} is used 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. + +A typical use of @code{c++filt} is to pipe the output of @code{nm} +though it. + +Note that on some systems, both the C and C++ compilers prepend +an underscore in front of every name. (I.e. the C name @code{foo} +gets the low-level name @code{_foo}.) On such systems, @code{c++filt} +will remove any initial underscore of a potential label. + +@node Index, , c++filt, Top @unnumbered Index @printindex cp -- 2.30.2