* target.c (find_default_run_target): Allow a NULL `do_mesg'
authorPedro Alves <palves@redhat.com>
Fri, 28 Mar 2008 16:37:08 +0000 (16:37 +0000)
committerPedro Alves <palves@redhat.com>
Fri, 28 Mar 2008 16:37:08 +0000 (16:37 +0000)
parameter.  If it is NULL, don't call error.
(find_default_can_async_p, find_default_is_async_p): Pass NULL as
`do_mesg' parameter to find_default_run_target.  If no target was
found, return 0.

gdb/ChangeLog
gdb/target.c

index 075b917ced6d956334eb21a87614f0900f1e802b..e0e7d219abec99533ed376e9b8112fac35d176b4 100644 (file)
@@ -1,3 +1,11 @@
+2008-03-28  Pedro Alves  <pedro@codesourcery.com>
+
+       * target.c (find_default_run_target): Allow a NULL `do_mesg'
+       parameter.  If it is NULL, don't call error.
+       (find_default_can_async_p, find_default_is_async_p): Pass NULL as
+       `do_mesg' parameter to find_default_run_target.  If no target was
+       found, return 0.
+
 2008-03-28  Daniel Jacobowitz  <dan@codesourcery.com>
 
        * mips-linux-tdep.c: Update N32/N64 signal frame comments.
index 7cf6cf3bd7a785b5d80e76c5ed3c6b73a91aa457..7f53944bacdbca2589e7b3b6c9a9012a300a377d 100644 (file)
@@ -1782,7 +1782,8 @@ The \"%s\" target does not support \"run\".  Try \"help target\" or \"continue\"
    execute a run or attach command without any other data.  This is
    used to locate the default process stratum.
 
-   Result is always valid (error() is called for errors).  */
+   If DO_MESG is not NULL, the result is always valid (error() is
+   called for errors); else, return NULL on error.  */
 
 static struct target_ops *
 find_default_run_target (char *do_mesg)
@@ -1804,7 +1805,12 @@ find_default_run_target (char *do_mesg)
     }
 
   if (count != 1)
-    error (_("Don't know how to %s.  Try \"help target\"."), do_mesg);
+    {
+      if (do_mesg)
+       error (_("Don't know how to %s.  Try \"help target\"."), do_mesg);
+      else
+       return NULL;
+    }
 
   return runable;
 }
@@ -1835,8 +1841,12 @@ find_default_can_async_p (void)
 {
   struct target_ops *t;
 
-  t = find_default_run_target ("async");
-  if (t->to_can_async_p)
+  /* This may be called before the target is pushed on the stack;
+     look for the default process stratum.  If there's none, gdb isn't
+     configured with a native debugger, and target remote isn't
+     connected yet.  */
+  t = find_default_run_target (NULL);
+  if (t && t->to_can_async_p)
     return (t->to_can_async_p) ();
   return 0;
 }
@@ -1846,8 +1856,12 @@ find_default_is_async_p (void)
 {
   struct target_ops *t;
 
-  t = find_default_run_target ("async");
-  if (t->to_is_async_p)
+  /* This may be called before the target is pushed on the stack;
+     look for the default process stratum.  If there's none, gdb isn't
+     configured with a native debugger, and target remote isn't
+     connected yet.  */
+  t = find_default_run_target (NULL);
+  if (t && t->to_is_async_p)
     return (t->to_is_async_p) ();
   return 0;
 }