summaryrefslogtreecommitdiff
path: root/gprof/corefile.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@bigpond.net.au>2003-10-11 12:34:31 +0000
committerAlan Modra <amodra@bigpond.net.au>2003-10-11 12:34:31 +0000
commitb1d7ef2f0330a17a13da2a3f06235b7ae9818d1e (patch)
treeded3cb3d2b9d355a781e8ef0a4b2f48dec145250 /gprof/corefile.c
parent9d8ee9649669d7ed73b4912e503dca342d77bb38 (diff)
downloadbinutils-redhat-b1d7ef2f0330a17a13da2a3f06235b7ae9818d1e.tar.gz
* corefile.c (core_create_function_syms): Don't refer directly to
_cooked_size and vma; Use bfd_section_size and bfd_get_section_vma.
Diffstat (limited to 'gprof/corefile.c')
-rw-r--r--gprof/corefile.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/gprof/corefile.c b/gprof/corefile.c
index 039fb82adc..7081ca5335 100644
--- a/gprof/corefile.c
+++ b/gprof/corefile.c
@@ -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);