aboutsummaryrefslogtreecommitdiff
path: root/gprof
diff options
context:
space:
mode:
Diffstat (limited to 'gprof')
-rw-r--r--gprof/ChangeLog13
-rw-r--r--gprof/gprof.c16
-rw-r--r--gprof/gprof.h1
-rw-r--r--gprof/gprof.texi6
-rw-r--r--gprof/utils.c9
5 files changed, 42 insertions, 3 deletions
diff --git a/gprof/ChangeLog b/gprof/ChangeLog
index 2e0fe3f..0139b1d 100644
--- a/gprof/ChangeLog
+++ b/gprof/ChangeLog
@@ -1,3 +1,16 @@
+Tue Mar 24 19:00:11 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ Add --demangle and --no-demangle options:
+ * gprof.h (demangle): Declare.
+ * gprof.c (demangle): New global variable.
+ (OPTION_DEMANGLE, OPTION_NO_DEMANGLE): Define.
+ (long_options): Add "demangle" and "no-demangle".
+ (usage): Mention --demangle and --no-demangle.
+ (main): Handle OPTION_DEMANGLE and OPTION_NO_DEMANGLE.
+ * utils.c (print_name_only): Only demangle symbol name if demangle
+ is true.
+ * gprof.texi (Output Options): Document new options.
+
Fri Mar 20 19:21:56 1998 Ian Lance Taylor <ian@cygnus.com>
* Makefile.in: Rebuild with automake 1.2e.
diff --git a/gprof/gprof.c b/gprof/gprof.c
index 5cc08ce..c1abf38 100644
--- a/gprof/gprof.c
+++ b/gprof/gprof.c
@@ -42,6 +42,7 @@ int debug_level = 0;
int output_style = 0;
int output_width = 80;
bool bsd_style_output = FALSE;
+bool demangle = TRUE;
bool discard_underscores = TRUE;
bool ignore_direct_calls = FALSE;
bool ignore_static_funcs = FALSE;
@@ -73,6 +74,12 @@ static char *default_excluded_list[] =
0
};
+/* Codes used for the long options with no short synonyms. 150 isn't
+ special; it's just an arbitrary non-ASCII char value. */
+
+#define OPTION_DEMANGLE (150)
+#define OPTION_NO_DEMANGLE (OPTION_DEMANGLE + 1)
+
static struct option long_options[] =
{
{"line", no_argument, 0, 'l'},
@@ -97,6 +104,8 @@ static struct option long_options[] =
/* various options to affect output: */
{"all-lines", no_argument, 0, 'x'},
+ {"demangle", no_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'},
{"min-count", required_argument, 0, 'm'},
@@ -144,6 +153,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\
[image-file] [profile-file...]\n",
whoami);
if (status == 0)
@@ -404,6 +414,12 @@ This program is free software. This program has absolutely no warranty.\n");
}
user_specified |= STYLE_ANNOTATED_SOURCE;
break;
+ case OPTION_DEMANGLE:
+ demangle = TRUE;
+ break;
+ case OPTION_NO_DEMANGLE:
+ demangle = FALSE;
+ break;
default:
usage (stderr, 1);
}
diff --git a/gprof/gprof.h b/gprof/gprof.h
index 20eb108..92e6c86 100644
--- a/gprof/gprof.h
+++ b/gprof/gprof.h
@@ -112,6 +112,7 @@ extern int debug_level; /* debug level */
extern int output_style;
extern int output_width; /* controls column width in index */
extern bool bsd_style_output; /* as opposed to FSF style output */
+extern bool demangle; /* demangle symbol names? */
extern bool discard_underscores; /* discard leading underscores? */
extern bool ignore_direct_calls; /* don't count direct calls */
extern bool ignore_static_funcs; /* suppress static functions */
diff --git a/gprof/gprof.texi b/gprof/gprof.texi
index 4c22c9a..6a61fc0 100644
--- a/gprof/gprof.texi
+++ b/gprof/gprof.texi
@@ -477,6 +477,12 @@ 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
+@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.
+
@end table
@node Analysis Options,Miscellaneous Options,Output Options,Invoking
diff --git a/gprof/utils.c b/gprof/utils.c
index 2402fe4..a0e69b1 100644
--- a/gprof/utils.c
+++ b/gprof/utils.c
@@ -42,10 +42,13 @@ DEFUN (print_name_only, (self), Sym * self)
{
name++;
}
- demangled = cplus_demangle (name, DMGL_ANSI | DMGL_PARAMS);
- if (demangled)
+ if (demangle)
{
- name = demangled;
+ demangled = cplus_demangle (name, DMGL_ANSI | DMGL_PARAMS);
+ if (demangled)
+ {
+ name = demangled;
+ }
}
}
printf ("%s", name);