diff options
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/ChangeLog | 5 | ||||
-rw-r--r-- | bfd/elfnn-loongarch.c | 22 |
2 files changed, 15 insertions, 12 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index b88f33b..acbb8f9 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2022-07-26 Nick Clifton <nickc@redhat.com> + + * elfnn-loongarch.c (loongarch_elf_relocate_section): Fix + indentation. + 2022-07-08 Nick Clifton <nickc@redhat.com> * 2.39 branch created. diff --git a/bfd/elfnn-loongarch.c b/bfd/elfnn-loongarch.c index 4efe3d9..99d889a 100644 --- a/bfd/elfnn-loongarch.c +++ b/bfd/elfnn-loongarch.c @@ -3089,19 +3089,17 @@ loongarch_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info, else relocation += rel->r_addend; + relocation &= 0xfff; + /* Signed extend. */ + relocation = (relocation ^ 0x800) - 0x800; + + /* For 2G jump, generate pcalau12i, jirl. */ + /* If use jirl, turns to R_LARCH_B16. */ + uint32_t insn = bfd_get (32, input_bfd, contents + rel->r_offset); + if ((insn & 0x4c000000) == 0x4c000000) { - relocation &= 0xfff; - /* Signed extend. */ - relocation = (relocation ^ 0x800) - 0x800; - - /* For 2G jump, generate pcalau12i, jirl. */ - /* If use jirl, turns to R_LARCH_B16. */ - uint32_t insn = bfd_get (32, input_bfd, contents + rel->r_offset); - if ((insn & 0x4c000000) == 0x4c000000) - { - rel->r_info = ELFNN_R_INFO (r_symndx, R_LARCH_B16); - howto = loongarch_elf_rtype_to_howto (input_bfd, R_LARCH_B16); - } + rel->r_info = ELFNN_R_INFO (r_symndx, R_LARCH_B16); + howto = loongarch_elf_rtype_to_howto (input_bfd, R_LARCH_B16); } break; |