MIPS: MIPS16 and microMIPS PLT entry support for binutils 2.24
This is a backport from trunk to handle MIPS16 and microMIPS code in
PLT entries as produced by LD from binutils version 2.24 onwards. This
feature requires explicit support in GDB for correct operation when
debugging through function calls made via the PLT.
bfd/
* elfxx-mips.h (_bfd_mips_elf_get_synthetic_symtab): New
prototype.
* elf32-mips.c (elf_backend_plt_sym_val): Remove macro.
(bfd_elf32_get_synthetic_symtab): New macro.
* elfxx-mips.c (micromips_o32_exec_plt0_entry): New variable.
(micromips_insn32_o32_exec_plt0_entry): Likewise.
(mips16_o32_exec_plt_entry): Likewise.
(micromips_o32_exec_plt_entry): Likewise.
(micromips_insn32_o32_exec_plt_entry): Likewise.
(_bfd_mips_elf_get_synthetic_symtab): New
function.
gdb/
* mips-tdep.c (mips_elf_make_msymbol_special): Handle MIPS16 and
microMIPS synthetic symbols.
opcodes/
* mips-dis.c (is_mips16_plt_tail): New function.
(print_insn_mips16): Handle MIPS16 PLT entry's GOT slot address
word.
(is_compressed_mode_p): Handle MIPS16/microMIPS PLT entries.