* core.c (core_sym_class): Ignore symbols without BSF_FUNCTION

set if ignore_non_function is set.
        * gprof.h (ignore_non_functions): Declare.
        * gprof.c (ignore_non_functions): Define.
        (long_options): Add "ignore-non-functions".
        (usage): Add new options.
        (main): Recognize "-D" and "--ignore-non-functions" option.
So we can get more accurate information on Solaris, HPUX and other
systems that can uniquely identify function symbols.
This commit is contained in:
Jeff Law 1995-12-25 04:32:29 +00:00
parent 7920c1d195
commit 32843f948c
5 changed files with 32 additions and 3 deletions

View file

@ -1,3 +1,13 @@
Sun Dec 24 21:32:27 1995 Jeffrey A Law (law@cygnus.com)
* core.c (core_sym_class): Ignore symbols without BSF_FUNCTION
set if ignore_non_function is set.
* gprof.h (ignore_non_functions): Declare.
* gprof.c (ignore_non_functions): Define.
(long_options): Add "ignore-non-functions".
(usage): Add new options.
(main): Recognize "-D" and "--ignore-non-functions" option.
Tue Nov 21 13:24:39 1995 Ken Raeburn <raeburn@cygnus.com>
* Makefile.in (.m.c): Strip out directory name from function

View file

@ -179,6 +179,12 @@ DEFUN (core_sym_class, (sym), asymbol * sym)
{
return 0;
}
/* If the object file supports marking of function symbols, then we can
zap anything that doesn't have BSF_FUNCTION set. */
if (ignore_non_functions && (sym->flags & BSF_FUNCTION) == 0)
return 0;
return 't'; /* it's a static text symbol */
}

View file

@ -50,6 +50,7 @@ bool ignore_zeros = TRUE;
bool line_granularity = FALSE;
bool print_descriptions = TRUE;
bool print_path = FALSE;
bool ignore_non_functions = FALSE;
File_Format file_format = FF_AUTO;
bool first_output = TRUE;
@ -76,6 +77,7 @@ static struct option long_options[] =
{
{"line", no_argument, 0, 'l'},
{"no-static", no_argument, 0, 'a'},
{"ignore-non-functions", no_argument, 0, 'D'},
/* output styles: */
@ -129,7 +131,7 @@ static void
DEFUN (usage, (stream, status), FILE * stream AND int status)
{
fprintf (stream, "\
Usage: %s [-[abchilLsTvwxyz]] [-[ACeEfFJnNOpPqQZ][name]] [-I dirs]\n\
Usage: %s [-[abcDhilLsTvwxyz]] [-[ACeEfFJnNOpPqQZ][name]] [-I dirs]\n\
[-d[num]] [-k from/to] [-m min-count] [-t table-length]\n\
[--[no-]annotated-source[=name]] [--[no-]exec-counts[=name]]\n\
[--[no-]flat-profile[=name]] [--[no-]graph[=name]]\n\
@ -138,7 +140,7 @@ Usage: %s [-[abchilLsTvwxyz]] [-[ACeEfFJnNOpPqQZ][name]] [-I dirs]\n\
[--file-format=name] [--file-info] [--help] [--line] [--min-count=n]\n\
[--no-static] [--print-path] [--separate-files]\n\
[--static-call-graph] [--sum] [--table-length=len] [--traditional]\n\
[--version] [--width=n]\n\
[--version] [--width=n] [--ignore-non-functions]\n\
[image-file] [profile-file...]\n",
whoami);
done (status);
@ -156,7 +158,7 @@ DEFUN (main, (argc, argv), int argc AND char **argv)
xmalloc_set_program_name (whoami);
while ((ch = getopt_long (argc, argv,
"aA::bBcCd::e:E:f:F:hiI:J::k:lLm:n::N::O:p::P::q::Q::st:Tvw:xyzZ::",
"aA::bBcCdD::e:E:f:F:hiI:J::k:lLm:n::N::O:p::P::q::Q::st:Tvw:xyzZ::",
long_options, 0))
!= EOF)
{
@ -206,6 +208,9 @@ DEFUN (main, (argc, argv), int argc AND char **argv)
printf ("%s: debugging not supported; -d ignored\n", whoami);
#endif /* DEBUG */
break;
case 'D':
ignore_non_functions = TRUE;
break;
case 'E':
sym_id_add (optarg, EXCL_TIME);
case 'e':

View file

@ -128,6 +128,8 @@ extern bool ignore_zeros; /* ignore unused symbols/files */
extern bool line_granularity; /* function or line granularity? */
extern bool print_descriptions; /* output profile description */
extern bool print_path; /* print path or just filename? */
extern bool ignore_non_functions;/* Ignore non-function symbols. */
extern File_Format file_format; /* requested file format */
extern bool first_output; /* no output so far? */

View file

@ -294,6 +294,12 @@ function that was loaded directly before it in the executable file.
@c This is compatible with Unix @code{gprof}, but a bad idea.
This option affects both the flat profile and the call graph.
@item -D
The @samp{-D} option causes @code{gprof} to ignore symbols which
are not known to be functions. This option will give more accurate
profile data on systems where it is supported (Solaris and HPUX for
example).
@item -e @var{function_name}
The @samp{-e @var{function}} option tells @code{gprof} to not print
information about the function @var{function_name} (and its