import gdb-19990422 snapshot
[deliverable/binutils-gdb.git] / gdb / target.c
index 808eb8fc16d2012dbfcbc1eaf340b2b425e1b437..bf9dc3b97f9a3d5c4e9d9d278077c947ca2dd000 100644 (file)
@@ -208,15 +208,12 @@ static struct cmd_list_element *targetlist = NULL;
 
 int attach_flag;
 
-#ifdef MAINTENANCE_CMDS
 /* Non-zero if we want to see trace of target level stuff.  */
 
 static int targetdebug = 0;
 
 static void setup_target_debug PARAMS ((void));
 
-#endif
-
 /* The user just typed 'target' without the name of a target.  */
 
 /* ARGSUSED */
@@ -608,10 +605,8 @@ push_target (t)
 
   cleanup_target (&current_target); /* Fill in the gaps */
 
-#ifdef MAINTENANCE_CMDS
   if (targetdebug)
     setup_target_debug ();
-#endif
 
   return prev != 0;
 }
@@ -1105,6 +1100,30 @@ return_one ()
   return 1;
 }
 
+/* Find a single runnable target in the stack and return it.  If for
+   some reason there is more than one, return NULL.  */
+
+struct target_ops *
+find_run_target ()
+{
+  struct target_ops **t;
+  struct target_ops *runable = NULL;
+  int count;
+  
+  count = 0;
+  
+  for (t = target_structs; t < target_structs + target_struct_size; ++t)
+    {
+      if ((*t)->to_can_run && target_can_run(*t))
+       {
+         runable = *t;
+         ++count;
+       }
+    }
+  
+  return (count == 1 ? runable : NULL);
+}
+
 struct target_ops *
 find_core_target ()
 {
@@ -1248,6 +1267,8 @@ static struct {
   {"EXC_SOFTWARE", "Software generated exception"},
   {"EXC_BREAKPOINT", "Breakpoint"},
 #endif
+  {"SIGINFO", "Information request"},
+
   {NULL, "Unknown signal"},
   {NULL, "Internal error: printing TARGET_SIGNAL_DEFAULT"},
 
@@ -1260,7 +1281,10 @@ char *
 target_signal_to_string (sig)
      enum target_signal sig;
 {
-  return signals[sig].string;
+  if ((sig >= TARGET_SIGNAL_FIRST) && (sig <= TARGET_SIGNAL_LAST))
+    return signals[sig].string;
+  else
+    return signals[TARGET_SIGNAL_UNKNOWN].string;
 }
 
 /* Return the name for a signal.  */
@@ -1466,6 +1490,10 @@ target_signal_from_host (hostsig)
   if (hostsig == _NSIG + EXC_BREAKPOINT) return TARGET_EXC_BREAKPOINT;
 #endif
 
+#if defined (SIGINFO)
+  if (hostsig == SIGINFO) return TARGET_SIGNAL_INFO;
+#endif
+
 #if defined (REALTIME_LO)
   if (hostsig >= REALTIME_LO && hostsig < REALTIME_HI)
     return (enum target_signal)
@@ -1640,6 +1668,10 @@ target_signal_to_host (oursig)
     case TARGET_EXC_BREAKPOINT: return _NSIG + EXC_BREAKPOINT;
 #endif
 
+#if defined (SIGINFO)
+    case TARGET_SIGNAL_INFO: return SIGINFO;
+#endif
+
     default:
 #if defined (REALTIME_LO)
       if (oursig >= TARGET_SIGNAL_REALTIME_33
@@ -1768,7 +1800,6 @@ init_dummy_target ()
 }
 
 \f
-#ifdef MAINTENANCE_CMDS
 static struct target_ops debug_target;
 
 static void
@@ -2308,7 +2339,8 @@ debug_to_has_execd (pid, execd_pathname)
   has_execd = debug_target.to_has_execd (pid, execd_pathname);
 
   fprintf_unfiltered (gdb_stderr, "target_has_execd (%d, %s) = %d\n",
-                      pid, *execd_pathname, has_execd);
+                      pid, (*execd_pathname ? *execd_pathname : "<NULL>"),
+                     has_execd);
 
   return has_execd;
 }
@@ -2447,19 +2479,21 @@ debug_to_enable_exception_callback (kind, enable)
   enum exception_event_kind kind;
   int enable;
 {
-  debug_target.to_enable_exception_callback (kind, enable);
-
+  struct symtab_and_line *result;
+  result = debug_target.to_enable_exception_callback (kind, enable);
   fprintf_unfiltered (gdb_stderr,
                      "target get_exception_callback_sal (%d, %d)\n",
                      kind, enable);
+  return result;
 }
 
 static struct exception_event_record *
 debug_to_get_current_exception_event ()
 {
-  debug_target.to_get_current_exception_event();
-
+  struct exception_event_record *result;
+  result = debug_target.to_get_current_exception_event();
   fprintf_unfiltered (gdb_stderr, "target get_current_exception_event ()\n");
+  return result;
 }
 
 static char *
@@ -2551,7 +2585,7 @@ setup_target_debug ()
   current_target.to_core_file_to_sym_file = debug_to_core_file_to_sym_file;
 
 }
-#endif /* MAINTENANCE_CMDS */
+
 \f
 static char targ_desc[] = 
     "Names of targets and files being debugged.\n\
@@ -2567,14 +2601,12 @@ initialize_targets ()
   add_info ("target", target_info, targ_desc);
   add_info ("files", target_info, targ_desc);
 
-#ifdef MAINTENANCE_CMDS
   add_show_from_set (
      add_set_cmd ("targetdebug", class_maintenance, var_zinteger,
                  (char *)&targetdebug,
                 "Set target debugging.\n\
 When non-zero, target debugging is enabled.", &setlist),
                     &showlist);
-#endif
 
   if (!STREQ (signals[TARGET_SIGNAL_LAST].string, "TARGET_SIGNAL_MAGIC"))
     abort ();
This page took 0.025244 seconds and 4 git commands to generate.