2011-05-27 Pedro Alves <pedro@codesourcery.com>
[deliverable/binutils-gdb.git] / gdb / infcmd.c
index c940acf9d5599f322a9fbd86f4bba9b1bd75777c..f499e3e64bf44b5b48275b31f9c6c40fa54ff4f5 100644 (file)
@@ -55,6 +55,8 @@
 #include "valprint.h"
 #include "inline-frame.h"
 #include "tracepoint.h"
+#include "inf-loop.h"
+#include "continuations.h"
 
 /* Functions exported for general use, in inferior.h: */
 
@@ -129,7 +131,7 @@ void _initialize_infcmd (void);
 /* Scratch area where string containing arguments to give to the
    program will be stored by 'set args'.  As soon as anything is
    stored, notice_args_set will move it into per-inferior storage.
-   Arguments are separated by spaces. Empty string (pointer to '\0')
+   Arguments are separated by spaces.  Empty string (pointer to '\0')
    means no args.  */
 
 static char *inferior_args_scratch;
@@ -165,7 +167,7 @@ enum stop_stack_kind stop_stack_dummy;
 int stopped_by_random_signal;
 
 \f
-/* Accessor routines. */
+/* Accessor routines.  */
 
 /* Set the io terminal for the current inferior.  Ownership of
    TERMINAL_NAME is not transferred.  */
@@ -360,8 +362,8 @@ construct_inferior_arguments (int argc, char **argv)
 
 /* This function detects whether or not a '&' character (indicating
    background execution) has been added as *the last* of the arguments ARGS
-   of a command. If it has, it removes it and returns 1. Otherwise it
-   does nothing and returns 0. */
+   of a command.  If it has, it removes it and returns 1.  Otherwise it
+   does nothing and returns 0.  */
 static int
 strip_bg_char (char **args)
 {
@@ -395,6 +397,8 @@ strip_bg_char (char **args)
 void
 post_create_inferior (struct target_ops *target, int from_tty)
 {
+  volatile struct gdb_exception ex;
+
   /* Be sure we own the terminal in case write operations are performed.  */ 
   target_terminal_ours ();
 
@@ -404,8 +408,16 @@ post_create_inferior (struct target_ops *target, int from_tty)
      don't need to.  */
   target_find_description ();
 
-  /* Now that we know the register layout, retrieve current PC.  */
-  stop_pc = regcache_read_pc (get_current_regcache ());
+  /* Now that we know the register layout, retrieve current PC.  But
+     if the PC is unavailable (e.g., we're opening a core file with
+     missing registers info), ignore it.  */
+  stop_pc = 0;
+  TRY_CATCH (ex, RETURN_MASK_ERROR)
+    {
+      stop_pc = regcache_read_pc (get_current_regcache ());
+    }
+  if (ex.reason < 0 && ex.error != NOT_AVAILABLE_ERROR)
+    throw_exception (ex);
 
   if (exec_bfd)
     {
@@ -473,7 +485,7 @@ Start it from the beginning? ")))
     }
 }
 
-/* Implement the "run" command. If TBREAK_AT_MAIN is set, then insert
+/* Implement the "run" command.  If TBREAK_AT_MAIN is set, then insert
    a temporary breakpoint at the begining of the main program before
    running the program.  */
 
@@ -532,19 +544,19 @@ run_command_1 (char *args, int from_tty, int tbreak_at_main)
       int async_exec = strip_bg_char (&args);
 
       /* If we get a request for running in the bg but the target
-         doesn't support it, error out. */
+         doesn't support it, error out.  */
       if (async_exec && !target_can_async_p ())
        error (_("Asynchronous execution not supported on this target."));
 
       /* If we don't get a request of running in the bg, then we need
-         to simulate synchronous (fg) execution. */
+         to simulate synchronous (fg) execution.  */
       if (!async_exec && target_can_async_p ())
        {
-         /* Simulate synchronous execution */
+         /* Simulate synchronous execution */
          async_disable_stdin ();
        }
 
-      /* If there were other args, beside '&', process them. */
+      /* If there were other args, beside '&', process them.  */
       if (args)
        set_inferior_args (args);
     }
