mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-28 23:39:35 +08:00
* 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:
@ -1,5 +1,8 @@
|
|||||||
1999-06-11 Ian Lance Taylor <ian@zembu.com>
|
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.
|
* dwarf2.c (decode_line_info): Remove unused variable first_time.
|
||||||
|
|
||||||
1999-06-10 Jakub Jelinek <jj@ultra.linux.cz>
|
1999-06-10 Jakub Jelinek <jj@ultra.linux.cz>
|
||||||
|
@ -1560,6 +1560,15 @@ _bfd_relocate_contents (howto, input_bfd, relocation, location)
|
|||||||
|
|
||||||
/* We just assume (b & ~ fieldmask) == 0. */
|
/* 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;
|
sum = a + b;
|
||||||
if (sum < a || (sum & ~ fieldmask) != 0)
|
if (sum < a || (sum & ~ fieldmask) != 0)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user