It might due to
  DW_CFA_expression: r6 (esi) (DW_OP_breg5: -8)
  DW_CFA_expression: r3 (ebx) (DW_OP_breg5: -12)
After defining reg via CFA instead of r5, we got less failure.

Thanks - Joey

-----Original Message-----
From: Daniel Jacobowitz [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, June 25, 2008 10:00 PM
To: H.J. Lu
Cc: Ye, Joey; gcc@gcc.gnu.org; Guo, Xuepeng
Subject: Re: CFA expression failure

On Tue, Jun 24, 2008 at 08:40:18PM -0700, H.J. Lu wrote:
> I think the problem is in uw_update_context_1.  REG_SAVED_EXP
> and REG_SAVED_VAL_EXP may use other registers as shown above:
> 
>    DW_CFA_expression: r6 (esi) (DW_OP_breg5: -8)
> 
> They should be handle last.  I am testing this patch. Does it
> make senses?

I think that rather than delaying such expressions, you need to
evaluate into a temporary context.  DW_OP_breg5 means the current
frame's %ebp; DW_CFA_expression: r5 describes the location of the
previous frame's %ebp.  They're different registers.  Otherwise this
is going to be too order-sensitive.

-- 
Daniel Jacobowitz
CodeSourcery

Reply via email to