PR 3298 Fix SuperH relaxation overriding wrong intruction

when doing load store switching it wrongly adjusts the address of the
R_SH_USES reloc and not the actual offset from that instruction. This is
an issue if the pc-relative function call relaxation gets done in a
later pass wich will result in overriding the wrong instruction.
This commit is contained in:
QBos07
2025-05-09 13:49:44 +00:00
committed by Alan Modra
parent 689f3edfb8
commit 6cd9586f7f

View File

@@ -1429,9 +1429,9 @@ sh_elf_swap_insns (bfd *abfd, asection *sec, void *relocs,
off = irel->r_offset + 4 + irel->r_addend;
if (off == addr)
irel->r_offset += 2;
irel->r_addend += 2;
else if (off == addr + 2)
irel->r_offset -= 2;
irel->r_addend -= 2;
}
if (irel->r_offset == addr)