aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2004-05-28 20:30:29 +0000
committerH.J. Lu <hjl.tools@gmail.com>2004-05-28 20:30:29 +0000
commit5dd23ec18b479cbc2150f28168a1b95fd4e80aaa (patch)
tree5711a0622b040b4c4173727ed152893a1c2cf77c /bfd
parent888a75bebca164a38b44e222f14ed3a8297e98a4 (diff)
downloadbinutils-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/ChangeLog5
-rw-r--r--bfd/elfxx-ia64.c23
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;