summaryrefslogtreecommitdiff
path: root/gprof
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2000-07-20 18:02:56 +0000
committerNick Clifton <nickc@redhat.com>2000-07-20 18:02:56 +0000
commitf2e48355663bacf76e75fc39da1d80f6a100f13a (patch)
tree94f24ebb91f32a73b46cd18cdb4da767f1233dbc /gprof
parentd2b7273bea9ba04c8de4d71ffb6ae4129b73e3d5 (diff)
downloadbinutils-redhat-f2e48355663bacf76e75fc39da1d80f6a100f13a.tar.gz
Add optional style argument to --demangle switch.
Diffstat (limited to 'gprof')
-rw-r--r--gprof/ChangeLog5
-rw-r--r--gprof/gprof.c20
-rw-r--r--gprof/gprof.texi8
3 files changed, 28 insertions, 5 deletions
diff --git a/gprof/ChangeLog b/gprof/ChangeLog
index 7b51f9c40a..43653e5c87 100644
--- a/gprof/ChangeLog
+++ b/gprof/ChangeLog
@@ -1,3 +1,8 @@
+2000-07-05 Kenneth Block <krblock@computer.org>
+
+ * gprof/gprof.c: Add optional style to demangle switch
+ * gprof/gprof.texi: Document optional style to demangle switch.
+
2000-06-05 DJ Delorie <dj@redhat.com>
* MAINTAINERS: new
diff --git a/gprof/gprof.c b/gprof/gprof.c
index 5e47a97cbd..2ceafd50f4 100644
--- a/gprof/gprof.c
+++ b/gprof/gprof.c
@@ -29,6 +29,7 @@
#include "hist.h"
#include "source.h"
#include "sym_ids.h"
+#include "demangle.h"
const char *whoami;
const char *function_mapping_file;
@@ -104,7 +105,7 @@ static struct option long_options[] =
/* various options to affect output: */
{"all-lines", no_argument, 0, 'x'},
- {"demangle", no_argument, 0, OPTION_DEMANGLE},
+ {"demangle", optional_argument, 0, OPTION_DEMANGLE},
{"no-demangle", no_argument, 0, OPTION_NO_DEMANGLE},
{"directory-path", required_argument, 0, 'I'},
{"display-unused-functions", no_argument, 0, 'z'},
@@ -153,7 +154,7 @@ Usage: %s [-[abcDhilLsTvwxyz]] [-[ACeEfFJnNOpPqQZ][name]] [-I dirs]\n\
[--no-static] [--print-path] [--separate-files]\n\
[--static-call-graph] [--sum] [--table-length=len] [--traditional]\n\
[--version] [--width=n] [--ignore-non-functions]\n\
- [--demangle] [--no-demangle]\n\
+ [--demangle[=STYLE]] [--no-demangle]\n\
[image-file] [profile-file...]\n"),
whoami);
if (status == 0)
@@ -425,6 +426,21 @@ This program is free software. This program has absolutely no warranty.\n"));
break;
case OPTION_DEMANGLE:
demangle = TRUE;
+ if (optarg != NULL)
+ {
+ enum demangling_styles style;
+
+ style = cplus_demangle_name_to_style (optarg);
+ if (style == unknown_demangling)
+ {
+ fprintf (stderr,
+ _("%s: unknown demangling style `%s'\n"),
+ whoami, optarg);
+ xexit (1);
+ }
+
+ cplus_demangle_set_style (style);
+ }
break;
case OPTION_NO_DEMANGLE:
demangle = FALSE;
diff --git a/gprof/gprof.texi b/gprof/gprof.texi
index 6e1cfd0199..4db07a149b 100644
--- a/gprof/gprof.texi
+++ b/gprof/gprof.texi
@@ -478,12 +478,14 @@ are annotated. If this option is specified, every line in
a basic-block is annotated by repeating the annotation for the
first line. This behavior is similar to @code{tcov}'s @samp{-a}.
-@item --demangle
+@item --demangle[=@var{style}]
@itemx --no-demangle
These options control whether C++ symbol names should be demangled when
printing output. The default is to demangle symbols. The
-@code{--no-demangle} option may be used to turn off demangling.
-
+@code{--no-demangle} option may be used to turn off demangling. Different
+compilers have different mangling styles. The optional demangling style
+argument can be used to choose an appropriate demangling style for your
+compiler.
@end table
@node Analysis Options,Miscellaneous Options,Output Options,Invoking