diff options
author | Alan Modra <amodra@gmail.com> | 2011-02-06 23:38:38 +0000 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2011-02-06 23:38:38 +0000 |
commit | 02f2d833d849131cc63318139ea78ccb6bbaa9f2 (patch) | |
tree | ab17ee7c7c41dd0e2dadc2ed55f008a01e9af26b /gprof/corefile.c | |
parent | cac9794631d045afd7125b304140a86dee99524f (diff) | |
download | binutils-02f2d833d849131cc63318139ea78ccb6bbaa9f2.tar.gz binutils-02f2d833d849131cc63318139ea78ccb6bbaa9f2.tar.bz2 binutils-02f2d833d849131cc63318139ea78ccb6bbaa9f2.zip |
PR gprof/12468
* corefile.c (core_create_function_syms): Set is_func for targets
that have no BSF_FUNCTION syms.
Diffstat (limited to 'gprof/corefile.c')
-rw-r--r-- | gprof/corefile.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/gprof/corefile.c b/gprof/corefile.c index 6b10d177488..fd4644bfbd8 100644 --- a/gprof/corefile.c +++ b/gprof/corefile.c @@ -1,7 +1,7 @@ /* corefile.c Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, - 2010 Free Software Foundation, Inc. + 2010, 2011 Free Software Foundation, Inc. This file is part of GNU Binutils. @@ -573,6 +573,20 @@ core_create_function_syms (void) int cxxclass; long i; struct function_map * found; + int core_has_func_syms = 0; + + switch (core_bfd->xvec->flavour) + { + default: + break; + case bfd_target_coff_flavour: + case bfd_target_ecoff_flavour: + case bfd_target_xcoff_flavour: + case bfd_target_elf_flavour: + case bfd_target_nlm_flavour: + case bfd_target_som_flavour: + core_has_func_syms = 1; + } /* Pass 1 - determine upper bound on number of function names. */ symtab.len = 0; @@ -678,7 +692,8 @@ core_create_function_syms (void) } } - symtab.limit->is_func = (core_syms[i]->flags & BSF_FUNCTION) != 0; + symtab.limit->is_func = (!core_has_func_syms + || (core_syms[i]->flags & BSF_FUNCTION) != 0); symtab.limit->is_bb_head = TRUE; if (cxxclass == 't') |