* Makefile.in (clean): Remove bfd.h and stmp-bfd.h.
[binutils-gdb.git] / binutils / c++filt.1
1 .\" Copyright (c) 1991 Free Software Foundation
2 .\" See section COPYING for conditions for redistribution
3 .TH c++filt 1 "June 1993" "cygnus support" "GNU Development Tools"
4 .de BP
5 .sp
6 .ti \-.2i
7 \(**
8 ..
9
10 .SH NAME
11 c++filt\(em\&demangle C++ symbols
12
13 .SH SYNOPSIS
14 .hy 0
15 .na
16 .TP
17 .B c++filt
18 .RB "[\|" \-_ | \-\-strip-underscores "\|]"
19 .RB "[\|" "\-s {gnu,lucid,arm} " | " \-\-format={gnu,lucid,arm}" "\|]"
20 .RB "[\|" \-\-help "\|]"
21 .RB "[\|" \-\-version "\|]"
22 .RB "[\|" arg "...\|]"
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 c++filt
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 A typical use of
41 .B c++filt
42 is to pipe the output of
43 .B nm
44 through it, using
45 .B c++filt
46 as a filter:
47 .br
48 .RS
49 .B nm \fIobjfile\fB | c++filt
50 .RE
51 .PP
52 You can also use
53 .B c++filt
54 to decipher individual symbols by specifying these symbols on the
55 command line.
56 .PP
57 All results are printed on the standard output.
58 .SH OPTIONS
59 .TP
60 .B \-_
61 .TP
62 .B \-\-strip\-underscores
63 On some systems, both the C and C++ compilers put an
64 underscore in front of every name. For example, the C name
65 .B foo
66 gets the low-level name
67 .BR _foo .
68 This option removes the leading underscore.
69
70 .TP
71 .B "\-s {gnu,lucid,arm}"
72 .TP
73 .B \-\-format={gnu,lucid,arm}
74 GNU
75 .B nm
76 can decode three different methods of mangling, used by different C++
77 compilers. This option selects which method it uses: the one used by
78 the GNU compiler, the one used by the Lucid compiler, or the one
79 specified by the C++ Annotated Reference Manual. The default is the
80 GNU style.
81
82 .TP
83 .B \-\-help
84 Print a summary of the options to
85 .B c++filt
86 and exit.
87
88 .TP
89 .B \-\-version
90 Print the version number of
91 .B c++filt
92 and exit.
93
94 .SH "SEE ALSO"
95 .RB "`\|" binutils "\|'"
96 entry in
97 .B
98 info\c
99 \&;
100 .I
101 The GNU Binary Utilities\c
102 \&, Roland H. Pesch (June 1993).
103
104 .SH COPYING
105 Copyright (c) 1993 Free Software Foundation, Inc.
106 .PP
107 Permission is granted to make and distribute verbatim copies of
108 this manual provided the copyright notice and this permission notice
109 are preserved on all copies.
110 .PP
111 Permission is granted to copy and distribute modified versions of this
112 manual under the conditions for verbatim copying, provided that the
113 entire resulting derived work is distributed under the terms of a
114 permission notice identical to this one.
115 .PP
116 Permission is granted to copy and distribute translations of this
117 manual into another language, under the above conditions for modified
118 versions, except that this permission notice may be included in
119 translations approved by the Free Software Foundation instead of in
120 the original English.