@@ -653,7 +665,7 @@ ensure_valid_thread (void)
 }
 
 /* If the user is looking at trace frames, any resumption of execution
-   is likely to mix up recorded and live target data. So simply
+   is likely to mix up recorded and live target data.  So simply
    disallow those commands.  */
 
 void
@@ -700,20 +712,20 @@ continue_command (char *args, int from_tty)
   int all_threads = 0;
   ERROR_NO_INFERIOR;
 
-  /* Find out whether we must run in the background. */
+  /* Find out whether we must run in the background.  */
   if (args != NULL)
     async_exec = strip_bg_char (&args);
 
   /* If we must run in the background, but the target can't do it,
-     error out. */
+     error out.  */
   if (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. */
+     foreground, synchronously.  */
   if (!async_exec && target_can_async_p ())
     {
-      /* Simulate synchronous execution */
+      /* Simulate synchronous execution */
       async_disable_stdin ();
     }
 
@@ -848,21 +860,21 @@ step_1 (int skip_subroutines, int single_inst, char *count_string)
     async_exec = strip_bg_char (&count_string);
 
   /* If we get a request for running in the bg but the target
-     doesn't support it, error out. */
+     doesn't support it, error out.  */
   if (async_exec && !target_can_async_p ())
     error (_("Asynchronous execution not supported on this target."));
 
   /* If we don't get a request of running in the bg, then we need
-     to simulate synchronous (fg) execution. */
+     to simulate synchronous (fg) execution.  */
   if (!async_exec && target_can_async_p ())
     {
-      /* Simulate synchronous execution */
+      /* Simulate synchronous execution */
       async_disable_stdin ();
     }
 
   count = count_string ? parse_and_eval_long (count_string) : 1;
 
-  if (!single_inst || skip_subroutines)                /* leave si command alone */
+  if (!single_inst || skip_subroutines)                /* Leave si command alone.  */
     {
       struct thread_info *tp = inferior_thread ();
 
@@ -879,23 +891,21 @@ step_1 (int skip_subroutines, int single_inst, char *count_string)
     {
       for (; count > 0; count--)
        {
-         struct thread_info *tp;
-
          step_once (skip_subroutines, single_inst, count, thread);
 
-         if (target_has_execution
-             && !ptid_equal (inferior_ptid, null_ptid))
-           tp = inferior_thread ();
+         if (!target_has_execution)
+           break;
          else
-           tp = NULL;
-
-         if (!tp || !tp->control.stop_step || !tp->step_multi)
            {
-             /* If we stopped for some reason that is not stepping
-                there are no further steps to make.  */
-             if (tp)
-               tp->step_multi = 0;
-             break;
+             struct thread_info *tp = inferior_thread ();
+
+             if (!tp->control.stop_step || !tp->step_multi)
+               {
+                 /* If we stopped for some reason that is not stepping
+                    there are no further steps to make.  */
+                 tp->step_multi = 0;
+                 break;
+               }
            }
        }
 
@@ -926,9 +936,9 @@ struct step_1_continuation_args
 
 /* Called after we are done with one step operation, to check whether
    we need to step again, before we print the prompt and return control
-   to the user. If count is > 1, we will need to do one more call to
-   proceed(), via step_once(). Basically it is like step_once and
-   step_1_continuation are co-recursive. */
+   to the user.  If count is > 1, we will need to do one more call to
+   proceed(), via step_once().  Basically it is like step_once and
+   step_1_continuation are co-recursive.  */
 static void
 step_1_continuation (void *args)
 {
@@ -986,12 +996,23 @@ step_once (int skip_subroutines, int single_inst, int count, int thread)
          if (!skip_subroutines && !single_inst
              && inline_skipped_frames (inferior_ptid))
            {
+             ptid_t resume_ptid;
+
+             /* Pretend that we've ran.  */
+             resume_ptid = user_visible_resume_ptid (1);
+             set_running (resume_ptid, 1);
+
              step_into_inline_frame (inferior_ptid);
              if (count > 1)
                step_once (skip_subroutines, single_inst, count - 1, thread);
              else
-               /* Pretend that we've stopped.  */
-               normal_stop ();
+               {
+                 /* Pretend that we've stopped.  */
+                 normal_stop ();
+
+                 if (target_can_async_p ())
+                   inferior_event_handler (INF_EXEC_COMPLETE, NULL);
+               }
              return;
            }
 
@@ -1072,12 +1093,12 @@ jump_command (char *arg, int from_tty)
   ensure_valid_thread ();
   ensure_not_running ();
 
-  /* Find out whether we must run in the background. */
+  /* 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. */
+     error out.  */
   if (async_exec && !target_can_async_p ())
     error (_("Asynchronous execution not supported on this target."));
 
@@ -1096,9 +1117,9 @@ jump_command (char *arg, int from_tty)
   if (sal.symtab == 0 && sal.pc == 0)
     error (_("No source file has been specified."));
 
-  resolve_sal_pc (&sal);       /* May error out */
+  resolve_sal_pc (&sal);       /* May error out */
 
-  /* See if we are trying to jump to another function. */
+  /* See if we are trying to jump to another function.  */
   fn = get_frame_function (get_current_frame ());
   sfn = find_pc_function (sal.pc);
   if (fn != NULL && sfn != fn)
@@ -1136,10 +1157,10 @@ jump_command (char *arg, int from_tty)
     }
 
   /* If we are not asked to run in the bg, then prepare to run in the
-     foreground, synchronously. */
+     foreground, synchronously.  */
   if (!async_exec && target_can_async_p ())
     {
-      /* Simulate synchronous execution */
+      /* Simulate synchronous execution */
       async_disable_stdin ();
     }
 
@@ -1148,7 +1169,7 @@ jump_command (char *arg, int from_tty)
 }
 \f
 
-/* Go to line or address in current procedure */
+/* Go to line or address in current procedure */
 static void
 go_command (char *line_no, int from_tty)
 {
@@ -1261,7 +1282,7 @@ until_next_command (int from_tty)
 
   /* Step until either exited from this function or greater
      than the current line (if in symbolic section) or pc (if
-     not). */
+     not).  */
 
   pc = get_frame_pc (frame);
   func = find_pc_function (pc);
@@ -1312,20 +1333,20 @@ until_command (char *arg, int from_tty)
   ensure_valid_thread ();
   ensure_not_running ();
 
-  /* Find out whether we must run in the background. */
+  /* 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. */
+     error out.  */
   if (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. */
+     foreground, synchronously.  */
   if (!async_exec && target_can_async_p ())
     {
-      /* Simulate synchronous execution */
+      /* Simulate synchronous execution */
       async_disable_stdin ();
     }
 
@@ -1384,7 +1405,7 @@ print_return_value (struct type *func_type, struct type *value_type)
   /* FIXME: 2003-09-27: When returning from a nested inferior function
      call, it's possible (with no help from the architecture vector)
      to locate and return/print a "struct return" value.  This is just
-     a more complicated case of what is already being done in in the
+     a more complicated case of what is already being done in the
      inferior function call code.  In fact, when inferior function
      calls are made async, this will likely be made the norm.  */
 
@@ -1437,7 +1458,7 @@ print_return_value (struct type *func_type, struct type *value_type)
    impossible to do all the stuff as part of the finish_command
    function itself.  The only chance we have to complete this command
    is in fetch_inferior_event, which is called by the event loop as
-   soon as it detects that the target has stopped. This function is
+   soon as it detects that the target has stopped.  This function is
    called via the cmd_continuation pointer.  */
 
 struct finish_command_continuation_args
@@ -1508,11 +1529,8 @@ finish_backward (struct symbol *function)
 {
   struct symtab_and_line sal;
   struct thread_info *tp = inferior_thread ();
-  struct breakpoint *breakpoint;
-  struct cleanup *old_chain;
   CORE_ADDR pc;
   CORE_ADDR func_addr;
-  int back_up;
 
   pc = get_frame_pc (get_current_frame ());
 
@@ -1522,8 +1540,7 @@ finish_backward (struct symbol *function)
 
   sal = find_pc_line (func_addr, 0);
 
-  /* We don't need a return value.  */
-  tp->control.proceed_to_finish = 0;
+  tp->control.proceed_to_finish = 1;
   /* Special case: if we're sitting at the function entry point,
      then all we need to do is take a reverse singlestep.  We
      don't need to set a breakpoint, and indeed it would do us
@@ -1537,33 +1554,25 @@ finish_backward (struct symbol *function)
     {
       struct frame_info *frame = get_selected_frame (NULL);
       struct gdbarch *gdbarch = get_frame_arch (frame);
+      struct symtab_and_line sr_sal;
+
+      /* Set a step-resume at the function's entry point.  Once that's
+        hit, we'll do one more step backwards.  */
+      init_sal (&sr_sal);
+      sr_sal.pc = sal.pc;
+      sr_sal.pspace = get_frame_program_space (frame);
+      insert_step_resume_breakpoint_at_sal (gdbarch,
+                                           sr_sal, null_frame_id);
 
-      /* Set breakpoint and continue.  */
-      breakpoint =
-       set_momentary_breakpoint (gdbarch, sal,
-                                 get_stack_frame_id (frame),
-                                 bp_breakpoint);
-      /* Tell the breakpoint to keep quiet.  We won't be done
-         until we've done another reverse single-step.  */
-      make_breakpoint_silent (breakpoint);
-      old_chain = make_cleanup_delete_breakpoint (breakpoint);
       proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 0);
-      /* We will be stopped when proceed returns.  */
-      back_up = (bpstat_find_breakpoint (tp->control.stop_bpstat, breakpoint)
-                != NULL);
-      do_cleanups (old_chain);
     }
   else
-    back_up = 1;
-  if (back_up)
     {
-      /* If in fact we hit the step-resume breakpoint (and not
-        some other breakpoint), then we're almost there --
-        we just need to back up by one more single-step.  */
+      /* We're almost there -- we just need to back up by one more
+        single-step.  */
       tp->control.step_range_start = tp->control.step_range_end = 1;
       proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 1);
     }
-  return;
 }
 
 /* finish_forward -- helper function for finish_command.  */
