BFD_RELOC_MIPS_16

Alan Modra amodra@gmail.com
Thu Aug 4 03:37:23 GMT 2022


On Wed, Aug 03, 2022 at 12:59:09AM +0100, Maciej W. Rozycki wrote:
> On Tue, 14 Jun 2022, Alan Modra via Binutils wrote:
> 
> > time.  Like BFD_RELOC_8, BFD_RELOC_16 now has no corresponding object
> > file relocation, and thus .half, .hword, .short and .dc.w must be
> > resolved at assembly time.
> 
>  That should be R_MIPS_REL16 AFAICT, reloc #33 according to MIPS NewABI 
> documentation[1]:
> 
>     Name      Value  Field   Symbol  Calculation
> R_MIPS_REL16   33    V-hw16   any        S+A

Huh.  So R_MIPS_REL16 isn't a pc-relative reloc as the name might
indicate.  I'll apply the following.

	* elf64-mips.c (mips_reloc_map): Map BFD_RELOC_16 to R_MIPS_REL16.
	* elfn32-mips.c (mips_reloc_map): Likewise.

diff --git a/bfd/elf64-mips.c b/bfd/elf64-mips.c
index 8097e7cd49d..c2c6604ef68 100644
--- a/bfd/elf64-mips.c
+++ b/bfd/elf64-mips.c
@@ -3684,6 +3684,7 @@ static const struct elf_reloc_map mips_reloc_map[] =
 {
   { BFD_RELOC_NONE, R_MIPS_NONE },
   { BFD_RELOC_MIPS_16, R_MIPS_16 },
+  { BFD_RELOC_16, R_MIPS_REL16 },
   { BFD_RELOC_32, R_MIPS_32 },
   /* There is no BFD reloc for R_MIPS_REL32.  */
   { BFD_RELOC_64, R_MIPS_64 },
diff --git a/bfd/elfn32-mips.c b/bfd/elfn32-mips.c
index 7cae394bfa0..af984545796 100644
--- a/bfd/elfn32-mips.c
+++ b/bfd/elfn32-mips.c
@@ -3514,6 +3514,7 @@ static const struct elf_reloc_map mips_reloc_map[] =
 {
   { BFD_RELOC_NONE, R_MIPS_NONE },
   { BFD_RELOC_MIPS_16, R_MIPS_16 },
+  { BFD_RELOC_16, R_MIPS_REL16 },
   { BFD_RELOC_32, R_MIPS_32 },
   /* There is no BFD reloc for R_MIPS_REL32.  */
   { BFD_RELOC_CTOR, R_MIPS_32 },


-- 
Alan Modra
Australia Development Lab, IBM


More information about the Binutils mailing list