Browse Source

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

same way as other relocations.
insight_6_8-branch
Bob Wilson 19 years ago
parent
commit
dc96b90a10
  1. 5
      bfd/ChangeLog
  2. 42
      bfd/elf32-xtensa.c

5
bfd/ChangeLog

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

42
bfd/elf32-xtensa.c

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

Loading…
Cancel
Save