diff options
author | Alan Modra <amodra@bigpond.net.au> | 2003-10-11 12:34:31 +0000 |
---|---|---|
committer | Alan Modra <amodra@bigpond.net.au> | 2003-10-11 12:34:31 +0000 |
commit | b1d7ef2f0330a17a13da2a3f06235b7ae9818d1e (patch) | |
tree | ded3cb3d2b9d355a781e8ef0a4b2f48dec145250 /gprof/corefile.c | |
parent | 9d8ee9649669d7ed73b4912e503dca342d77bb38 (diff) | |
download | binutils-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.c | 14 |
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); |