@@ -1631,10 +1640,6 @@ finish_command (char *arg, int from_tty)
   if (async_exec && !target_can_async_p ())
     error (_("Asynchronous execution not supported on this target."));
 
-  /* Don't try to async in reverse.  */
-  if (async_exec && execution_direction == EXEC_REVERSE)
-    error (_("Asynchronous 'finish' not supported in reverse."));
-
   /* If we are not asked to run in the bg, then prepare to run in the
      foreground, synchronously.  */
   if (!async_exec && target_can_async_p ())
@@ -1816,7 +1821,7 @@ set_environment_command (char *arg, int from_tty)
   if (arg == 0)
     error_no_arg (_("environment variable and value"));
 
-  /* Find seperation between variable name and value */
+  /* Find seperation between variable name and value */
   p = (char *) strchr (arg, '=');
   val = (char *) strchr (arg, ' ');
 
@@ -1824,7 +1829,7 @@ set_environment_command (char *arg, int from_tty)
     {
       /* We have both a space and an equals.  If the space is before the
          equals, walk forward over the spaces til we see a nonspace 
-         (possibly the equals). */
+         (possibly the equals).  */
       if (p > val)
        while (*val == ' ')
          val++;
@@ -1844,11 +1849,11 @@ set_environment_command (char *arg, int from_tty)
     {
       nullset = 1;
       if (p == 0)
-       p = arg + strlen (arg); /* So that savestring below will work */
+       p = arg + strlen (arg); /* So that savestring below will work */
     }
   else
     {
-      /* Not setting variable value to null */
+      /* Not setting variable value to null */
       val = p + 1;
       while (*val == ' ' || *val == '\t')
        val++;
@@ -1887,7 +1892,7 @@ unset_environment_command (char *var, int from_tty)
     unset_in_environ (current_inferior ()->environment, var);
 }
 
-/* Handle the execution path (PATH variable) */
+/* Handle the execution path (PATH variable) */
 
 static const char path_var_name[] = "PATH";
 
@@ -1910,7 +1915,7 @@ path_command (char *dirname, int from_tty)
 
   dont_repeat ();
   env = get_in_environ (current_inferior ()->environment, path_var_name);
-  /* Can be null if path is not set */
+  /* Can be null if path is not set */
   if (!env)
     env = "";
   exec_path = xstrdup (env);
@@ -1922,7 +1927,7 @@ path_command (char *dirname, int from_tty)
 }
 \f
 
