MIPS: Fix addend handling with rela R_MIPS16_GOT16 and R_MICROMIPS_GOT16

In rela howtos these relocations should not be using
_bfd_mips_elf_got16_reloc.  That special function is for extracting
addends from section contents, and only for that (ie. it doesn't
subtract gp).  Make these rela howtos like the corresponding
R_MIPS_GOT16 rela howto.

	* elf64-mips.c (mips16_elf64_howto_table_rela <R_MIPS16_GOT16>):
	Use _bfd_mips_elf_generic_reloc.
	(micromips_elf64_howto_table_rela <R_MICROMIPS_GOT16>): Likewise.
	* elfn32-mips.c (elf_mips16_howto_table_rela <R_MIPS16_GOT16>):
	Likewise.
	(elf_micromips_howto_table_rela <R_MICROMIPS_GOT16>): Likewise.
This commit is contained in:
Alan Modra
2025-07-01 14:05:07 +01:00
committed by Maciej W. Rozycki
parent e65d831ce1
commit a17dd69b33
2 changed files with 4 additions and 4 deletions

View File

@@ -1931,7 +1931,7 @@ static reloc_howto_type mips16_elf64_howto_table_rela[] =
false, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
_bfd_mips_elf_got16_reloc, /* special_function */
_bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS16_GOT16", /* name */
false, /* partial_inplace */
0, /* src_mask */
@@ -2675,7 +2675,7 @@ static reloc_howto_type micromips_elf64_howto_table_rela[] =
false, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
_bfd_mips_elf_got16_reloc, /* special_function */
_bfd_mips_elf_generic_reloc, /* special_function */
"R_MICROMIPS_GOT16", /* name */
false, /* partial_inplace */
0, /* src_mask */

View File

@@ -1911,7 +1911,7 @@ static reloc_howto_type elf_mips16_howto_table_rela[] =
false, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
_bfd_mips_elf_got16_reloc, /* special_function */
_bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS16_GOT16", /* name */
false, /* partial_inplace */
0, /* src_mask */
@@ -2655,7 +2655,7 @@ static reloc_howto_type elf_micromips_howto_table_rela[] =
false, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
_bfd_mips_elf_got16_reloc, /* special_function */
_bfd_mips_elf_generic_reloc, /* special_function */
"R_MICROMIPS_GOT16", /* name */
false, /* partial_inplace */
0, /* src_mask */