* reloc.c (_bfd_relocate_contents): Permit bitfield relocations to

wrap if the relocation covers the high bit of an address.
This commit is contained in:
Ian Lance Taylor 1999-06-11 20:23:58 +00:00
parent 76171f81c7
commit 44257b8b9d
2 changed files with 12 additions and 0 deletions

View File

@ -1,5 +1,8 @@
1999-06-11 Ian Lance Taylor <ian@zembu.com>
* reloc.c (_bfd_relocate_contents): Permit bitfield relocations to
wrap if the relocation covers the high bit of an address.
* dwarf2.c (decode_line_info): Remove unused variable first_time.
1999-06-10 Jakub Jelinek <jj@ultra.linux.cz>

View File

@ -1560,6 +1560,15 @@ _bfd_relocate_contents (howto, input_bfd, relocation, location)
/* We just assume (b & ~ fieldmask) == 0. */
/* We explicitly permit wrap around if this relocation
covers the high bit of an address. The Linux kernel
relies on it, and it is the only way to write assembler
code which can run when loaded at a location 0x80000000
away from the location at which it is linked. */
if (howto->bitsize + rightshift
== bfd_arch_bits_per_address (input_bfd))
break;
sum = a + b;
if (sum < a || (sum & ~ fieldmask) != 0)
{