Hi Omar,

On Tue, May 04, 2021 at 02:18:45PM -0700, Omar Sandoval wrote:
> On Sat, May 01, 2021 at 06:03:37PM +0200, Mark Wielaard wrote:
> > On Sat, 2021-05-01 at 17:59 +0200, Mark Wielaard wrote:
> > > There is __libdw_form_val_compute_len which already handles
> > > DW_FORM_indirect:
> > > 
> > >     case DW_FORM_indirect:
> > >       get_uleb128 (u128, valp, endp);
> > >       // XXX Is this really correct?
> > >       result = __libdw_form_val_len (cu, u128, valp);
> > >       if (result != (size_t) -1)
> > >         result += valp - startp;
> > >       else
> > >         return (size_t) -1;
> > >       break;
> > > 
> > > I believe the XXX question can be answered with: Yes, the result is the
> > > size of the actual FORM data plus the size of the uleb128 encoding that
> > > FORM (which is valp - startp). And it probably should check like your
> > > code does that valp != DW_FORM_indirect && valp !=
> > > DW_FORM_implicit_const. I'll sent a patch to do that.
> > 
> > Patch attached.
> 
> The patch looks reasonable to me, Mark, thanks.

Thanks, pushed.

Cheers,

Mark

Reply via email to