aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>1999-01-27 12:17:28 +0000
committerNick Clifton <nickc@redhat.com>1999-01-27 12:17:28 +0000
commitd423a5cadc15c7b2f717861fa46531c6347dcc1f (patch)
treee8d3508b3389ae2eb924aa26286492647668881c
parent57bb3453c4b3731e6e8db3a42445ff557c439813 (diff)
downloadgdb-d423a5cadc15c7b2f717861fa46531c6347dcc1f.zip
gdb-d423a5cadc15c7b2f717861fa46531c6347dcc1f.tar.gz
gdb-d423a5cadc15c7b2f717861fa46531c6347dcc1f.tar.bz2
Fix bug in handling R_FR20 relocations.
-rw-r--r--bfd/ChangeLog7
-rw-r--r--bfd/elf32-fr30.c24
2 files changed, 19 insertions, 12 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index b90431a..0958cec 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,10 @@
+1999-01-27 Nick Clifton <nickc@cygnus.com>
+
+ * elf32-fr30.c (fr30_elf_howto_table): Fix name of R_FR30_48
+ relocation.
+ (fr30_final_link_relocate): Use computed value as result of
+ relocation.
+
1999-01-26 Frank Ch. Eigler <fche@cygnus.com>
* binary.c (binary_set_section_contents): Emit warning for
diff --git a/bfd/elf32-fr30.c b/bfd/elf32-fr30.c
index 17bcc98..3cd100f 100644
--- a/bfd/elf32-fr30.c
+++ b/bfd/elf32-fr30.c
@@ -65,7 +65,7 @@ static reloc_howto_type fr30_elf_howto_table [] =
bfd_elf_generic_reloc, /* special_function */
"R_FR30_8", /* name */
true, /* partial_inplace */
- 0x0ff0, /* src_mask */
+ 0x0000, /* src_mask */
0x0ff0, /* dst_mask */
false), /* pcrel_offset */
@@ -80,7 +80,7 @@ static reloc_howto_type fr30_elf_howto_table [] =
fr30_elf_i20_reloc, /* special_function */
"R_FR30_20", /* name */
true, /* partial_inplace */
- 0x00f0ffff, /* src_mask */
+ 0x00000000, /* src_mask */
0x00f0ffff, /* dst_mask */
false), /* pcrel_offset */
@@ -95,7 +95,7 @@ static reloc_howto_type fr30_elf_howto_table [] =
bfd_elf_generic_reloc, /* special_function */
"R_FR30_32", /* name */
true, /* partial_inplace */
- 0xffffffff, /* src_mask */
+ 0x00000000, /* src_mask */
0xffffffff, /* dst_mask */
false), /* pcrel_offset */
@@ -108,9 +108,9 @@ static reloc_howto_type fr30_elf_howto_table [] =
0, /* bitpos */
complain_overflow_bitfield, /* complain_on_overflow */
fr30_elf_i32_reloc, /* special_function */
- "R_FR30_32", /* name */
+ "R_FR30_48", /* name */
true, /* partial_inplace */
- 0xffffffff, /* src_mask */
+ 0x00000000, /* src_mask */
0xffffffff, /* dst_mask */
false), /* pcrel_offset */
@@ -125,7 +125,7 @@ static reloc_howto_type fr30_elf_howto_table [] =
bfd_elf_generic_reloc, /* special_function */
"R_FR30_6_IN_4", /* name */
true, /* partial_inplace */
- 0x00f0, /* src_mask */
+ 0x0000, /* src_mask */
0x00f0, /* dst_mask */
false), /* pcrel_offset */
@@ -140,7 +140,7 @@ static reloc_howto_type fr30_elf_howto_table [] =
bfd_elf_generic_reloc,/* special_function */
"R_FR30_8_IN_8", /* name */
true, /* partial_inplace */
- 0x0ff0, /* src_mask */
+ 0x0000, /* src_mask */
0x0ff0, /* dst_mask */
false), /* pcrel_offset */
@@ -155,7 +155,7 @@ static reloc_howto_type fr30_elf_howto_table [] =
bfd_elf_generic_reloc,/* special_function */
"R_FR30_9_IN_8", /* name */
true, /* partial_inplace */
- 0x0ff0, /* src_mask */
+ 0x0000, /* src_mask */
0x0ff0, /* dst_mask */
false), /* pcrel_offset */
@@ -170,7 +170,7 @@ static reloc_howto_type fr30_elf_howto_table [] =
bfd_elf_generic_reloc,/* special_function */
"R_FR30_10_IN_8", /* name */
true, /* partial_inplace */
- 0x0ff0, /* src_mask */
+ 0x0000, /* src_mask */
0x0ff0, /* dst_mask */
false), /* pcrel_offset */
@@ -185,7 +185,7 @@ static reloc_howto_type fr30_elf_howto_table [] =
bfd_elf_generic_reloc, /* special_function */
"R_FR30_9_PCREL", /* name */
false, /* partial_inplace */
- 0x00ff, /* src_mask */
+ 0x0000, /* src_mask */
0x00ff, /* dst_mask */
false), /* pcrel_offset */
@@ -200,7 +200,7 @@ static reloc_howto_type fr30_elf_howto_table [] =
bfd_elf_generic_reloc, /* special_function */
"R_FR30_12_PCREL", /* name */
false, /* partial_inplace */
- 0x07ff, /* src_mask */
+ 0x0000, /* src_mask */
0x07ff, /* dst_mask */
false), /* pcrel_offset */
};
@@ -372,7 +372,7 @@ fr30_final_link_relocate (howto, input_bfd, input_section, contents, rel, reloca
x = bfd_get_32 (input_bfd, contents);
x = (x & 0xff0f0000) | (relocation & 0x0000ffff) | ((relocation & 0x000f0000) << 4);
- bfd_put_32 (input_bfd, relocation, contents);
+ bfd_put_32 (input_bfd, x, contents);
break;
case R_FR30_48: