diff options
author | Jakub Jelinek <jakub@redhat.com> | 2003-03-18 23:14:35 +0000 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2003-03-18 23:14:35 +0000 |
commit | 3fa1d9175dbca1db85a0f07f967c5b374a3437be (patch) | |
tree | 5dc9b571bc4c1aa586248b47049138a09203cd8b /bfd/elfxx-ia64.c | |
parent | 19a0fc411bdd4f376b687838ba33a1abace0e37c (diff) | |
download | gdb-3fa1d9175dbca1db85a0f07f967c5b374a3437be.zip gdb-3fa1d9175dbca1db85a0f07f967c5b374a3437be.tar.gz gdb-3fa1d9175dbca1db85a0f07f967c5b374a3437be.tar.bz2 |
* elfxx-ia64.c (elfNN_ia64_relax_section): Handle relaxation
againt mergeable sections. Take r_addend into account when caching
trampolines.
Diffstat (limited to 'bfd/elfxx-ia64.c')
-rw-r--r-- | bfd/elfxx-ia64.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/bfd/elfxx-ia64.c b/bfd/elfxx-ia64.c index 6778f03..56c2819 100644 --- a/bfd/elfxx-ia64.c +++ b/bfd/elfxx-ia64.c @@ -819,6 +819,7 @@ elfNN_ia64_relax_section (abfd, sec, link_info, again) tsec = ia64_info->plt_sec; toff = dyn_i->plt2_offset; + BFD_ASSERT (irel->r_addend == 0); } /* Can't do anything else with dynamic symbols. */ @@ -837,10 +838,15 @@ elfNN_ia64_relax_section (abfd, sec, link_info, again) } } - symaddr = (tsec->output_section->vma - + tsec->output_offset - + 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, + (bfd_vma) 0); + else + toff += irel->r_addend; + + symaddr = tsec->output_section->vma + tsec->output_offset + toff; roff = irel->r_offset; |