diff options
author | Mark Mitchell <mark@codesourcery.com> | 1999-06-02 18:17:59 +0000 |
---|---|---|
committer | Mark Mitchell <mark@codesourcery.com> | 1999-06-02 18:17:59 +0000 |
commit | d2905643ff04ca59990fea39f2f4ba046fbd41b9 (patch) | |
tree | 43e110eb6cf21179d6279651d60ee2711a10094e | |
parent | 42fdc50906dc55ae7d565b2981ed7ab9014c3b67 (diff) | |
download | binutils-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.c | 18 | ||||
-rw-r--r-- | bfd/elf64-mips.c | 36 |
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. */ |