X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gprof%2Fgprof.c;h=2ceafd50f416cdae1a9cf8be3f10ef21e7ad2dad;hb=63fe103861d920a94a6c78c51ce3b0bcf0722af6;hp=cb904870e5084bf369487b47d13e05e742ed89b4;hpb=252b5132c753830d5fd56823373aed85f2a0db63;p=deliverable%2Fbinutils-gdb.git diff --git a/gprof/gprof.c b/gprof/gprof.c index cb904870e5..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; @@ -56,8 +57,8 @@ File_Format file_format = FF_AUTO; bool first_output = TRUE; char copyright[] = - N_("@(#) Copyright (c) 1983 Regents of the University of California.\n\ - All rights reserved.\n"); + "@(#) Copyright (c) 1983 Regents of the University of California.\n\ + All rights reserved.\n"; static char *gmon_name = GMONNAME; /* profile filename */ @@ -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,11 +154,11 @@ 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) - fprintf (stream, _("Report bugs to bug-gnu-utils@gnu.org\n")); + fprintf (stream, _("Report bugs to %s\n"), REPORT_BUGS_TO); done (status); } @@ -179,7 +180,7 @@ DEFUN (main, (argc, argv), int argc AND char **argv) xmalloc_set_program_name (whoami); while ((ch = getopt_long (argc, argv, - "aA::bBcCdD::e:E:f:F:hiI:J::k:lLm:n::N::O:p::P::q::Q::st:Tvw:xyzZ::", + "aA::bBcCd::De:E:f:F:hiI:J::k:lLm:n::N::O:p::P::q::Q::st:Tvw:xyzZ::", long_options, 0)) != EOF) { @@ -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;