mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-26 13:56:22 +08:00
bfd/
* elf32-mips.c (elf_mips_howto_table_rel): Use rightshift 2 for R_MIPS_PC16. (mips_reloc_map): Map BFD_RELOC_16_PCREL_S2 to R_MIPS_PC16. (bfd_elf32_bfd_reloc_type_lookup): Don't handle BFD_RELOC_16_PCREL_S2. * elf64-mips.c (mips_elf64_howto_table_rel): Use rightshift 2 for R_MIPS_PC16. (mips_elf64_howto_table_rela): Likewise. (mips_reloc_map): Map BFD_RELOC_16_PCREL_S2 to R_MIPS_PC16. (bfd_elf64_bfd_reloc_type_lookup): Don't handle BFD_RELOC_16_PCREL_S2. * elfn32-mips.c (elf_mips_howto_table_rel): Use rightshift 2 for R_MIPS_PC16. (elf_mips_howto_table_rela): Likewise. (mips_reloc_map): Map BFD_RELOC_16_PCREL_S2 to R_MIPS_PC16. (bfd_elf32_bfd_reloc_type_lookup): Don't handle BFD_RELOC_16_PCREL_S2. * elfxx-mips.c: Formatting fixes. (mips_elf_calculate_relocation): Handle R_MIPS_GNU_REL16_S2 and R_MIPS_PC16 identically. gas/ * config/tc-mips.c (append_insn): Handle BFD_RELOC_16_PCREL_S2. (macro_build): Complain for invalid branch displacements. (mips_validate_fix): Delete. (md_apply_fix): Re-add pcrel support for branches. Use consistent text for misaligned branch targets. (tc_gen_reloc: Re-add pcrel support for branches. Handle strange BFD pcrel processing. Remove error for unresolved branches. * config/tc-mips.h (TC_VALIDATE_FIX, mips_validate_fix): Delete. gas/testsuite/ * gas/mips/bge.d, gas/mips/bge.s, gas/mips/bgeu.d, gas/mips/bgeu.s, gas/mips/blt.d, gas/mips/blt.s, gas/mips/bltu.d, gas/mips/bltu.s: Reactivate external branch tests. * gas/mips/branch-misc-2.d, gas/mips/branch-misc-2pic.d, gas/mips/branch-misc-2-64.d, gas/mips/branch-misc-2pic-64.d: New tests. * gas/mips/branch-misc-2.l, gas/mips/branch-misc-2pic.l, gas/testsuite/gas/mips/branch-misc-2pic.s: Remove. * gas/mips/mips.exp: Adjust branch-misc-2 tests. Add 64-bit variants.
This commit is contained in:
@ -257,9 +257,11 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
|
||||
0x0000ffff, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* 16 bit PC relative reference. */
|
||||
/* 16 bit PC relative reference. Note that the ABI document has a typo
|
||||
and claims R_MIPS_PC16 to be not rightshifted, rendering it useless.
|
||||
We do the right thing here. */
|
||||
HOWTO (R_MIPS_PC16, /* type */
|
||||
0, /* rightshift */
|
||||
2, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
16, /* bitsize */
|
||||
TRUE, /* pc_relative */
|
||||
@ -1206,7 +1208,7 @@ static const struct elf_reloc_map mips_reloc_map[] =
|
||||
{ BFD_RELOC_GPREL16, R_MIPS_GPREL16 },
|
||||
{ BFD_RELOC_MIPS_LITERAL, R_MIPS_LITERAL },
|
||||
{ BFD_RELOC_MIPS_GOT16, R_MIPS_GOT16 },
|
||||
{ BFD_RELOC_16_PCREL, R_MIPS_PC16 },
|
||||
{ BFD_RELOC_16_PCREL_S2, R_MIPS_PC16 },
|
||||
{ BFD_RELOC_MIPS_CALL16, R_MIPS_CALL16 },
|
||||
{ BFD_RELOC_GPREL32, R_MIPS_GPREL32 },
|
||||
{ BFD_RELOC_MIPS_GOT_HI16, R_MIPS_GOT_HI16 },
|
||||
@ -1283,8 +1285,6 @@ bfd_elf32_bfd_reloc_type_lookup (bfd *abfd, bfd_reloc_code_real_type code)
|
||||
return &elf_mips_gnu_vtinherit_howto;
|
||||
case BFD_RELOC_VTABLE_ENTRY:
|
||||
return &elf_mips_gnu_vtentry_howto;
|
||||
case BFD_RELOC_16_PCREL_S2:
|
||||
return &elf_mips_gnu_rel16_s2;
|
||||
case BFD_RELOC_32_PCREL:
|
||||
return &elf_mips_gnu_pcrel32;
|
||||
}
|
||||
|
Reference in New Issue
Block a user