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