2000-10-31 Philip Blundell <philb@gnu.org>
[binutils.git] / binutils / cxxfilt.man
bloba4d5d45106b642ea5d4cfa44d148f382ce54870d
1 .\" Copyright (c) 1991 Free Software Foundation
2 .\" See section COPYING for conditions for redistribution
3 .TH @PROGRAM@ 1 "June 1993" "cygnus support" "GNU Development Tools"
4 .de BP
5 .sp
6 .ti \-.2i
7 \(**
8 ..
10 .SH NAME
11 @PROGRAM@ \- demangle C++ symbols
13 .SH SYNOPSIS
14 .hy 0
15 .na
16 .TP
17 .B @PROGRAM@
18 .RB "[\|" \-_ | \-\-strip-underscores "\|]"
19 .RB "[\|" "\-s {gnu,lucid,arm} " | " \-\-format={gnu,lucid,arm}" "\|]"
20 .RB "[\|" \-\-help "\|]"
21 .RB "[\|" \-\-version "\|]"
22 .RB "[\|" symbol "...\|]"
23 .SH DESCRIPTION
24 The C++ language provides function overloading, which means that you can
25 write many functions with the same name (providing each takes parameters
26 of different types).  All C++ function names are encoded into a
27 low-level assembly label (this process is known as
28 .I mangling\c
29 ).  The 
30 .B @PROGRAM@
31 program does the inverse mapping: it decodes (\fIdemangles\fR)
32 low-level names into user-level names so that the linker can keep
33 these overloaded functions from clashing.
34 .PP
35 Every alphanumeric word (consisting of letters, digits, underscores,
36 dollars, or periods) seen in the input is a potential label.  If the
37 label decodes into a C++ name, the C++ name replaces the low-level
38 name in the output.
39 .PP
40 You can use
41 .B @PROGRAM@
42 to decipher individual symbols by specifying these symbols on the
43 command line.
44 .PP
45 If no
46 .B symbol
47 arguments are given,
48 .B @PROGRAM@
49 reads symbol names from the standard input and writes the demangled
50 names to the standard output.  All results are printed on the standard
51 output.
52 .SH OPTIONS
53 .TP
54 .B \-_
55 .TP
56 .B \-\-strip\-underscores
57 On some systems, both the C and C++ compilers put an
58 underscore in front of every name.  For example, the C name 
59 .B foo
60 gets the low-level name 
61 .BR _foo .
62 This option removes the leading underscore.
64 .TP
65 .B "\-s {gnu,lucid,arm}"
66 .TP
67 .B \-\-format={gnu,lucid,arm}
68 GNU
69 .B nm
70 can decode three different methods of mangling, used by different C++
71 compilers.  This option selects which method it uses: the one used by
72 the GNU compiler, the one used by the Lucid compiler, or the one
73 specified by the C++ Annotated Reference Manual.  The default is the
74 GNU style.
76 .TP
77 .B \-\-help
78 Print a summary of the options to
79 .B @PROGRAM@
80 and exit.
82 .TP
83 .B \-\-version
84 Print the version number of
85 .B @PROGRAM@
86 and exit.
88 .SH "SEE ALSO"
89 .RB "`\|" binutils "\|'" 
90 entry in 
92 info\c
93 \&; 
95 The GNU Binary Utilities\c
96 \&, Roland H. Pesch (June 1993).
98 .SH COPYING
99 Copyright (c) 1993 Free Software Foundation, Inc.
101 Permission is granted to make and distribute verbatim copies of
102 this manual provided the copyright notice and this permission notice
103 are preserved on all copies.
105 Permission is granted to copy and distribute modified versions of this
106 manual under the conditions for verbatim copying, provided that the
107 entire resulting derived work is distributed under the terms of a
108 permission notice identical to this one.
110 Permission is granted to copy and distribute translations of this
111 manual into another language, under the above conditions for modified
112 versions, except that this permission notice may be included in
113 translations approved by the Free Software Foundation instead of in
114 the original English.