[haiku-commits] Re: r39754 - haiku/trunk/src/apps/debugger/dwarf

  • From: Ingo Weinhold <ingo_weinhold@xxxxxx>
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Tue, 07 Dec 2010 13:25:35 +0100

On 2010-12-07 at 01:06:55 [+0100], anevilyak@xxxxxxxxx wrote:
> Author: anevilyak
> Date: 2010-12-07 01:06:55 +0100 (Tue, 07 Dec 2010)
> New Revision: 39754
> Changeset: http://dev.haiku-os.org/changeset/39754
> 
> Modified:
>    haiku/trunk/src/apps/debugger/dwarf/DwarfFile.cpp
> Log:
> When parsing the CIE, the offset being passed to 
> _ParseFrameInfoInstructions() was not taking the initial CIE offset into 
> account. This led to completely the wrong instructions being parsed, which 
> in turn resulted in stack frames for some functions failing to unwind 
> correctly.
> 
> 
> Modified: haiku/trunk/src/apps/debugger/dwarf/DwarfFile.cpp
> ===================================================================
> --- haiku/trunk/src/apps/debugger/dwarf/DwarfFile.cpp    2010-12-06 
> 23:58:48 UTC (rev 39753)
> +++ haiku/trunk/src/apps/debugger/dwarf/DwarfFile.cpp    2010-12-07 
> 00:06:55 UTC (rev 39754)
> @@ -1613,8 +1613,8 @@
>      if (remaining < 0)
>          return B_BAD_DATA;
>  
> -    return _ParseFrameInfoInstructions(unit, context, dataReader.Offset(),
> -        remaining);
> +    return _ParseFrameInfoInstructions(unit, context, cieOffset
> +        + dataReader.Offset(), remaining);
>  }

That certainly explains why it worked in many cases, as there's often only 
one CIE at offset 0.

BTW, for aesthetical/readability reasons I would try to avoid breaking lines 
within function arguments.

CU, Ingo

Other related posts: