[committed] MIPS/BFD: Use helper function for LO relocation sign-extension

Maciej W. Rozycki macro@orcam.me.uk
Sat Jul 12 00:34:35 GMT 2025


A calculation for LO relocations has been recently fixed with commit 
ce08b3bb19b3 ("MIPS/BFD: Fix RELA handling of borrow in the generic 
linker"), however it was missed that for the updated arithmetic we 
already have a helper function available, `_bfd_mips_elf_sign_extend'. 

Replace the open-coded statement then with an equivalent call to said 
function.  No functional change.
---
 bfd/elfxx-mips.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

binutils-mips-bfd-elf-lo16-reloc-sign-extend.diff
Index: binutils-gdb/bfd/elfxx-mips.c
===================================================================
--- binutils-gdb.orig/bfd/elfxx-mips.c
+++ binutils-gdb/bfd/elfxx-mips.c
@@ -2605,7 +2605,7 @@ _bfd_mips_elf_lo16_reloc (bfd *abfd, are
      and we want to apply (symbol + addend + 0x8000) >> 16 to the
      high insn (the +0x8000 adjusting for when the applied low part is
      negative).  */
-  vallo = ((bfd_get_32 (abfd, location) & 0xffff) ^ 0x8000) - 0x8000;
+  vallo = _bfd_mips_elf_sign_extend (bfd_get_32 (abfd, location) & 0xffff, 16);
   _bfd_mips_elf_reloc_shuffle (abfd, reloc_entry->howto->type, false,
 			       location);
 


More information about the Binutils mailing list