aboutsummaryrefslogtreecommitdiff
path: root/gdb/inf-child.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/inf-child.c')
-rw-r--r--gdb/inf-child.c36
1 files changed, 28 insertions, 8 deletions
diff --git a/gdb/inf-child.c b/gdb/inf-child.c
index 8e5ebfa..2f5babe 100644
--- a/gdb/inf-child.c
+++ b/gdb/inf-child.c
@@ -39,6 +39,18 @@
#include <fcntl.h>
#include <unistd.h>
+static const target_info inf_child_target_info = {
+ "native",
+ N_("Native process"),
+ N_("Native process (started by the \"run\" command).")
+};
+
+const target_info &
+inf_child_target::info () const
+{
+ return inf_child_target_info;
+}
+
/* Helper function for child_wait and the derivatives of child_wait.
HOSTSTATUS is the waitstatus from wait() or the equivalent; store our
translation of that in OURSTATUS. */
@@ -139,9 +151,14 @@ static int inf_child_explicitly_opened;
/* See inf-child.h. */
void
-inf_child_open_target (struct target_ops *target, const char *arg,
- int from_tty)
+inf_child_open_target (const char *arg, int from_tty)
{
+ target_ops *target = get_native_target ();
+
+ /* There's always only ever one native target, and if we get here,
+ it better be an inf-child target. */
+ gdb_assert (dynamic_cast<inf_child_target *> (target) != NULL);
+
target_preopen (from_tty);
push_target (target);
inf_child_explicitly_opened = 1;
@@ -149,12 +166,6 @@ inf_child_open_target (struct target_ops *target, const char *arg,
printf_filtered ("Done. Use the \"run\" command to start a process.\n");
}
-void
-inf_child_target::open (const char *arg, int from_tty)
-{
- inf_child_open_target (this, arg, from_tty);
-}
-
/* Implement the to_disconnect target_ops method. */
void
@@ -426,3 +437,12 @@ inf_child_target::inf_child_target ()
{
this->to_stratum = process_stratum;
}
+
+/* See inf-child.h. */
+
+void
+add_inf_child_target (inf_child_target *target)
+{
+ set_native_target (target);
+ add_target (inf_child_target_info, inf_child_open_target);
+}