aboutsummaryrefslogtreecommitdiff
path: root/bfd/elf32-mcore.c
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>1999-05-15 15:38:13 +0000
committerNick Clifton <nickc@redhat.com>1999-05-15 15:38:13 +0000
commit36797d47c90c84f9e60535885978c1fd71d1aa0a (patch)
tree9a500e3d5524b8a1c1fdba04d5fb2034f05efc74 /bfd/elf32-mcore.c
parent661016bb24e303838a4d3821c2c85e042da085fa (diff)
downloadgdb-36797d47c90c84f9e60535885978c1fd71d1aa0a.zip
gdb-36797d47c90c84f9e60535885978c1fd71d1aa0a.tar.gz
gdb-36797d47c90c84f9e60535885978c1fd71d1aa0a.tar.bz2
Add support for mcore RVA relocs.
Diffstat (limited to 'bfd/elf32-mcore.c')
-rw-r--r--bfd/elf32-mcore.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/bfd/elf32-mcore.c b/bfd/elf32-mcore.c
index ef3a39f..0f78002 100644
--- a/bfd/elf32-mcore.c
+++ b/bfd/elf32-mcore.c
@@ -196,6 +196,20 @@ static reloc_howto_type mcore_elf_howto_raw[] =
0, /* src_mask */
0, /* dst_mask */
false), /* pcrel_offset */
+
+ HOWTO (R_MCORE_RELATIVE, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 32, /* bitsize */
+ false, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_signed, /* complain_on_overflow */
+ NULL, /* special_function */
+ "R_MCORE_RELATIVE", /* name */
+ true, /* partial_inplace */
+ 0xffffffff, /* src_mask */
+ 0xffffffff, /* dst_mask */
+ true) /* pcrel_offset */
};
#ifndef NUM_ELEM
@@ -239,6 +253,7 @@ mcore_elf_reloc_type_lookup (abfd, code)
case BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2: mcore_reloc = R_MCORE_PCRELJSR_IMM11BY2; break;
case BFD_RELOC_VTABLE_INHERIT: mcore_reloc = R_MCORE_GNU_VTINHERIT; break;
case BFD_RELOC_VTABLE_ENTRY: mcore_reloc = R_MCORE_GNU_VTENTRY; break;
+ case BFD_RELOC_RVA: mcore_reloc = R_MCORE_RELATIVE; break;
default:
return (reloc_howto_type *)NULL;
}
@@ -532,9 +547,6 @@ mcore_elf_relocate_section (output_bfd, info, input_bfd, input_section,
switch (r_type)
{
default:
- case R_MCORE_PCRELIMM8BY4:
- case R_MCORE_PCRELIMM11BY2:
- case R_MCORE_PCRELIMM4BY2:
break;
case R_MCORE_PCRELJSR_IMM11BY2: