Check for overflow on R_ARM_PC24 relocs.

This commit is contained in:
Nick Clifton 1999-08-11 10:56:35 +00:00
parent b100be6695
commit 230801466a
2 changed files with 14 additions and 3 deletions

View file

@ -1,3 +1,8 @@
1999-08-11 Robin Farine <advanc@dial.eunet.ch>
* elf32-arm.h (elf32_arm_final_link_relocate): Check for overflow
in R_ARM_PC24 relocs.
Tue Aug 10 12:48:09 1999 Jeffrey A Law (law@cygnus.com)
* elf-hppa.h (elf_hppa_fake_sections): New function.

View file

@ -1223,10 +1223,16 @@ elf32_arm_final_link_relocate (howto, input_bfd, output_bfd,
value -= 8;
}
}
/* Perform a signed range check. */
signed_addend = value;
signed_addend >>= howto->rightshift;
if (signed_addend > ((bfd_signed_vma)(howto->dst_mask >> 1))
|| signed_addend < - ((bfd_signed_vma) ((howto->dst_mask + 1) >> 1)))
return bfd_reloc_overflow;
value >>= howto->rightshift;
value &= howto->dst_mask;
value |= (bfd_get_32 (input_bfd, hit_data) & (~ howto->dst_mask));
value = (signed_addend & howto->dst_mask)
| (bfd_get_32 (input_bfd, hit_data) & (~ howto->dst_mask));
break;
case R_ARM_ABS32: