diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2004-05-28 20:30:29 +0000 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2004-05-28 20:30:29 +0000 |
commit | 5dd23ec18b479cbc2150f28168a1b95fd4e80aaa (patch) | |
tree | 5711a0622b040b4c4173727ed152893a1c2cf77c /bfd | |
parent | 888a75bebca164a38b44e222f14ed3a8297e98a4 (diff) | |
download | binutils-5dd23ec18b479cbc2150f28168a1b95fd4e80aaa.zip binutils-5dd23ec18b479cbc2150f28168a1b95fd4e80aaa.tar.gz binutils-5dd23ec18b479cbc2150f28168a1b95fd4e80aaa.tar.bz2 |
2004-05-28 H.J. Lu <hongjiu.lu@intel.com>
* elfxx-ia64.c (elfNN_ia64_relax_section): Properly call
_bfd_merged_section_offset for local symbols.
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/ChangeLog | 5 | ||||
-rw-r--r-- | bfd/elfxx-ia64.c | 23 |
2 files changed, 21 insertions, 7 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index de25c0a..0178acd 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2004-05-28 H.J. Lu <hongjiu.lu@intel.com> + + * elfxx-ia64.c (elfNN_ia64_relax_section): Properly call + _bfd_merged_section_offset for local symbols. + 2004-05-28 Andrew Stubbs <andrew.stubbs@superh.com> * Makefile.am: Regenerate dependencies. diff --git a/bfd/elfxx-ia64.c b/bfd/elfxx-ia64.c index 26b2e45..f72df9e 100644 --- a/bfd/elfxx-ia64.c +++ b/bfd/elfxx-ia64.c @@ -864,6 +864,15 @@ elfNN_ia64_relax_section (abfd, sec, link_info, again) toff = isym->st_value; dyn_i = get_dyn_sym_info (ia64_info, NULL, abfd, irel, FALSE); + + if ((tsec->flags & SEC_MERGE) + && ELF_ST_TYPE (isym->st_info) == STT_SECTION + && tsec->sec_info_type == ELF_INFO_TYPE_MERGE) + toff = _bfd_merged_section_offset (abfd, &tsec, + elf_section_data (tsec)->sec_info, + toff + irel->r_addend); + else + toff += irel->r_addend; } else { @@ -908,14 +917,14 @@ elfNN_ia64_relax_section (abfd, sec, link_info, again) tsec = h->root.u.def.section; toff = h->root.u.def.value; } - } - if (tsec->sec_info_type == ELF_INFO_TYPE_MERGE) - toff = _bfd_merged_section_offset (abfd, &tsec, - elf_section_data (tsec)->sec_info, - toff + irel->r_addend); - else - toff += irel->r_addend; + if (tsec->sec_info_type == ELF_INFO_TYPE_MERGE) + toff = _bfd_merged_section_offset (abfd, &tsec, + elf_section_data (tsec)->sec_info, + toff + irel->r_addend); + else + toff += irel->r_addend; + } symaddr = tsec->output_section->vma + tsec->output_offset + toff; |