aboutsummaryrefslogtreecommitdiff
path: root/gdb/breakpoint.c
diff options
context:
space:
mode:
authorJason Molenda <jmolenda@apple.com>2000-01-11 03:07:37 +0000
committerJason Molenda <jmolenda@apple.com>2000-01-11 03:07:37 +0000
commit0d06e24ba79bdc3617c5e56a2c32b3a7f28a4bd5 (patch)
tree9533ed688a9ea7eca9bcad984dfda07fecc420bb /gdb/breakpoint.c
parent3b7c8b741463f04bc932f698f9a68c64ff797992 (diff)
downloadgdb-0d06e24ba79bdc3617c5e56a2c32b3a7f28a4bd5.zip
gdb-0d06e24ba79bdc3617c5e56a2c32b3a7f28a4bd5.tar.gz
gdb-0d06e24ba79bdc3617c5e56a2c32b3a7f28a4bd5.tar.bz2
import gdb-2000-01-10 snapshot
Diffstat (limited to 'gdb/breakpoint.c')
-rw-r--r--gdb/breakpoint.c27
1 files changed, 17 insertions, 10 deletions
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index 37454c5..6edfc62 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -5215,10 +5215,10 @@ awatch_command (arg, from_tty)
static void
until_break_command_continuation (struct continuation_arg *arg)
{
- /* Do all the exec cleanups, which at this point should only be the
- one set up in the first part of the until_break_command
- function. */
- do_exec_cleanups (ALL_CLEANUPS);
+ struct cleanup *cleanups;
+
+ cleanups = (struct cleanup *) arg->data;
+ do_exec_cleanups (cleanups);
}
/* ARGSUSED */
@@ -5232,6 +5232,8 @@ until_break_command (arg, from_tty)
struct frame_info *prev_frame = get_prev_frame (selected_frame);
struct breakpoint *breakpoint;
struct cleanup *old_chain;
+ struct continuation_arg *arg1;
+
clear_proceed_status ();
@@ -5262,7 +5264,7 @@ until_break_command (arg, from_tty)
old_chain = make_cleanup ((make_cleanup_func) delete_breakpoint,
breakpoint);
else
- make_exec_cleanup ((make_cleanup_func) delete_breakpoint, breakpoint);
+ old_chain = make_exec_cleanup ((make_cleanup_func) delete_breakpoint, breakpoint);
/* If we are running asynchronously, and the target supports async
execution, we are not waiting for the target to stop, in the call
@@ -5273,11 +5275,16 @@ until_break_command (arg, from_tty)
if (event_loop_p && target_can_async_p ())
{
- /* In this case we don't need args for the continuation, because
- all it needs to do is do the cleanups in the
- exec_cleanup_chain, which will be only those inserted by this
- function. We can get away by using ALL_CLEANUPS. */
- add_continuation (until_break_command_continuation, NULL);
+ /* In this case the arg for the continuation is just the point
+ in the exec_cleanups chain from where to start doing
+ cleanups, because all the continuation does is the cleanups in
+ the exec_cleanup_chain. */
+ arg1 =
+ (struct continuation_arg *) xmalloc (sizeof (struct continuation_arg));
+ arg1->next = NULL;
+ arg1->data = (PTR) old_chain;
+
+ add_continuation (until_break_command_continuation, arg1);
}
/* Keep within the current frame */