summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>1999-06-02 18:17:59 +0000
committerMark Mitchell <mark@codesourcery.com>1999-06-02 18:17:59 +0000
commitd2905643ff04ca59990fea39f2f4ba046fbd41b9 (patch)
tree43e110eb6cf21179d6279651d60ee2711a10094e
parent42fdc50906dc55ae7d565b2981ed7ab9014c3b67 (diff)
downloadbinutils-d2905643ff04ca59990fea39f2f4ba046fbd41b9.tar.gz
binutils-d2905643ff04ca59990fea39f2f4ba046fbd41b9.tar.bz2
binutils-d2905643ff04ca59990fea39f2f4ba046fbd41b9.zip
* elf32-mips.c (elf_mips_howto_table): Add R_MIPS_JALR.
* elf64-mips.c (mips_elf64_howto_table_rel): Likewise. (mips_elf64_howto_table_rela): Likewise.
-rw-r--r--bfd/elf32-mips.c18
-rw-r--r--bfd/elf64-mips.c36
2 files changed, 51 insertions, 3 deletions
diff --git a/bfd/elf32-mips.c b/bfd/elf32-mips.c
index 6828ba00041..0ec4fa6ea7d 100644
--- a/bfd/elf32-mips.c
+++ b/bfd/elf32-mips.c
@@ -702,7 +702,23 @@ static reloc_howto_type elf_mips_howto_table[] =
{ R_MIPS_REL16 },
{ R_MIPS_ADD_IMMEDIATE },
{ R_MIPS_PJUMP },
- { R_MIPS_RELGOT }
+ { R_MIPS_RELGOT },
+
+ /* Protected jump conversion. This is an optimization hint. No
+ relocation is required for correctness. */
+ HOWTO (R_MIPS_JALR, /* type */
+ 0, /* rightshift */
+ 0, /* size (0 = byte, 1 = short, 2 = long) */
+ 0, /* bitsize */
+ false, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_dont, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_MIPS_JALR", /* name */
+ false, /* partial_inplace */
+ 0x00000000, /* src_mask */
+ 0x00000000, /* dst_mask */
+ false), /* pcrel_offset */
};
/* The reloc used for BFD_RELOC_CTOR when doing a 64 bit link. This
diff --git a/bfd/elf64-mips.c b/bfd/elf64-mips.c
index 88e4c7feee8..36e607508d1 100644
--- a/bfd/elf64-mips.c
+++ b/bfd/elf64-mips.c
@@ -614,7 +614,23 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
false, /* partial_inplace */
0, /* src_mask */
0, /* dst_mask */
- false) /* pcrel_offset */
+ false), /* pcrel_offset */
+
+ /* Protected jump conversion. This is an optimization hint. No
+ relocation is required for correctness. */
+ HOWTO (R_MIPS_JALR, /* type */
+ 0, /* rightshift */
+ 0, /* size (0 = byte, 1 = short, 2 = long) */
+ 0, /* bitsize */
+ false, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_dont, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_MIPS_JALR", /* name */
+ false, /* partial_inplace */
+ 0x00000000, /* src_mask */
+ 0x00000000, /* dst_mask */
+ false), /* pcrel_offset */
};
/* The relocation table used for SHT_RELA sections. */
@@ -1152,7 +1168,23 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
false, /* partial_inplace */
0, /* src_mask */
0, /* dst_mask */
- false) /* pcrel_offset */
+ false), /* pcrel_offset */
+
+ /* Protected jump conversion. This is an optimization hint. No
+ relocation is required for correctness. */
+ HOWTO (R_MIPS_JALR, /* type */
+ 0, /* rightshift */
+ 0, /* size (0 = byte, 1 = short, 2 = long) */
+ 0, /* bitsize */
+ false, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_dont, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_MIPS_JALR", /* name */
+ false, /* partial_inplace */
+ 0x00000000, /* src_mask */
+ 0x00000000, /* dst_mask */
+ false), /* pcrel_offset */
};
/* Swap in a MIPS 64-bit Rel reloc. */