From: Michael Snyder <msnyder@redhat.com>
To: Elena Zannoni <ezannoni@redhat.com>
Cc: Daniel Jacobowitz <drow@mvista.com>, gdb-patches@sources.redhat.com
Subject: Re: [RFA/PATCH] breakpoint.c: fix until command
Date: Sat, 04 Jan 2003 00:05:00 -0000 [thread overview]
Message-ID: <3E162537.63F529DF@redhat.com> (raw)
In-Reply-To: <15894.9086.849437.238762@localhost.redhat.com>
Elena Zannoni wrote:
>
> Michael Snyder writes:
> > Elena Zannoni wrote:
> > >
> > > Michael Snyder writes:
> >
> > > > If you say "until <line>", and the line is inside the current function,
> > > > you can impose the frame restriction. If the line (or address) is outside
> > > > the current function, or if you give a function name or something else,
> > > > you can't. And I don't think we can code that distinction at runtime.
> > >
> > > I think we should come up with a behavior matrix, something like:
> > >
> > > until:
> > > continue until next source line is reached. If already at the last line
> > > of current function, continue until current frame pops.
> > >
> > > until line:
> > > a. line in current function (1) --> continue until the line is reached.
> >
> > Agreed, with the qualification given.
> >
> > > b. line in function in inner frame --> continue until the line is reached.
> >
> > Agreed.
> >
> > > c. line in function not in inner frame --> continue until current frame pops.
> >
> > Agreed.
> >
> > > (1) However if current function is recursive, a. should become like
> > > b. But we want to enforce a different behavior, because we don't
> > > want to stop in the inner frame.
> >
> > I think this could be stated simply as "continue until the line
> > is reached by the current execution frame".
> >
> > > --> this is the main problem,
> > > because the condition is basically impossible to figure out at run
> > > time.
> >
> > If we can figure it out at runtime, you would agree to it?
> >
> > > until funcname:
> > > d. funcname called from current frame (2) --> continue until func is reached
> >
> > Agreed.
> >
> > > e. funcname not called from current frame --> cont until current frame pops.
> >
> > Agreed.
> >
> > > (2) if current function is recursive and funcame == current function
> > > we want to stop at the next inner invocation of funcname
> >
> > Ow, not obvious. But since it clearly isn't specified now,
> > I suppose we could make up such a stipulation if we choose to.
> > I don't even know what the traditional behavior would be in
> > this case.
> >
> >
> > > The 'continue until current frame pops' behavior is already there. It
> > > always puts another bp_until at the caller.
> >
> > Yep.
> >
> > So AFAICT, we have only one corner case to agree upon.
> > "until factorial".
>
> yes yes yes!
Well then...
1) Use find_pc_partial_function to determine bounds and
distinguish between in-bounds and out-of-bounds locations.
2) For func_start > loc >= func_end, use a frame-relative bp.
3) For func_start == loc or loc < func_start or loc > func_end,
use a frameless bp.
4) document, document, document!
Including the recursive corner case.
Agreed, Elena?
Daniel? Michael?
Anyone else?
next prev parent reply other threads:[~2003-01-04 0:05 UTC|newest]
Thread overview: 61+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-12-20 10:19 Elena Zannoni
2002-12-23 15:55 ` Michael Snyder
2002-12-23 16:13 ` Daniel Jacobowitz
2002-12-23 16:59 ` Michael Snyder
2002-12-23 19:23 ` Daniel Jacobowitz
2003-01-02 20:25 ` Michael Snyder
2003-01-02 20:34 ` Elena Zannoni
2003-01-02 20:40 ` Michael Snyder
2003-01-03 0:12 ` Elena Zannoni
2003-01-03 1:44 ` Michael Snyder
2003-01-03 1:50 ` Daniel Jacobowitz
2003-01-03 2:37 ` Michael Snyder
2003-01-03 14:29 ` Elena Zannoni
2003-01-03 23:51 ` Michael Snyder
2003-01-03 23:53 ` Elena Zannoni
2003-01-04 0:05 ` Michael Snyder [this message]
2003-01-04 1:54 ` Daniel Jacobowitz
2003-01-06 22:06 ` Elena Zannoni
2003-01-07 1:27 ` Michael Snyder
2003-01-07 1:45 ` Elena Zannoni
2003-01-07 2:09 ` Michael Snyder
2003-01-07 4:31 ` Daniel Jacobowitz
2003-01-08 22:08 ` Elena Zannoni
2003-01-09 1:52 ` Daniel Jacobowitz
2003-01-10 22:25 ` Elena Zannoni
2003-01-10 22:28 ` Daniel Jacobowitz
2003-01-10 23:20 ` Elena Zannoni
2003-01-03 14:15 ` Elena Zannoni
2003-01-03 23:31 ` Michael Snyder
2003-01-03 23:51 ` Elena Zannoni
2003-01-03 23:58 ` Michael Snyder
2003-01-03 14:13 ` Elena Zannoni
2003-01-03 23:28 ` Michael Snyder
2003-01-02 20:01 ` Elena Zannoni
2003-01-02 20:29 ` Michael Snyder
2003-01-03 4:15 Michael Elizabeth Chastain
2003-01-03 4:59 ` Daniel Jacobowitz
2003-01-03 21:52 ` Michael Snyder
2003-01-03 21:54 ` Daniel Jacobowitz
2003-01-03 22:39 ` Elena Zannoni
2003-01-03 23:09 ` Michael Snyder
2003-01-03 14:43 ` Elena Zannoni
2003-01-03 22:06 ` Michael Snyder
2003-01-03 22:43 ` Elena Zannoni
2003-01-03 23:13 ` Michael Snyder
2003-01-03 6:49 Michael Elizabeth Chastain
2003-01-03 15:17 ` Daniel Jacobowitz
2003-01-03 16:38 Michael Elizabeth Chastain
2003-01-03 16:57 ` Daniel Jacobowitz
2003-01-03 16:48 Michael Elizabeth Chastain
2003-01-03 23:33 ` Michael Snyder
2003-01-03 17:07 Michael Elizabeth Chastain
2003-01-03 17:51 ` Elena Zannoni
2003-01-03 17:40 Michael Elizabeth Chastain
2003-01-03 18:03 Michael Elizabeth Chastain
2003-01-04 0:37 Michael Elizabeth Chastain
2003-01-05 17:02 ` Andrew Cagney
2003-01-07 1:30 ` Michael Snyder
2003-01-07 3:53 Michael Elizabeth Chastain
2003-01-07 4:05 Michael Elizabeth Chastain
2003-01-11 1:04 Michael Elizabeth Chastain
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3E162537.63F529DF@redhat.com \
--to=msnyder@redhat.com \
--cc=drow@mvista.com \
--cc=ezannoni@redhat.com \
--cc=gdb-patches@sources.redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox