* corefile.c (core_init): Call bfd_get_synthetic_symtab.
authorAlan Modra <amodra@gmail.com>
Thu, 14 Apr 2005 10:33:55 +0000 (10:33 +0000)
committerAlan Modra <amodra@gmail.com>
Thu, 14 Apr 2005 10:33:55 +0000 (10:33 +0000)
gprof/ChangeLog
gprof/corefile.c

index 532f915..a3c5dbc 100644 (file)
@@ -1,5 +1,9 @@
 2005-04-14  Alan Modra  <amodra@bigpond.net.au>
 
 2005-04-14  Alan Modra  <amodra@bigpond.net.au>
 
+       * corefile.c (core_init): Call bfd_get_synthetic_symtab.
+
+2005-04-14  Alan Modra  <amodra@bigpond.net.au>
+
        * Makefile.am (NO_WERROR): Define.
        * acinclude.m4: Include ../bfd/warning.m4.
        * configure.in: Invoke AM_BINUTILS_WARNINGS.
        * Makefile.am (NO_WERROR): Define.
        * acinclude.m4: Include ../bfd/warning.m4.
        * configure.in: Invoke AM_BINUTILS_WARNINGS.
index bd594f5..c06f7d4 100644 (file)
@@ -1,6 +1,6 @@
 /* corefile.c
 
 /* corefile.c
 
-   Copyright 1999, 2000, 2001, 2002, 2003, 2004
+   Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005
    Free Software Foundation, Inc.
 
    This file is part of GNU Binutils.
    Free Software Foundation, Inc.
 
    This file is part of GNU Binutils.
@@ -142,6 +142,9 @@ void
 core_init (const char *aout_name)
 {
   int core_sym_bytes;
 core_init (const char *aout_name)
 {
   int core_sym_bytes;
+  asymbol *synthsyms;
+  long synth_count;
+
   core_bfd = bfd_openr (aout_name, 0);
 
   if (!core_bfd)
   core_bfd = bfd_openr (aout_name, 0);
 
   if (!core_bfd)
@@ -190,6 +193,23 @@ core_init (const char *aout_name)
       done (1);
     }
 
       done (1);
     }
 
+  synth_count = bfd_get_synthetic_symtab (core_bfd, core_num_syms, core_syms,
+                                         0, NULL, &synthsyms);
+  if (synth_count > 0)
+    {
+      asymbol **symp;
+      long new_size;
+      long i;
+
+      new_size = (core_num_syms + synth_count + 1) * sizeof (*core_syms);
+      core_syms = xrealloc (core_syms, new_size);
+      symp = core_syms + core_num_syms;
+      core_num_syms += synth_count;
+      for (i = 0; i < synth_count; i++)
+       *symp++ = synthsyms + i;
+      *symp = 0;
+    }
+
   min_insn_size = 1;
   offset_to_code = 0;
 
   min_insn_size = 1;
   offset_to_code = 0;