* maint.c (print_section_table): Rename SEC_SHARED_LIBRARY to
[deliverable/binutils-gdb.git] / gdb / infcmd.c
index f4de3abb96de3be13d0a821b6260f0dbe64fc8ae..cb27ee79063db8b38a553e0a8aadd47bace0e548 100644 (file)
@@ -128,7 +128,7 @@ int inferior_pid;
 
 /* Last signal that the inferior received (why it stopped).  */
 
-int stop_signal;
+enum target_signal stop_signal;
 
 /* Address at which inferior stopped.  */
 
@@ -295,7 +295,7 @@ continue_command (proc_count_exp, from_tty)
 
   clear_proceed_status ();
 
-  proceed ((CORE_ADDR) -1, -1, 0);
+  proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 0);
 }
 \f
 /* Step until outside of current statement.  */
@@ -400,7 +400,7 @@ which has no line number information.\n", name);
        step_over_calls = 1;
 
       step_multi = (count > 1);
-      proceed ((CORE_ADDR) -1, -1, 1);
+      proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 1);
       if (! stop_step)
        break;
 
@@ -468,7 +468,7 @@ jump_command (arg, from_tty)
                     local_hex_string((unsigned long) addr));
 
   clear_proceed_status ();
-  proceed (addr, 0, 0);
+  proceed (addr, TARGET_SIGNAL_0, 0);
 }
 
 /* Continue program giving it specified signal.  */
@@ -478,7 +478,7 @@ signal_command (signum_exp, from_tty)
      char *signum_exp;
      int from_tty;
 {
-  register int signum;
+  enum target_signal oursig;
 
   dont_repeat ();              /* Too dangerous.  */
   ERROR_NO_INFERIOR;
@@ -489,25 +489,36 @@ signal_command (signum_exp, from_tty)
   /* It would be even slicker to make signal names be valid expressions,
      (the type could be "enum $signal" or some such), then the user could
      assign them to convenience variables.  */
-  signum = strtosigno (signum_exp);
+  oursig = target_signal_from_name (signum_exp);
 
-  if (signum == 0)
-    /* Not found as a name, try it as an expression.  */
-    signum = parse_and_eval_address (signum_exp);
+  if (oursig == TARGET_SIGNAL_UNKNOWN)
+    {
+      /* Not found as a name, try it as an expression.  */
+      /* The numeric signal refers to our own internal signal numbering
+        from target.h, not to host/target signal number.  This is a
+        feature; users really should be using symbolic names anyway,
+        and the common ones like SIGHUP, SIGINT, SIGALRM, etc.  will
+        work right anyway.  */
+      int signum = parse_and_eval_address (signum_exp);
+      if (signum < 0
+         || signum >= (int)TARGET_SIGNAL_LAST
+         || signum == (int)TARGET_SIGNAL_UNKNOWN
+         || signum == (int)TARGET_SIGNAL_DEFAULT)
+       error ("Invalid signal number %d.", signum);
+      oursig = signum;
+    }
 
   if (from_tty)
     {
-      char *signame = strsigno (signum);
-      printf_filtered ("Continuing with signal ");
-      if (signame == NULL || signum == 0)
-       printf_filtered ("%d.\n", signum);
+      if (oursig == TARGET_SIGNAL_0)
+       printf_filtered ("Continuing with no signal.\n");
       else
-       /* Do we need to print the number as well as the name?  */
-       printf_filtered ("%s (%d).\n", signame, signum);
+       printf_filtered ("Continuing with signal %s.\n",
+                        target_signal_to_name (oursig));
     }
 
   clear_proceed_status ();
-  proceed (stop_pc, signum, 0);
+  proceed (stop_pc, oursig, 0);
 }
 
 /* Call breakpoint_auto_delete on the current contents of the bpstat
@@ -592,7 +603,7 @@ run_stack_dummy (addr, buffer)
 #endif /* CALL_DUMMY_BREAKPOINT_OFFSET.  */
 
   proceed_to_finish = 1;       /* We want stop_registers, please... */
-  proceed (addr, 0, 0);
+  proceed (addr, TARGET_SIGNAL_0, 0);
 
   discard_cleanups (old_cleanups);
 
@@ -610,8 +621,8 @@ run_stack_dummy (addr, buffer)
 
    Note that eventually this command should probably be changed so
    that only source lines are printed out when we hit the breakpoint
-   we set.  I'm going to postpone this until after a hopeful rewrite
-   of wait_for_inferior and the proceed status code. -- randy */
+   we set.  This may involve changes to wait_for_inferior and the
+   proceed status code.  */
 
 /* ARGSUSED */
 static void
@@ -657,7 +668,7 @@ until_next_command (from_tty)
   
   step_multi = 0;              /* Only one call to proceed */
   
-  proceed ((CORE_ADDR) -1, -1, 1);
+  proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 1);
 }
 
 static void 
@@ -723,7 +734,7 @@ finish_command (arg, from_tty)
     }
 
   proceed_to_finish = 1;               /* We want stop_registers, please... */
-  proceed ((CORE_ADDR) -1, -1, 0);
+  proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 0);
 
   /* Did we stop at our breakpoint? */
   if (bpstat_find_breakpoint(stop_bpstat, breakpoint) != NULL
@@ -788,21 +799,12 @@ program_info (args, from_tty)
          num = bpstat_num (&bs);
        }
     }
-  else if (stop_signal)
+  else if (stop_signal != TARGET_SIGNAL_0)
     {
-#ifdef PRINT_RANDOM_SIGNAL
-      PRINT_RANDOM_SIGNAL (stop_signal);
-#else
-      char *signame = strsigno (stop_signal);
-      printf_filtered ("It stopped with signal ");
-      if (signame == NULL)
-       printf_filtered ("%d", stop_signal);
-      else
-       /* Do we need to print the number as well as the name?  */
-       printf_filtered ("%s (%d)", signame, stop_signal);
-      printf_filtered (", %s.\n", safe_strsignal (stop_signal));
-#endif
-  }
+      printf_filtered ("It stopped with signal %s, %s.\n",
+                      target_signal_to_name (stop_signal),
+                      target_signal_to_string (stop_signal));
+    }
 
   if (!from_tty)
     printf_filtered ("Type \"info stack\" or \"info registers\" for more information.\n");
@@ -1070,14 +1072,24 @@ do_registers_info (regnum, fpregs)
       fputs_filtered (reg_names[i], gdb_stdout);
       print_spaces_filtered (15 - strlen (reg_names[i]), gdb_stdout);
 
-      /* Get the data in raw format, then convert also to virtual format.  */
+      /* Get the data in raw format.  */
       if (read_relative_register_raw_bytes (i, raw_buffer))
        {
          printf_filtered ("Invalid register contents\n");
          continue;
        }
-      
-      REGISTER_CONVERT_TO_VIRTUAL (i, raw_buffer, virtual_buffer);
+
+      /* Convert raw data to virtual format if necessary.  */
+#ifdef REGISTER_CONVERTIBLE
+      if (REGISTER_CONVERTIBLE (i))
+       {
+         REGISTER_CONVERT_TO_VIRTUAL (i, REGISTER_VIRTUAL_TYPE (i),
+                                      raw_buffer, virtual_buffer);
+       }
+      else
+#endif
+       memcpy (virtual_buffer, raw_buffer,
+               REGISTER_VIRTUAL_SIZE (i));
 
       /* If virtual format is floating, print it that way, and in raw hex.  */
       if (TYPE_CODE (REGISTER_VIRTUAL_TYPE (i)) == TYPE_CODE_FLT
This page took 0.027322 seconds and 4 git commands to generate.