2002-07-24 Dave Brolley <brolley@redhat.com>
authorDave Brolley <brolley@redhat.com>
Wed, 24 Jul 2002 15:25:03 +0000 (15:25 +0000)
committerDave Brolley <brolley@redhat.com>
Wed, 24 Jul 2002 15:25:03 +0000 (15:25 +0000)
* corefile.c (core_create_function_syms): Use the end of the section
containing the symbol to compute max_vma.

gprof/ChangeLog
gprof/corefile.c

index 1cbf373..1d726d1 100644 (file)
@@ -1,3 +1,8 @@
+2002-07-24  Dave Brolley  <brolley@redhat.com>
+
+       * corefile.c (core_create_function_syms): Use the end of the section
+       containing the symbol to compute max_vma.
+
 2002-07-24  Nick Clifton  <nickc@redhat.com>
 
        * po/sv.po: Updated Swedish translation.
index fdebc88..74e78f5 100644 (file)
@@ -542,8 +542,15 @@ core_create_function_syms (cbfd)
       if (class == 't')
        symtab.limit->is_static = true;
 
+      /* Keep track of the minimum and maximum vma addresses used by all
+        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);
-      max_vma = MAX (symtab.limit->addr, max_vma);
+      if (core_syms[i]->section)
+       max_vma = MAX (core_syms[i]->section->vma
+                      + core_syms[i]->section->_cooked_size - 1, max_vma);
+      else
+       max_vma = MAX (symtab.limit->addr, max_vma);
 
       /* If we see "main" without an initial '_', we assume names
         are *not* prefixed by '_'.  */