Re: [RFA/PATCH] breakpoint.c: fix until command

Michael Snyder
2003-01-03T23:51:46Z

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".