From a48c6a54fc5989c07dcb5b75fec5a50391f5a11e Mon Sep 17 00:00:00 2001 From: Jason Eckhardt Date: Mon, 12 May 2003 03:08:02 +0000 Subject: [PATCH] 2003-05-11 Jason Eckhardt * bfd/elf32-i860.c (elf32_i860_relocate_highadj): Properly adjust upper bits. (elf32_i860_relocate_splitn): Obtain upper 5 bits from the proper place. (elf32_i860_relocate_pc16): Obtain upper 5 bits from the proper place. --- bfd/ChangeLog | 9 +++++++++ bfd/elf32-i860.c | 6 +++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 3517dd46bd..105a494cd9 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,12 @@ +2003-05-11 Jason Eckhardt + + * elf32-i860.c (elf32_i860_relocate_highadj): Properly + adjust upper bits. + (elf32_i860_relocate_splitn): Obtain upper 5 bits from the + proper place. + (elf32_i860_relocate_pc16): Obtain upper 5 bits from the + proper place. + 2003-05-11 Andreas Schwab * elf32-m68k.c (elf_m68k_relocate_section): Replace ugly diff --git a/bfd/elf32-i860.c b/bfd/elf32-i860.c index d24a29d8a6..7a132c6d69 100644 --- a/bfd/elf32-i860.c +++ b/bfd/elf32-i860.c @@ -718,7 +718,7 @@ elf32_i860_relocate_splitn (input_bfd, rello, contents, value) value += rello->r_addend; /* Separate the fields and insert. */ - value = (((value & 0xf8) << 5) | (value & 0x7ff)) & howto->dst_mask; + value = (((value & 0xf800) << 5) | (value & 0x7ff)) & howto->dst_mask; insn = (insn & ~howto->dst_mask) | value; bfd_put_32 (input_bfd, insn, contents + rello->r_offset); @@ -750,7 +750,7 @@ elf32_i860_relocate_pc16 (input_bfd, input_section, rello, contents, value) value += rello->r_addend; /* Separate the fields and insert. */ - value = (((value & 0xf8) << 5) | (value & 0x7ff)) & howto->dst_mask; + value = (((value & 0xf800) << 5) | (value & 0x7ff)) & howto->dst_mask; insn = (insn & ~howto->dst_mask) | value; bfd_put_32 (input_bfd, insn, contents + rello->r_offset); @@ -802,8 +802,8 @@ elf32_i860_relocate_highadj (input_bfd, rel, contents, value) insn = bfd_get_32 (input_bfd, contents + rel->r_offset); - value += ((rel->r_addend & 0x8000) << 1); value += rel->r_addend; + value += (value & 0x8000) << 1; value = ((value >> 16) & 0xffff); insn = (insn & 0xffff0000) | value;