2007-06-13 Mike Frysinger <vapier@gentoo.org>
[deliverable/binutils-gdb.git] / gdb / infcmd.c
index f3a61f25be046eb9f894175b34201322d4591332..59602e04655cf3640296df3225227eaf55d3b66f 100644 (file)
@@ -406,6 +406,9 @@ tty_command (char *file, int from_tty)
 void
 post_create_inferior (struct target_ops *target, int from_tty)
 {
+  /* Be sure we own the terminal in case write operations are performed.  */ 
+  target_terminal_ours ();
+
   /* If the target hasn't taken care of this already, do it now.
      Targets which need to access registers during to_open,
      to_create_inferior, or to_attach should do it earlier; but many
@@ -622,23 +625,27 @@ continue_command (char *proc_count_exp, int from_tty)
   if (proc_count_exp != NULL)
     {
       bpstat bs = stop_bpstat;
-      int num = bpstat_num (&bs);
-      if (num == 0 && from_tty)
+      int num, stat;
+      int stopped = 0;
+
+      while ((stat = bpstat_num (&bs, &num)) != 0)
+       if (stat > 0)
+         {
+           set_ignore_count (num,
+                             parse_and_eval_long (proc_count_exp) - 1,
+                             from_tty);
+           /* set_ignore_count prints a message ending with a period.
+              So print two spaces before "Continuing.".  */
+           if (from_tty)
+             printf_filtered ("  ");
+           stopped = 1;
+         }
+
+      if (!stopped && from_tty)
        {
          printf_filtered
            ("Not stopped at any breakpoint; argument ignored.\n");
        }
-      while (num != 0)
-       {
-         set_ignore_count (num,
-                           parse_and_eval_long (proc_count_exp) - 1,
-                           from_tty);
-         /* set_ignore_count prints a message ending with a period.
-            So print two spaces before "Continuing.".  */
-         if (from_tty)
-           printf_filtered ("  ");
-         num = bpstat_num (&bs);
-       }
     }
 
   if (from_tty)
@@ -1386,7 +1393,8 @@ static void
 program_info (char *args, int from_tty)
 {
   bpstat bs = stop_bpstat;
-  int num = bpstat_num (&bs);
+  int num;
+  int stat = bpstat_num (&bs, &num);
 
   if (!target_has_execution)
     {
@@ -1399,20 +1407,20 @@ program_info (char *args, int from_tty)
                   hex_string ((unsigned long) stop_pc));
   if (stop_step)
     printf_filtered (_("It stopped after being stepped.\n"));
-  else if (num != 0)
+  else if (stat != 0)
     {
       /* There may be several breakpoints in the same place, so this
          isn't as strange as it seems.  */
-      while (num != 0)
+      while (stat != 0)
        {
-         if (num < 0)
+         if (stat < 0)
            {
              printf_filtered (_("\
 It stopped at a breakpoint that has since been deleted.\n"));
            }
          else
            printf_filtered (_("It stopped at breakpoint %d.\n"), num);
-         num = bpstat_num (&bs);
+         stat = bpstat_num (&bs, &num);
        }
     }
   else if (stop_signal != TARGET_SIGNAL_0)
@@ -1591,7 +1599,8 @@ default_print_registers_info (struct gdbarch *gdbarch,
                              int regnum, int print_all)
 {
   int i;
-  const int numregs = NUM_REGS + NUM_PSEUDO_REGS;
+  const int numregs = gdbarch_num_regs (current_gdbarch)
+                     + gdbarch_num_pseudo_regs (current_gdbarch);
   gdb_byte buffer[MAX_REGISTER_SIZE];
 
   for (i = 0; i < numregs; i++)
@@ -1619,11 +1628,13 @@ default_print_registers_info (struct gdbarch *gdbarch,
 
       /* If the register name is empty, it is undefined for this
          processor, so don't display anything.  */
-      if (REGISTER_NAME (i) == NULL || *(REGISTER_NAME (i)) == '\0')
+      if (gdbarch_register_name (current_gdbarch, i) == NULL
+         || *(gdbarch_register_name (current_gdbarch, i)) == '\0')
        continue;
 
-      fputs_filtered (REGISTER_NAME (i), file);
-      print_spaces_filtered (15 - strlen (REGISTER_NAME (i)), file);
+      fputs_filtered (gdbarch_register_name (current_gdbarch, i), file);
+      print_spaces_filtered (15 - strlen (gdbarch_register_name
+                                         (current_gdbarch, i)), file);
 
       /* Get the data in raw format.  */
       if (! frame_register_read (frame, i, buffer))
@@ -1645,7 +1656,7 @@ default_print_registers_info (struct gdbarch *gdbarch,
          for (j = 0; j < register_size (current_gdbarch, i); j++)
            {
              int idx;
-             if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
+             if (gdbarch_byte_order (current_gdbarch) == BFD_ENDIAN_BIG)
                idx = j;
              else
                idx = register_size (current_gdbarch, i) - 1 - j;
@@ -1735,7 +1746,8 @@ registers_info (char *addr_exp, int fpregs)
        int regnum = strtol (start, &endptr, 0);
        if (endptr == end
            && regnum >= 0
-           && regnum < NUM_REGS + NUM_PSEUDO_REGS)
+           && regnum < gdbarch_num_regs (current_gdbarch)
+                       + gdbarch_num_pseudo_regs (current_gdbarch))
          {
            gdbarch_print_registers_info (current_gdbarch, gdb_stdout,
                                          frame, regnum, fpregs);
@@ -1759,7 +1771,10 @@ registers_info (char *addr_exp, int fpregs)
        if (group != NULL)
          {
            int regnum;
-           for (regnum = 0; regnum < NUM_REGS + NUM_PSEUDO_REGS; regnum++)
+           for (regnum = 0;
+                regnum < gdbarch_num_regs (current_gdbarch)
+                         + gdbarch_num_pseudo_regs (current_gdbarch);
+                regnum++)
              {
                if (gdbarch_register_reggroup_p (current_gdbarch, regnum,
                                                 group))
@@ -1799,7 +1814,10 @@ print_vector_info (struct gdbarch *gdbarch, struct ui_file *file,
       int regnum;
       int printed_something = 0;
 
-      for (regnum = 0; regnum < NUM_REGS + NUM_PSEUDO_REGS; regnum++)
+      for (regnum = 0;
+          regnum < gdbarch_num_regs (current_gdbarch)
+                   + gdbarch_num_pseudo_regs (current_gdbarch);
+          regnum++)
        {
          if (gdbarch_register_reggroup_p (gdbarch, regnum, vector_reggroup))
            {
@@ -2016,7 +2034,10 @@ print_float_info (struct gdbarch *gdbarch, struct ui_file *file,
       int regnum;
       int printed_something = 0;
 
-      for (regnum = 0; regnum < NUM_REGS + NUM_PSEUDO_REGS; regnum++)
+      for (regnum = 0;
+          regnum < gdbarch_num_regs (current_gdbarch)
+                   + gdbarch_num_pseudo_regs (current_gdbarch);
+          regnum++)
        {
          if (gdbarch_register_reggroup_p (gdbarch, regnum, float_reggroup))
            {
This page took 0.026639 seconds and 4 git commands to generate.