aboutsummaryrefslogtreecommitdiff
path: root/gprof
diff options
context:
space:
mode:
Diffstat (limited to 'gprof')
-rw-r--r--gprof/ChangeLog12
-rw-r--r--gprof/alpha.c25
-rw-r--r--gprof/cg_print.c9
-rw-r--r--gprof/corefile.c36
-rw-r--r--gprof/gprof.c1
-rw-r--r--gprof/mips.c21
-rw-r--r--gprof/sparc.c19
-rw-r--r--gprof/tahoe.c31
-rw-r--r--gprof/vax.c31
9 files changed, 89 insertions, 96 deletions
diff --git a/gprof/ChangeLog b/gprof/ChangeLog
index 3de5a7a..6c1279c 100644
--- a/gprof/ChangeLog
+++ b/gprof/ChangeLog
@@ -1,3 +1,15 @@
+2009-02-12 Ken Werner <ken.werner@de.ibm.com>
+
+ * corefile.c (core_create_function_syms): Remove "<locore>" and
+ "<hicore>" sentinels.
+ * gprof.c: Likewise.
+ * cg_print.c (cg_print_function_ordering): Likewise.
+ * alpha.c (alpha_find_call): Add check for return value of sym_lookup.
+ * mips.c (mips_find_call): Likewise.
+ * sparc.c (sparc_find_call): Likewise.
+ * tahoe.c (tahoe_find_call): Likewise.
+ * vax.c (vax_find_call): Likewise.
+
2009-02-03 Carlos O'Donell <carlos@codesourcery.com>
* configure.in: AC_SUBST pdfdir.
diff --git a/gprof/alpha.c b/gprof/alpha.c
index b14e842..1a3ebf9 100644
--- a/gprof/alpha.c
+++ b/gprof/alpha.c
@@ -148,17 +148,20 @@ alpha_find_call (Sym *parent, bfd_vma p_lowpc, bfd_vma p_highpc)
if (hist_check_address (dest_pc))
{
child = sym_lookup (&symtab, dest_pc);
- DBG (CALLDEBUG,
- printf (" 0x%lx\t; name=%s, addr=0x%lx",
- (unsigned long) dest_pc, child->name,
- (unsigned long) child->addr));
- if (child->addr == dest_pc || child->addr == dest_pc - 8)
- {
- DBG (CALLDEBUG, printf ("\n"));
- /* a hit: */
- arc_add (parent, child, (unsigned long) 0);
- continue;
- }
+ if (child)
+ {
+ DBG (CALLDEBUG,
+ printf (" 0x%lx\t; name=%s, addr=0x%lx",
+ (unsigned long) dest_pc, child->name,
+ (unsigned long) child->addr));
+ if (child->addr == dest_pc || child->addr == dest_pc - 8)
+ {
+ DBG (CALLDEBUG, printf ("\n"));
+ /* a hit: */
+ arc_add (parent, child, (unsigned long) 0);
+ continue;
+ }
+ }
}
/*
* Something funny going on.
diff --git a/gprof/cg_print.c b/gprof/cg_print.c
index 2557997..58ff608 100644
--- a/gprof/cg_print.c
+++ b/gprof/cg_print.c
@@ -804,13 +804,8 @@ cg_print_function_ordering ()
{
if (symtab.base[index].ncalls == 0)
{
- /* Filter out gprof generated names. */
- if (strcmp (symtab.base[index].name, "<locore>")
- && strcmp (symtab.base[index].name, "<hicore>"))
- {
- unused_syms[unused++] = &symtab.base[index];
- symtab.base[index].has_been_placed = 1;
- }
+ unused_syms[unused++] = &symtab.base[index];
+ symtab.base[index].has_been_placed = 1;
}
else
{
diff --git a/gprof/corefile.c b/gprof/corefile.c
index 243a600..b3433c2 100644
--- a/gprof/corefile.c
+++ b/gprof/corefile.c
@@ -480,8 +480,7 @@ core_create_function_syms ()
done (1);
}
- /* The "+ 2" is for the sentinels. */
- symtab.base = (Sym *) xmalloc ((symtab.len + 2) * sizeof (Sym));
+ symtab.base = (Sym *) xmalloc (symtab.len * sizeof (Sym));
/* Pass 2 - create symbols. */
symtab.limit = symtab.base;
@@ -597,19 +596,6 @@ core_create_function_syms ()
++symtab.limit;
}
- /* Create sentinels. */
- sym_init (symtab.limit);
- symtab.limit->name = "<locore>";
- symtab.limit->addr = 0;
- symtab.limit->end_addr = min_vma - 1;
- ++symtab.limit;
-
- sym_init (symtab.limit);
- symtab.limit->name = "<hicore>";
- symtab.limit->addr = max_vma + 1;
- symtab.limit->end_addr = ~(bfd_vma) 0;
- ++symtab.limit;
-
symtab.len = symtab.limit - symtab.base;
symtab_finalize (&symtab);
}
@@ -623,7 +609,7 @@ core_create_line_syms ()
char *prev_name, *prev_filename;
unsigned int prev_name_len, prev_filename_len;
bfd_vma vma, min_vma = ~(bfd_vma) 0, max_vma = 0;
- Sym *prev, dummy, *sentinel, *sym;
+ Sym *prev, dummy, *sym;
const char *filename;
int prev_line_num;
Sym_Table ltab;
@@ -744,7 +730,8 @@ core_create_line_syms ()
else
{
sym = sym_lookup(&symtab, ltab.limit->addr);
- ltab.limit->is_static = sym->is_static;
+ if (sym)
+ ltab.limit->is_static = sym->is_static;
}
prev = ltab.limit;
@@ -756,21 +743,6 @@ core_create_line_syms ()
++ltab.limit;
}
- /* Update sentinels. */
- sentinel = sym_lookup (&symtab, (bfd_vma) 0);
-
- if (sentinel
- && strcmp (sentinel->name, "<locore>") == 0
- && min_vma <= sentinel->end_addr)
- sentinel->end_addr = min_vma - 1;
-
- sentinel = sym_lookup (&symtab, ~(bfd_vma) 0);
-
- if (sentinel
- && strcmp (sentinel->name, "<hicore>") == 0
- && max_vma >= sentinel->addr)
- sentinel->addr = max_vma + 1;
-
/* Copy in function symbols. */
memcpy (ltab.limit, symtab.base, symtab.len * sizeof (Sym));
ltab.limit += symtab.len;
diff --git a/gprof/gprof.c b/gprof/gprof.c
index e5e8863..26bec34 100644
--- a/gprof/gprof.c
+++ b/gprof/gprof.c
@@ -84,7 +84,6 @@ static char *default_excluded_list[] =
{
"_gprof_mcount", "mcount", "_mcount", "__mcount", "__mcount_internal",
"__mcleanup",
- "<locore>", "<hicore>",
0
};
diff --git a/gprof/mips.c b/gprof/mips.c
index 7a7344d..2de87cf 100644
--- a/gprof/mips.c
+++ b/gprof/mips.c
@@ -74,16 +74,19 @@ mips_find_call (Sym *parent, bfd_vma p_lowpc, bfd_vma p_highpc)
if (hist_check_address (dest_pc))
{
child = sym_lookup (&symtab, dest_pc);
- DBG (CALLDEBUG,
- printf (" 0x%lx\t; name=%s, addr=0x%lx",
- (unsigned long) dest_pc, child->name,
- (unsigned long) child->addr));
- if (child->addr == dest_pc)
+ if (child)
{
- DBG (CALLDEBUG, printf ("\n"));
- /* a hit: */
- arc_add (parent, child, (unsigned long) 0);
- continue;
+ DBG (CALLDEBUG,
+ printf (" 0x%lx\t; name=%s, addr=0x%lx",
+ (unsigned long) dest_pc, child->name,
+ (unsigned long) child->addr));
+ if (child->addr == dest_pc)
+ {
+ DBG (CALLDEBUG, printf ("\n"));
+ /* a hit: */
+ arc_add (parent, child, (unsigned long) 0);
+ continue;
+ }
}
}
/* Something funny going on. */
diff --git a/gprof/sparc.c b/gprof/sparc.c
index 47592d8..44724c4 100644
--- a/gprof/sparc.c
+++ b/gprof/sparc.c
@@ -68,15 +68,18 @@ sparc_find_call (Sym *parent, bfd_vma p_lowpc, bfd_vma p_highpc)
if (hist_check_address (dest_pc))
{
child = sym_lookup (&symtab, dest_pc);
- DBG (CALLDEBUG,
- printf ("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",
- (unsigned long) dest_pc, child->name,
- (unsigned long) child->addr));
- if (child->addr == dest_pc)
+ if (child)
{
- /* a hit: */
- arc_add (parent, child, (unsigned long) 0);
- continue;
+ DBG (CALLDEBUG,
+ printf ("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",
+ (unsigned long) dest_pc, child->name,
+ (unsigned long) child->addr));
+ if (child->addr == dest_pc)
+ {
+ /* a hit: */
+ arc_add (parent, child, (unsigned long) 0);
+ continue;
+ }
}
}
/*
diff --git a/gprof/tahoe.c b/gprof/tahoe.c
index c1d9c42..93d2997 100644
--- a/gprof/tahoe.c
+++ b/gprof/tahoe.c
@@ -298,21 +298,24 @@ tahoe_find_call (Sym *parent, bfd_vma p_lowpc, bfd_vma p_highpc)
if (hist_check_address (destpc))
{
child = sym_lookup (&symtab, destpc);
- DBG (CALLDEBUG,
- printf ("[findcall]\tdestpc 0x%lx",
- (unsigned long) destpc);
- printf (" child->name %s", child->name);
- printf (" child->addr 0x%lx\n",
- (unsigned long) child->addr);
- );
- if (child->addr == destpc)
+ if (child)
{
- /*
- * a hit
- */
- arc_add (parent, child, (unsigned long) 0);
- length += tahoe_operandlength (instructp + length);
- continue;
+ DBG (CALLDEBUG,
+ printf ("[findcall]\tdestpc 0x%lx",
+ (unsigned long) destpc);
+ printf (" child->name %s", child->name);
+ printf (" child->addr 0x%lx\n",
+ (unsigned long) child->addr);
+ );
+ if (child->addr == destpc)
+ {
+ /*
+ * a hit
+ */
+ arc_add (parent, child, (unsigned long) 0);
+ length += tahoe_operandlength (instructp + length);
+ continue;
+ }
}
goto botched;
}
diff --git a/gprof/vax.c b/gprof/vax.c
index a6904c1..99719b9 100644
--- a/gprof/vax.c
+++ b/gprof/vax.c
@@ -309,21 +309,24 @@ vax_find_call (Sym *parent, bfd_vma p_lowpc, bfd_vma p_highpc)
if (hist_check_address (destpc))
{
child = sym_lookup (&symtab, destpc);
- DBG (CALLDEBUG,
- printf ("[findcall]\tdestpc 0x%lx",
- (unsigned long) destpc);
- printf (" child->name %s", child->name);
- printf (" child->addr 0x%lx\n",
- (unsigned long) child->addr);
- );
- if (child->addr == destpc)
+ if (child)
{
- /*
- * a hit
- */
- arc_add (parent, child, (unsigned long) 0);
- length += vax_operandlength (instructp + length);
- continue;
+ DBG (CALLDEBUG,
+ printf ("[findcall]\tdestpc 0x%lx",
+ (unsigned long) destpc);
+ printf (" child->name %s", child->name);
+ printf (" child->addr 0x%lx\n",
+ (unsigned long) child->addr);
+ );
+ if (child->addr == destpc)
+ {
+ /*
+ * a hit
+ */
+ arc_add (parent, child, (unsigned long) 0);
+ length += vax_operandlength (instructp + length);
+ continue;
+ }
}
goto botched;
}