-/* Print out the machine register regnum. If regnum is -1, print all
+/* Print out the machine register regnum.  If regnum is -1, print all
    registers (print_all == 1) or all non-float and non-vector
    registers (print_all == 0).
 
@@ -1942,10 +1947,12 @@ default_print_registers_info (struct gdbarch *gdbarch,
   int i;
   const int numregs = gdbarch_num_regs (gdbarch)
                      + gdbarch_num_pseudo_regs (gdbarch);
-  gdb_byte buffer[MAX_REGISTER_SIZE];
 
   for (i = 0; i < numregs; i++)
     {
+      struct type *regtype;
+      struct value *val;
+
       /* Decide between printing all regs, non-float / vector regs, or
          specific reg.  */
       if (regnum == -1)
@@ -1977,8 +1984,11 @@ default_print_registers_info (struct gdbarch *gdbarch,
       print_spaces_filtered (15 - strlen (gdbarch_register_name
                                          (gdbarch, i)), file);
 
+      regtype = register_type (gdbarch, i);
+      val = allocate_value (regtype);
+
       /* Get the data in raw format.  */
-      if (! frame_register_read (frame, i, buffer))
+      if (! frame_register_read (frame, i, value_contents_raw (val)))
        {
          fprintf_filtered (file, "*value not available*\n");
          continue;
@@ -1986,16 +1996,20 @@ default_print_registers_info (struct gdbarch *gdbarch,
 
       /* If virtual format is floating, print it that way, and in raw
          hex.  */
-      if (TYPE_CODE (register_type (gdbarch, i)) == TYPE_CODE_FLT
-         || TYPE_CODE (register_type (gdbarch, i)) == TYPE_CODE_DECFLOAT)
+      if (TYPE_CODE (regtype) == TYPE_CODE_FLT
+         || TYPE_CODE (regtype) == TYPE_CODE_DECFLOAT)
        {
          int j;
          struct value_print_options opts;
+         const gdb_byte *valaddr = value_contents_for_printing (val);
 
          get_user_print_options (&opts);
          opts.deref_ref = 1;
-         val_print (register_type (gdbarch, i), buffer, 0, 0,
-                    file, 0, NULL, &opts, current_language);
+
+         val_print (regtype,
+                    value_contents_for_printing (val),
+                    value_embedded_offset (val), 0,
+                    file, 0, val, &opts, current_language);
 
          fprintf_filtered (file, "\t(raw 0x");
          for (j = 0; j < register_size (gdbarch, i); j++)
@@ -2006,7 +2020,7 @@ default_print_registers_info (struct gdbarch *gdbarch,
                idx = j;
              else
                idx = register_size (gdbarch, i) - 1 - j;
-             fprintf_filtered (file, "%02x", (unsigned char) buffer[idx]);
+             fprintf_filtered (file, "%02x", (unsigned char) valaddr[idx]);
            }
          fprintf_filtered (file, ")");
        }
@@ -2017,17 +2031,21 @@ default_print_registers_info (struct gdbarch *gdbarch,
          /* Print the register in hex.  */
          get_formatted_print_options (&opts, 'x');
          opts.deref_ref = 1;
-         val_print (register_type (gdbarch, i), buffer, 0, 0,
-                    file, 0, NULL, &opts, current_language);
+         val_print (regtype,
+                    value_contents_for_printing (val),
+                    value_embedded_offset (val), 0,
+                    file, 0, val, &opts, current_language);
           /* If not a vector register, print it also according to its
              natural format.  */
-         if (TYPE_VECTOR (register_type (gdbarch, i)) == 0)
+         if (TYPE_VECTOR (regtype) == 0)
            {
              get_user_print_options (&opts);
              opts.deref_ref = 1;
              fprintf_filtered (file, "\t");
-             val_print (register_type (gdbarch, i), buffer, 0, 0,
-                        file, 0, NULL, &opts, current_language);
+             val_print (regtype,
+                        value_contents_for_printing (val),
+                        value_embedded_offset (val), 0,
+                        file, 0, val, &opts, current_language);
            }
        }
 
@@ -2097,9 +2115,11 @@ registers_info (char *addr_exp, int fpregs)
 
                printf_filtered ("%s: ", start);
                get_formatted_print_options (&opts, 'x');
-               print_scalar_formatted (value_contents (val),
-                                       check_typedef (value_type (val)),
-                                       &opts, 0, gdb_stdout);
+               val_print_scalar_formatted (check_typedef (value_type (val)),
+                                           value_contents_for_printing (val),
+                                           value_embedded_offset (val),
+                                           val,
+                                           &opts, 0, gdb_stdout);
                printf_filtered ("\n");
              }
            else
@@ -2203,7 +2223,7 @@ kill_command (char *arg, int from_tty)
 {
   /* FIXME:  This should not really be inferior_ptid (or target_has_execution).
      It should be a distinct flag that indicates that a target is active, cuz
-     some targets don't have processes! */
+     some targets don't have processes!  */
 
   if (ptid_equal (inferior_ptid, null_ptid))
     error (_("The program is not being run."));
@@ -2215,7 +2235,7 @@ kill_command (char *arg, int from_tty)
      with their threads.  */
   if (!have_inferiors ())
     {
-      init_thread_list ();             /* Destroy thread info */
+      init_thread_list ();             /* Destroy thread info */
 
       /* Killing off the inferior can leave us with a core file.  If
         so, print the state we are left in.  */
@@ -2280,8 +2300,7 @@ proceed_after_attach (int pid)
  * This only needs to be done if we are attaching to a process.
  */
 
-/*
-   attach_command --
+/* attach_command --
    takes a program started up outside of gdb and ``attaches'' to it.
    This stops it cold in its tracks and allows us to start debugging it.
    and wait for the trace-trap that results from attaching.  */
@@ -2310,8 +2329,8 @@ attach_command_post_wait (char *args, int from_tty, int async_exec)
 
             Attempt to qualify the filename against the source path.
             (If that fails, we'll just fall back on the original
-            filename.  Not much more we can do...)
-          */
+            filename.  Not much more we can do...)  */
+
          if (!source_full_path_of (exec_file, &full_exec_path))
            full_exec_path = xstrdup (exec_file);
 
@@ -2434,7 +2453,7 @@ attach_command (char *args, int from_tty)
       async_exec = strip_bg_char (&args);
 
       /* If we get a request for running in the bg but the target
-         doesn't support it, error out. */
+         doesn't support it, error out.  */
       if (async_exec && !target_can_async_p ())
        error (_("Asynchronous execution not supported on this target."));
     }
@@ -2443,7 +2462,7 @@ attach_command (char *args, int from_tty)
      to simulate synchronous (fg) execution.  */
   if (!async_exec && target_can_async_p ())
     {
-      /* Simulate synchronous execution */
+      /* Simulate synchronous execution */
       async_disable_stdin ();
       make_cleanup ((make_cleanup_ftype *)async_enable_stdin, NULL);
     }
@@ -2480,7 +2499,7 @@ attach_command (char *args, int from_tty)
     {
       struct inferior *inferior = current_inferior ();
 
-      /* Careful here. See comments in inferior.h.  Basically some
+      /* Careful here.  See comments in inferior.h.  Basically some
         OSes don't ignore SIGSTOPs on continue requests anymore.  We
         need a way for handle_inferior_event to reset the stop_signal
         variable after an attach, and this is what
@@ -2502,7 +2521,7 @@ attach_command (char *args, int from_tty)
          return;
        }
 
-      wait_for_inferior (0);
+      wait_for_inferior ();
     }
 
   attach_command_post_wait (args, from_tty, async_exec);
@@ -2566,7 +2585,7 @@ notice_new_inferior (ptid_t ptid, int leave_running, int from_tty)
          return;
        }
       else
-       wait_for_inferior (0);
+       wait_for_inferior ();
     }
 
   async_exec = leave_running;
@@ -2623,7 +2642,7 @@ detach_command (char *args, int from_tty)
 static void
 disconnect_command (char *args, int from_tty)
 {
-  dont_repeat ();              /* Not for the faint of heart */
+  dont_repeat ();              /* Not for the faint of heart */
   target_disconnect (args, from_tty);
   no_shared_libraries (NULL, from_tty);
   init_thread_list ();
@@ -2665,7 +2684,7 @@ interrupt_target_command (char *args, int from_tty)
     {
       int all_threads = 0;
 
-      dont_repeat ();          /* Not for the faint of heart */
+      dont_repeat ();          /* Not for the faint of heart */
 
       if (args != NULL
          && strncmp (args, "-a", sizeof ("-a") - 1) == 0)
@@ -2730,7 +2749,7 @@ _initialize_infcmd (void)
 {
   struct cmd_list_element *c = NULL;
 
-  /* add the filename of the terminal connected to inferior I/O */
+  /* Add the filename of the terminal connected to inferior I/O.  */
   add_setshow_filename_cmd ("inferior-tty", class_run,
                            &inferior_io_terminal_scratch, _("\
 Set terminal for future runs of program being debugged."), _("\
@@ -2893,7 +2912,7 @@ This command is a combination of tbreak and jump."));
   if (xdb_commands)
     add_com_alias ("g", "go", class_run, 1);
 
-  c = add_com ("continue", class_run, continue_command, _("\
+  add_com ("continue", class_run, continue_command, _("\
 Continue program being debugged, after signal or breakpoint.\n\
 If proceeding from breakpoint, a number N may be used as an argument,\n\
 which means to set the ignore count of that breakpoint to N - 1 (so that\n\
@@ -2927,8 +2946,8 @@ You may specify arguments to give to your program, just as with the\n\
 \"run\" command."));
   set_cmd_completer (c, filename_completer);
 
-  c = add_com ("interrupt", class_run, interrupt_target_command,
-              _("Interrupt the execution of the debugged program.\n\
+  add_com ("interrupt", class_run, interrupt_target_command,
+          _("Interrupt the execution of the debugged program.\n\
 If non-stop mode is enabled, interrupt only the current thread,\n\
 otherwise all the threads in the program are stopped.  To \n\
 interrupt all running threads in non-stop mode, use the -a option."));
This page took 0.033259 seconds and 4 git commands to generate.