This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: [RFA] breakpoint.c, scanning epilogue if frame chain is invalid
- From: Eli Zaretskii <eliz at elta dot co dot il>
- To: Corinna Vinschen <vinschen at redhat dot com>
- Cc: gdb-patches at sources dot redhat dot com
- Date: 03 Sep 2003 13:28:43 +0200
- Subject: Re: [RFA] breakpoint.c, scanning epilogue if frame chain is invalid
- References: <20030903093815.GQ1859@cygbert.vinschen.de>
- Reply-to: Eli Zaretskii <eliz at elta dot co dot il>
> Date: Wed, 3 Sep 2003 11:38:15 +0200
> From: Corinna Vinschen <vinschen@redhat.com>
>
> - if (within_current_scope && fr == get_current_frame ()
> + if ((!within_current_scope || fr == get_current_frame ())
> && gdbarch_in_function_epilogue_p (current_gdbarch, read_pc ()))
> return WP_VALUE_NOT_CHANGED;
> if (within_current_scope)
> [...]
> The above patch is basically this: If we couldn't find the watchpoint
> frame, at least try to find out if PC is just in an epilogue. If so,
> it's probably the cause of failing to find the watchpoint frame so just
> leave the watchpoint alone until we're on firmer ground again.
I'm not sure I understand why did you change
within_current_scope && fr == get_current_frame ()
into
(!within_current_scope || fr == get_current_frame ())
It doesn't seem to follow from the verbal description of the decision
you'd like the code to make. Perhaps I'm missing something, so could
you please elaborate how the verbal description translates into the
code?