[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