* elfxx-ia64.c (elfNN_ia64_relax_section): Handle relaxation

againt mergeable sections.  Take r_addend into account when caching
	trampolines.
This commit is contained in:
Jakub Jelinek 2003-03-18 23:14:35 +00:00
parent 19a0fc411b
commit 3fa1d9175d
2 changed files with 16 additions and 4 deletions

View File

@ -1,3 +1,9 @@
2003-03-18 Jakub Jelinek <jakub@redhat.com>
* elfxx-ia64.c (elfNN_ia64_relax_section): Handle relaxation
againt mergeable sections. Take r_addend into account when caching
trampolines.
2003-03-18 Richard Henderson <rth@redhat.com>
* elfxx-ia64.c (get_dyn_sym_info): Return NULL gracefully for

View File

@ -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;