PR ld/14902

* elf32-h8300.c (elf32_h8_relax_delete_bytes): Fix off by one
	errors adjusting relocs and symbols.
This commit is contained in:
Nick Clifton 2013-03-22 15:53:36 +00:00
parent 3e74e146f2
commit 5c0df4846e
2 changed files with 11 additions and 6 deletions

View file

@ -1,3 +1,9 @@
2013-03-22 Achille Fouilleul <achille.fouilleul+binutils@gadz.org>
PR ld/14902
* elf32-h8300.c (elf32_h8_relax_delete_bytes): Fix off by one
errors adjusting relocs and symbols.
2013-03-21 Michael Schewe <michael.schewe@gmx.net>
* elf32-h8300 (h8_relax_section): Add new relaxation of mov

View file

@ -1518,7 +1518,7 @@ elf32_h8_relax_delete_bytes (bfd *abfd, asection *sec, bfd_vma addr, int count)
{
/* Get the new reloc address. */
if ((irel->r_offset > addr
&& irel->r_offset < toaddr))
&& irel->r_offset <= toaddr))
irel->r_offset -= count;
}
@ -1530,7 +1530,7 @@ elf32_h8_relax_delete_bytes (bfd *abfd, asection *sec, bfd_vma addr, int count)
{
if (isym->st_shndx == sec_shndx
&& isym->st_value > addr
&& isym->st_value < toaddr)
&& isym->st_value <= toaddr)
isym->st_value -= count;
}
@ -1542,14 +1542,13 @@ elf32_h8_relax_delete_bytes (bfd *abfd, asection *sec, bfd_vma addr, int count)
for (; sym_hashes < end_hashes; sym_hashes++)
{
struct elf_link_hash_entry *sym_hash = *sym_hashes;
if ((sym_hash->root.type == bfd_link_hash_defined
|| sym_hash->root.type == bfd_link_hash_defweak)
&& sym_hash->root.u.def.section == sec
&& sym_hash->root.u.def.value > addr
&& sym_hash->root.u.def.value < toaddr)
{
sym_hash->root.u.def.value -= count;
}
&& sym_hash->root.u.def.value <= toaddr)
sym_hash->root.u.def.value -= count;
}
return TRUE;