This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] [RISCV] Support subtraction of .uleb128.


Hi,

Sorry, I miss the test case in the previous email.
So I resend this mail.

Kuan-Lin Chen <kuanlinchentw@gmail.com> 於 2020年1月6日 週一 下午4:18寫道:
>
> 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



-- 
Best regards,
Kuan-Lin Chen.
kuanlinchentw@gmail.com

Attachment: 0001-RISC-V-Support-subtraction-of-.uleb128.patch
Description: Binary data


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]