PR gprof/12468
authorAlan Modra <amodra@gmail.com>
Sun, 6 Feb 2011 23:38:38 +0000 (23:38 +0000)
committerAlan Modra <amodra@gmail.com>
Sun, 6 Feb 2011 23:38:38 +0000 (23:38 +0000)
* corefile.c (core_create_function_syms): Set is_func for targets
that have no BSF_FUNCTION syms.

gprof/ChangeLog
gprof/corefile.c

index 73427a6..fbf8b90 100644 (file)
@@ -1,3 +1,9 @@
+2011-02-07  Alan Modra  <amodra@gmail.com>
+
+       PR gprof/12468
+       * corefile.c (core_create_function_syms): Set is_func for targets
+       that have no BSF_FUNCTION syms.
+
 2011-01-10  Nick Clifton  <nickc@redhat.com>
 
        * po/da.po: Updated Danish translation.
index 6b10d17..fd4644b 100644 (file)
@@ -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')