From: Neal Frager Date: Wed, 27 Sep 2023 12:49:18 +0000 (+0100) Subject: bfd: microblaze: Fix bug in TLSTPREL Relocation X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=54fd15eef722f56383a5a3a978219e11d3d0be15;p=binutils-gdb.git bfd: microblaze: Fix bug in TLSTPREL Relocation Fixed the problem related to the fixup/relocations TLSTPREL. When the fixup is applied the addend is not added at the correct offset of the instruction. The offset is hard coded considering its big endian and it fails for Little endian. This patch allows support for both big & little-endian compilers. This patch has been tested for years of AMD Xilinx Yocto releases as part of the following patch set: https://github.com/Xilinx/meta-xilinx/tree/master/meta-microblaze/recipes-devtools/binutils/binutils Signed-off-by: nagaraju Signed-off-by: Neal Frager --- diff --git a/bfd/elf32-microblaze.c b/bfd/elf32-microblaze.c index bbc70fdf4e3..a7e81c70fc8 100644 --- a/bfd/elf32-microblaze.c +++ b/bfd/elf32-microblaze.c @@ -1467,9 +1467,9 @@ microblaze_elf_relocate_section (bfd *output_bfd, relocation += addend; relocation -= dtprel_base(info); bfd_put_16 (input_bfd, (relocation >> 16) & 0xffff, - contents + offset + 2); + contents + offset + endian); bfd_put_16 (input_bfd, relocation & 0xffff, - contents + offset + 2 + INST_WORD_SIZE); + contents + offset + endian + INST_WORD_SIZE); break; case (int) R_MICROBLAZE_TEXTREL_64: case (int) R_MICROBLAZE_TEXTREL_32_LO: