* elf32-xtensa.c (relax_section): Update DIFF relocations in the

same way as other relocations.
This commit is contained in:
Bob Wilson
2007-12-21 23:11:28 +00:00
parent 8d32f93595
commit dc96b90a10
2 changed files with 24 additions and 21 deletions

View File

@ -1,3 +1,8 @@
2007-12-21 Bob Wilson <bob.wilson@acm.org>
* elf32-xtensa.c (relax_section): Update DIFF relocations in the
same way as other relocations.
2007-12-18 Daniel Jacobowitz <dan@codesourcery.com>
* section.c (BFD_FAKE_SECTION): Update.

View File

@ -8240,30 +8240,28 @@ relax_section (bfd *abfd, asection *sec, struct bfd_link_info *link_info)
pin_contents (sec, contents);
}
/* If the relocation still references a section in the same
input file, modify the relocation directly instead of
adding a "fix" record. */
if (target_sec->owner == abfd)
{
unsigned r_symndx = ELF32_R_SYM (new_reloc.rela.r_info);
irel->r_info = ELF32_R_INFO (r_symndx, r_type);
irel->r_addend = new_reloc.rela.r_addend;
pin_internal_relocs (sec, internal_relocs);
}
else
{
/* If the relocation still references a section in the same
input file, modify the relocation directly instead of
adding a "fix" record. */
if (target_sec->owner == abfd)
{
unsigned r_symndx = ELF32_R_SYM (new_reloc.rela.r_info);
irel->r_info = ELF32_R_INFO (r_symndx, r_type);
irel->r_addend = new_reloc.rela.r_addend;
pin_internal_relocs (sec, internal_relocs);
}
else
{
bfd_vma addend_displacement;
reloc_bfd_fix *fix;
bfd_vma addend_displacement;
reloc_bfd_fix *fix;
addend_displacement =
new_reloc.target_offset + new_reloc.virtual_offset;
fix = reloc_bfd_fix_init (sec, source_offset, r_type,
target_sec,
addend_displacement, TRUE);
add_fix (sec, fix);
}
addend_displacement =
new_reloc.target_offset + new_reloc.virtual_offset;
fix = reloc_bfd_fix_init (sec, source_offset, r_type,
target_sec,
addend_displacement, TRUE);
add_fix (sec, fix);
}
}
}