projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
breakpoints/19546: Fix crash after updating breakpoints
[deliverable/binutils-gdb.git]
/
gprof
/
basic_blocks.c
diff --git
a/gprof/basic_blocks.c
b/gprof/basic_blocks.c
index 8f560b4b2f606103d6381121399bf2801add6247..dac093af936e55c440e33571a734fb9dc99e4e3c 100644
(file)
--- a/
gprof/basic_blocks.c
+++ b/
gprof/basic_blocks.c
@@
-2,13
+2,13
@@
of basic-block info to/from gmon.out; computing and formatting of
basic-block related statistics.
of basic-block info to/from gmon.out; computing and formatting of
basic-block related statistics.
- Copyright
2000, 2001
Free Software Foundation, Inc.
+ Copyright
(C) 1999-2016
Free Software Foundation, Inc.
This file is part of GNU Binutils.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
This file is part of GNU Binutils.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version
2
of the License, or
+ the Free Software Foundation; either version
3
of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
(at your option) any later version.
This program is distributed in the hope that it will be useful,
@@
-18,24
+18,28
@@
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 5
9 Temple Place - Suite 330
, Boston, MA
- 0211
1-1307
, USA. */
+ Foundation, Inc., 5
1 Franklin Street - Fifth Floor
, Boston, MA
+ 0211
0-1301
, USA. */
\f
\f
-#include <stdio.h>
+#include "gprof.h"
+#include "libiberty.h"
+#include "filenames.h"
#include "basic_blocks.h"
#include "corefile.h"
#include "gmon_io.h"
#include "gmon_out.h"
#include "basic_blocks.h"
#include "corefile.h"
#include "gmon_io.h"
#include "gmon_out.h"
-#include "gprof.h"
-#include "libiberty.h"
+#include "search_list.h"
#include "source.h"
#include "source.h"
+#include "symtab.h"
#include "sym_ids.h"
#include "sym_ids.h"
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
+
+static int cmp_bb (const PTR, const PTR);
+static int cmp_ncalls (const PTR, const PTR);
+static void fskip_string (FILE *);
+static void annotate_with_count (char *, unsigned int, int, PTR);
/* Default option values: */
/* Default option values: */
-b
ool
bb_annotate_all_lines = FALSE;
+b
fd_boolean
bb_annotate_all_lines = FALSE;
unsigned long bb_min_calls = 1;
int bb_table_length = 10;
unsigned long bb_min_calls = 1;
int bb_table_length = 10;
@@
-49,7
+53,7
@@
static long num_lines_executed;
number, and address (in that order). */
static int
number, and address (in that order). */
static int
-
DEFUN (cmp_bb, (lp, rp), const void *lp AND const void *
rp)
+
cmp_bb (const PTR lp, const PTR
rp)
{
int r;
const Sym *left = *(const Sym **) lp;
{
int r;
const Sym *left = *(const Sym **) lp;
@@
-57,7
+61,7
@@
DEFUN (cmp_bb, (lp, rp), const void *lp AND const void *rp)
if (left->file && right->file)
{
if (left->file && right->file)
{
- r =
str
cmp (left->file->name, right->file->name);
+ r =
filename_
cmp (left->file->name, right->file->name);
if (r)
return r;
if (r)
return r;
@@
-78,7
+82,7
@@
DEFUN (cmp_bb, (lp, rp), const void *lp AND const void *rp)
/* Helper for sorting. Order basic blocks in decreasing number of
calls, ties are broken in increasing order of line numbers. */
static int
/* Helper for sorting. Order basic blocks in decreasing number of
calls, ties are broken in increasing order of line numbers. */
static int
-
DEFUN (cmp_ncalls, (lp, rp), const void *lp AND const void *
rp)
+
cmp_ncalls (const PTR lp, const PTR
rp)
{
const Sym *left = *(const Sym **) lp;
const Sym *right = *(const Sym **) rp;
{
const Sym *left = *(const Sym **) lp;
const Sym *right = *(const Sym **) rp;
@@
-98,7
+102,7
@@
DEFUN (cmp_ncalls, (lp, rp), const void *lp AND const void *rp)
/* Skip over variable length string. */
static void
/* Skip over variable length string. */
static void
-
DEFUN (fskip_string, (fp), FILE *
fp)
+
fskip_string (FILE *
fp)
{
int ch;
{
int ch;
@@
-113,9
+117,9
@@
DEFUN (fskip_string, (fp), FILE * fp)
of file IFP and is provided for formatting error-messages only. */
void
of file IFP and is provided for formatting error-messages only. */
void
-
DEFUN (bb_read_rec, (ifp, filename), FILE * ifp AND
const char *filename)
+
bb_read_rec (FILE *ifp,
const char *filename)
{
{
- int nblocks, b;
+
unsigned
int nblocks, b;
bfd_vma addr, ncalls;
Sym *sym;
bfd_vma addr, ncalls;
Sym *sym;
@@
-183,7
+187,7
@@
DEFUN (bb_read_rec, (ifp, filename), FILE * ifp AND const char *filename)
}
else
{
}
else
{
- static b
ool
user_warned = FALSE;
+ static b
fd_boolean
user_warned = FALSE;
if (!user_warned)
{
if (!user_warned)
{
@@
-201,9
+205,9
@@
DEFUN (bb_read_rec, (ifp, filename), FILE * ifp AND const char *filename)
is the name of OFP and is provided for producing error-messages
only. */
void
is the name of OFP and is provided for producing error-messages
only. */
void
-
DEFUN (bb_write_blocks, (ofp, filename), FILE * ofp AND
const char *filename)
+
bb_write_blocks (FILE *ofp,
const char *filename)
{
{
- int nblocks = 0;
+
unsigned
int nblocks = 0;
Sym *sym;
int i;
Sym *sym;
int i;
@@
-229,7
+233,7
@@
DEFUN (bb_write_blocks, (ofp, filename), FILE * ofp AND const char *filename)
for (i = 0; i < NBBS && sym->bb_addr[i]; i++)
{
if (gmon_io_write_vma (ofp, sym->bb_addr[i])
for (i = 0; i < NBBS && sym->bb_addr[i]; i++)
{
if (gmon_io_write_vma (ofp, sym->bb_addr[i])
- || gmon_io_write_vma (ofp, sym->bb_calls[i]))
+ || gmon_io_write_vma (ofp,
(bfd_vma)
sym->bb_calls[i]))
{
perror (filename);
done (1);
{
perror (filename);
done (1);
@@
-244,10
+248,10
@@
DEFUN (bb_write_blocks, (ofp, filename), FILE * ofp AND const char *filename)
<filename>:<line-number>: (<function-name>:<bb-addr): <ncalls> */
void
<filename>:<line-number>: (<function-name>:<bb-addr): <ncalls> */
void
-
DEFUN_VOID (print_exec_counts
)
+
print_exec_counts (
)
{
Sym **sorted_bbs, *sym;
{
Sym **sorted_bbs, *sym;
- int i, j, len;
+
unsigned
int i, j, len;
if (first_output)
first_output = FALSE;
if (first_output)
first_output = FALSE;
@@
-277,6
+281,8
@@
DEFUN_VOID (print_exec_counts)
for (i = 0; i < len; ++i)
{
for (i = 0; i < len; ++i)
{
+ sym = sorted_bbs [i];
+
if (sym->ncalls > 0 || ! ignore_zeros)
{
/* FIXME: This only works if bfd_vma is unsigned long. */
if (sym->ncalls > 0 || ! ignore_zeros)
{
/* FIXME: This only works if bfd_vma is unsigned long. */
@@
-311,19
+317,18
@@
DEFUN_VOID (print_exec_counts)
that starts the basic-block. */
static void
that starts the basic-block. */
static void
-DEFUN (annotate_with_count, (buf, width, line_num, arg),
- char *buf AND int width AND int line_num AND void *arg)
+annotate_with_count (char *buf, unsigned int width, int line_num, PTR arg)
{
{
- Source_File *sf = arg;
+ Source_File *sf =
(Source_File *)
arg;
Sym *b;
Sym *b;
- int i;
+
unsigned
int i;
static unsigned long last_count;
unsigned long last_print = (unsigned long) -1;
b = NULL;
if (line_num <= sf->num_lines)
static unsigned long last_count;
unsigned long last_print = (unsigned long) -1;
b = NULL;
if (line_num <= sf->num_lines)
- b = sf->line[line_num - 1];
+ b =
(Sym *)
sf->line[line_num - 1];
if (!b)
{
if (!b)
{
@@
-337,7
+342,7
@@
DEFUN (annotate_with_count, (buf, width, line_num, arg),
char *p;
unsigned long ncalls;
int ncalls_set;
char *p;
unsigned long ncalls;
int ncalls_set;
- int len;
+
unsigned
int len;
++num_executable_lines;
++num_executable_lines;
@@
-413,7
+418,7
@@
DEFUN (annotate_with_count, (buf, width, line_num, arg),
if (! ncalls_set)
{
if (! ncalls_set)
{
- int c;
+
unsigned
int c;
for (c = 0; c < width; c++)
buf[c] = ' ';
for (c = 0; c < width; c++)
buf[c] = ' ';
@@
-440,7
+445,7
@@
DEFUN (annotate_with_count, (buf, width, line_num, arg),
}
else
{
}
else
{
- int c;
+
unsigned
int c;
strcpy (buf + width - len, tmpbuf);
for (c = 0; c < width - len; ++c)
strcpy (buf + width - len, tmpbuf);
for (c = 0; c < width - len; ++c)
@@
-454,7
+459,7
@@
DEFUN (annotate_with_count, (buf, width, line_num, arg),
regarding that source file are printed. */
void
regarding that source file are printed. */
void
-
DEFUN_VOID (print_annotated_source
)
+
print_annotated_source (
)
{
Sym *sym, *line_stats, *new_line;
Source_File *sf;
{
Sym *sym, *line_stats, *new_line;
Source_File *sf;
@@
-483,7
+488,7
@@
DEFUN_VOID (print_annotated_source)
{
if (sf->num_lines > 0)
{
{
if (sf->num_lines > 0)
{
- sf->line = (void *) xmalloc (sf->num_lines * sizeof (sf->line[0]));
+ sf->line = (void *
*
) xmalloc (sf->num_lines * sizeof (sf->line[0]));
memset (sf->line, 0, sf->num_lines * sizeof (sf->line[0]));
}
}
memset (sf->line, 0, sf->num_lines * sizeof (sf->line[0]));
}
}
@@
-497,7
+502,7
@@
DEFUN_VOID (print_annotated_source)
&& !sym_lookup (&syms[EXCL_ANNO], sym->addr))))
{
sym->file->ncalls += sym->ncalls;
&& !sym_lookup (&syms[EXCL_ANNO], sym->addr))))
{
sym->file->ncalls += sym->ncalls;
- line_stats = sym->file->line[sym->line_num - 1];
+ line_stats =
(Sym *)
sym->file->line[sym->line_num - 1];
if (!line_stats)
{
if (!line_stats)
{
@@
-547,7
+552,7
@@
DEFUN_VOID (print_annotated_source)
for (i = 0; i < table_len; ++i)
{
for (i = 0; i < table_len; ++i)
{
- sym = sf->line[i];
+ sym =
(Sym *)
sf->line[i];
if (!sym || sym->ncalls == 0)
break;
if (!sym || sym->ncalls == 0)
break;
This page took
0.026325 seconds
and
4
git commands to generate.