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