* corefile.c (core_create_function_syms): Don't refer directly to
authorAlan Modra <amodra@gmail.com>
Sat, 11 Oct 2003 12:34:31 +0000 (12:34 +0000)
committerAlan Modra <amodra@gmail.com>
Sat, 11 Oct 2003 12:34:31 +0000 (12:34 +0000)
_cooked_size and vma;  Use bfd_section_size and bfd_get_section_vma.

gprof/ChangeLog
gprof/corefile.c

index 576a62cf94840199b8eceeddd421aabf2c35ae70..2bc05be51a9d187c2b6cbb9a481796c0abcbbe70 100644 (file)
@@ -1,3 +1,8 @@
+2003-10-11  Alan Modra  <alan@modra.org>
+
+       * corefile.c (core_create_function_syms): Don't refer directly to
+       _cooked_size and vma;  Use bfd_section_size and bfd_get_section_vma.
+
 2003-08-26  Nick Clifton  <nickc@redhat.com>
 
        * po/de.po: New German translation.
index 039fb82adc6a627af467f42959eee4917b92a024..7081ca5335cc787b5dc45b1d7436a47670dd6d7d 100644 (file)
@@ -456,6 +456,8 @@ core_create_function_syms (cbfd)
 
   for (i = 0; i < core_num_syms; ++i)
     {
+      asection *sym_sec;
+
       class = core_sym_class (core_syms[i]);
 
       if (!class)
@@ -489,7 +491,10 @@ core_create_function_syms (cbfd)
       sym_init (symtab.limit);
 
       /* Symbol offsets are always section-relative.  */
-      symtab.limit->addr = core_syms[i]->value + core_syms[i]->section->vma;
+      sym_sec = core_syms[i]->section;
+      symtab.limit->addr = core_syms[i]->value;
+      if (sym_sec)
+       symtab.limit->addr += bfd_get_section_vma (sym_sec->owner, sym_sec);
 
       if (symbol_map_count
          && !strcmp (core_syms[i]->name, symbol_map[found].function_name))
@@ -546,9 +551,10 @@ core_create_function_syms (cbfd)
         symbols.  When computing the max_vma, use the ending address of the
         section containing the symbol, if available.  */
       min_vma = MIN (symtab.limit->addr, min_vma);
-      if (core_syms[i]->section)
-       max_vma = MAX (core_syms[i]->section->vma
-                      + core_syms[i]->section->_cooked_size - 1, max_vma);
+      if (sym_sec)
+       max_vma = MAX (bfd_get_section_vma (sym_sec->owner, sym_sec)
+                      + bfd_section_size (sym_sec->owner, sym_sec) - 1,
+                      max_vma);
       else
        max_vma = MAX (symtab.limit->addr, max_vma);