[PATCH] [RISCV] Support subtraction of .uleb128.
Kuan-Lin Chen
kuanlinchentw@gmail.com
Mon Jan 6 08:18:00 GMT 2020
Hi,
The patch is fixed some problems as your comments in previous mails.
>The assumption that the uleb128 address size can only decrease with relaxation is true only if both addresses are in the same section.
I found this kind of subtract is banned in cvt_frag_to_fill for
rs_leb128. Therefore, it doesn't have to restrict by ourselves.
Thanks for your reviews.
Nelson Chu <nelson.chu@sifive.com> 於 2019年12月18日 週三 上午9:50寫道:
>
> There is one minor thing. Maciej has pointed out before that it's
> better done with one the percent-codes to `_bfd_error_handler' rather
> than aborting the link right away, so that any further link errors are
> also reported and you don't have to shake them out one by one. So
> report the relocation error via linker's callback function seems to be
> better. I think maybe we can report a dangerous relocation for the
> mismatched R_RISCV_SET_ULEB128 and R_RISCV_SUB_ULEB128. What I meant
> is that,
>
> + case R_RISCV_SET_ULEB128:
> ...
> + else
> + {
> + if (uleb128_rel->r_offset != rel->r_offset)
> + {
> - (*_bfd_error_handler) (_("%pB: relocation %s mismatched. "),
> - input_bfd, howto->name);
> - bfd_set_error (bfd_error_bad_value);
> + msg = ("R_RISCV_SET_ULEB128 and R_RISCV_SUB_ULEB128 are mismatched. ");
> + r = bfd_reloc_dangerous;
> + break;
> + }
> + relocation = relocation - uleb128_vma;
> + uleb128_rel = NULL;
> + break;
> + }
> +
> + case R_RISCV_SUB_ULEB128:
> + if (uleb128_rel)
> + {
> + if (uleb128_rel->r_offset != rel->r_offset)
> + {
> - (*_bfd_error_handler) (_("%pB: relocation %s mismatched. "),
> - input_bfd, howto->name);
> - bfd_set_error (bfd_error_bad_value);
> + msg = ("R_RISCV_SET_ULEB128 and R_RISCV_SUB_ULEB128 are mismatched. ");
> + r = bfd_reloc_dangerous;
> + break;
> + }
> + relocation = uleb128_vma - relocation;
> + uleb128_rel = NULL;
> + break;
> + }
>
> Thanks and regards
> Nelson
--
Best regards,
Kuan-Lin Chen.
kuanlinchentw@gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-RISC-V-Support-subtraction-of-.uleb128.patch
Type: application/octet-stream
Size: 14721 bytes
Desc: not available
URL: <https://sourceware.org/pipermail/binutils/attachments/20200106/bd5172f6/attachment.obj>
More information about the Binutils
mailing list