Check for overflow on R_ARM_PC24 relocs.
This commit is contained in:
parent
b100be6695
commit
230801466a
2 changed files with 14 additions and 3 deletions
|
@ -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.
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Add table
Reference in a new issue