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:
parent
3e74e146f2
commit
5c0df4846e
2 changed files with 11 additions and 6 deletions
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue