Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* Re: [RFC/RFA] New 'to' command
@ 2003-01-12 20:50 Michael Elizabeth Chastain
  2003-01-12 21:15 ` Elena Zannoni
  0 siblings, 1 reply; 17+ messages in thread
From: Michael Elizabeth Chastain @ 2003-01-12 20:50 UTC (permalink / raw)
  To: drow, gdb-patches

I'm pretty much in Dan J's camp, up to the point where he doesn't
think of checking in 'help'.  Although 'to' without an argument might
possibly provide some useful text.

Michael C


^ permalink raw reply	[flat|nested] 17+ messages in thread
* Re: [RFC/RFA] New 'to' command
@ 2003-01-14 21:14 Michael Elizabeth Chastain
  2003-01-14 21:17 ` Elena Zannoni
  0 siblings, 1 reply; 17+ messages in thread
From: Michael Elizabeth Chastain @ 2003-01-14 21:14 UTC (permalink / raw)
  To: ezannoni, fnasser; +Cc: gdb-patches

'advance' sounds fine to me.

Michael C


^ permalink raw reply	[flat|nested] 17+ messages in thread
* [RFC/RFA] New 'to' command
@ 2003-01-12 19:16 Elena Zannoni
  2003-01-12 19:41 ` Daniel Jacobowitz
  2003-01-14 20:21 ` Fernando Nasser
  0 siblings, 2 replies; 17+ messages in thread
From: Elena Zannoni @ 2003-01-12 19:16 UTC (permalink / raw)
  To: gdb-patches


Following up from the long long long thread:
http://sources.redhat.com/ml/gdb-patches/2002-12/msg00584.html

Here is a new command called 'to', which takes a location (any
location) specified like for the break command, and simply continues
to it, with the restriction that the current frame is not exited.

I have left the current 'until' command alone, except for a modification
of the help string.

If this is agreed upon, I'll submit doco changes and testsuite.

2003-01-12  Elena Zannoni  <ezannoni@redhat.com>

	* breakpoint.c (until_break_command): Add new argument.  Use it to
	decide whether to stop only at the current frame or not.
	* breakpoint.h (until_break_command): Update prototype.
	* infcmd.c (until_command): Add new argument to until_break_command
	call.
	(to_command): New function.
	(_initialize_infcmd): Update help string for 'until' command.
	Add new 'to' command.


Index: breakpoint.c
===================================================================
RCS file: /cvs/uberbaum/gdb/breakpoint.c,v
retrieving revision 1.105
diff -u -p -r1.105 breakpoint.c
--- breakpoint.c	4 Jan 2003 23:07:24 -0000	1.105
+++ breakpoint.c	12 Jan 2003 19:08:07 -0000
@@ -5576,7 +5576,7 @@ until_break_command_continuation (struct
 
 /* ARGSUSED */
 void
-until_break_command (char *arg, int from_tty)
+until_break_command (char *arg, int from_tty, int anywhere)
 {
   struct symtabs_and_lines sals;
   struct symtab_and_line sal;
@@ -5609,9 +5609,16 @@ until_break_command (char *arg, int from
 
   resolve_sal_pc (&sal);
 
-  breakpoint = 
-    set_momentary_breakpoint (sal,get_frame_id (deprecated_selected_frame),
-			      bp_until);
+  if (anywhere)
+    /* If the user told us to continue until a specified location,
+       we don't specify a frame at which we need to stop.  */
+    breakpoint = set_momentary_breakpoint (sal, null_frame_id, bp_until);
+  else
+    /* Otherwise, specify the current frame, because we want to stop only
+       at the very same frame.  */
+    breakpoint = set_momentary_breakpoint (sal,
+					   get_frame_id (deprecated_selected_frame),
+					   bp_until);
 
   if (!event_loop_p || !target_can_async_p ())
     old_chain = make_cleanup_delete_breakpoint (breakpoint);
@@ -5639,8 +5646,8 @@ until_break_command (char *arg, int from
       add_continuation (until_break_command_continuation, arg1);
     }
 
-  /* Keep within the current frame */
-
+  /* Keep within the current frame, or in frames called by the current
+     one.  */
   if (prev_frame)
     {
       sal = find_pc_line (get_frame_pc (prev_frame), 0);

Index: breakpoint.h
===================================================================
RCS file: /cvs/uberbaum/gdb/breakpoint.h,v
retrieving revision 1.16
diff -u -p -r1.16 breakpoint.h
--- breakpoint.h	11 Dec 2002 22:34:47 -0000	1.16
+++ breakpoint.h	12 Jan 2003 19:08:50 -0000
@@ -534,7 +534,7 @@ extern int deprecated_frame_in_dummy (st
 
 extern int breakpoint_thread_match (CORE_ADDR, ptid_t);
 
-extern void until_break_command (char *, int);
+extern void until_break_command (char *, int, int);
 
 extern void breakpoint_re_set (void);

Index: infcmd.c
===================================================================
RCS file: /cvs/uberbaum/gdb/infcmd.c,v
retrieving revision 1.69
diff -u -p -r1.69 infcmd.c
--- infcmd.c	13 Dec 2002 16:26:02 -0000	1.69
+++ infcmd.c	12 Jan 2003 19:09:05 -0000
@@ -1140,10 +1140,38 @@ until_command (char *arg, int from_tty)
     }
 
   if (arg)
-    until_break_command (arg, from_tty);
+    until_break_command (arg, from_tty, 0);
   else
     until_next_command (from_tty);
 }
+
+static void
+to_command (char *arg, int from_tty)
+{
+  int async_exec = 0;
+
+  if (!target_has_execution)
+    error ("The program is not running.");
+
+  /* Find out whether we must run in the background. */
+  if (arg != NULL)
+    async_exec = strip_bg_char (&arg);
+
+  /* If we must run in the background, but the target can't do it,
+     error out. */
+  if (event_loop_p && async_exec && !target_can_async_p ())
+    error ("Asynchronous execution not supported on this target.");
+
+  /* If we are not asked to run in the bg, then prepare to run in the
+     foreground, synchronously. */
+  if (event_loop_p && !async_exec && target_can_async_p ())
+    {
+      /* Simulate synchronous execution */
+      async_disable_stdin ();
+    }
+
+  until_break_command (arg, from_tty, 1);
+}
 
 
 /* Print the result of a function at the end of a 'finish' command. */
@@ -2130,10 +2158,14 @@ Argument N means do this N times (or til
 
   c = add_com ("until", class_run, until_command,
 	       "Execute until the program reaches a source line greater than the current\n\
-or a specified line or address or function (same args as break command).\n\
-Execution will also stop upon exit from the current stack frame.");
+or a specified location (same args as break command) within the current frame.");
   set_cmd_completer (c, location_completer);
   add_com_alias ("u", "until", class_run, 1);
+
+  c = add_com ("to", class_run, to_command,
+	       "Continue the program up to the given location (same args as break command).\n\
+Execution will also stop upon exit from the current stack frame.");
+  set_cmd_completer (c, location_completer);
 
   c = add_com ("jump", class_run, jump_command,
 	       "Continue program being debugged at specified line or address.\n\


^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2003-01-16 14:29 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-01-12 20:50 [RFC/RFA] New 'to' command Michael Elizabeth Chastain
2003-01-12 21:15 ` Elena Zannoni
  -- strict thread matches above, loose matches on Subject: below --
2003-01-14 21:14 Michael Elizabeth Chastain
2003-01-14 21:17 ` Elena Zannoni
2003-01-14 22:11   ` Fernando Nasser
2003-01-15  0:07     ` Elena Zannoni
2003-01-15  7:48     ` Eli Zaretskii
2003-01-15 19:16     ` Michael Snyder
2003-01-16 14:29       ` Fernando Nasser
2003-01-12 19:16 Elena Zannoni
2003-01-12 19:41 ` Daniel Jacobowitz
2003-01-12 21:15   ` Elena Zannoni
2003-01-13 21:14     ` Michael Snyder
2003-01-14 20:21 ` Fernando Nasser
2003-01-14 21:05   ` Elena Zannoni
2003-01-14 21:07     ` Daniel Jacobowitz
2003-01-14 21:17       ` Elena Zannoni

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox