Add push_target overload
authorTom Tromey <tromey@adacore.com>
Wed, 6 Feb 2019 09:54:17 +0000 (02:54 -0700)
committerTom Tromey <tromey@adacore.com>
Fri, 15 Feb 2019 20:53:43 +0000 (13:53 -0700)
This adds a push_target overload that takes a "target_ops_up &&".
This removes some calls to release a target_ops_up, and makes the
intent here clearer.

gdb/ChangeLog
2019-02-15  Tom Tromey  <tromey@adacore.com>

* target.h (push_target): Declare new overload.
* target.c (push_target): New overload, taking an rvalue reference.
* remote.c (remote_target::open_1): Use push_target overload.
* corelow.c (core_target_open): Use push_target overload.

gdb/ChangeLog
gdb/corelow.c
gdb/remote.c
gdb/target.c
gdb/target.h

index 2e72ab6..fea01a8 100644 (file)
@@ -1,5 +1,12 @@
 2019-02-15  Tom Tromey  <tromey@adacore.com>
 
+       * target.h (push_target): Declare new overload.
+       * target.c (push_target): New overload, taking an rvalue reference.
+       * remote.c (remote_target::open_1): Use push_target overload.
+       * corelow.c (core_target_open): Use push_target overload.
+
+2019-02-15  Tom Tromey  <tromey@adacore.com>
+
        * ravenscar-thread.c (is_ravenscar_task)
        (ravenscar_task_is_currently_active): Return bool.
        (ravenscar_update_inferior_ptid, get_running_thread_msymbol)
index 52d6d95..6a29d6a 100644 (file)
@@ -417,8 +417,7 @@ core_target_open (const char *arg, int from_tty)
   if (!exec_bfd)
     set_gdbarch_from_file (core_bfd);
 
-  push_target (target);
-  target_holder.release ();
+  push_target (std::move (target_holder));
 
   inferior_ptid = null_ptid;
 
index 85af01e..36136e3 100644 (file)
@@ -5547,9 +5547,7 @@ remote_target::open_1 (const char *name, int from_tty, int extended_p)
     }
 
   /* Switch to using the remote target now.  */
-  push_target (remote);
-  /* The target stack owns the target now.  */
-  target_holder.release ();
+  push_target (std::move (target_holder));
 
   /* Register extra event sources in the event loop.  */
   rs->remote_async_inferior_event_token
index c1ab07f..116510e 100644 (file)
@@ -585,6 +585,15 @@ push_target (struct target_ops *t)
   g_target_stack.push (t);
 }
 
+/* See target.h  */
+
+void
+push_target (target_ops_up &&t)
+{
+  g_target_stack.push (t.get ());
+  t.release ();
+}
+
 /* See target.h.  */
 
 int
index 96413aa..c95151a 100644 (file)
@@ -2333,6 +2333,9 @@ extern void add_deprecated_target_alias (const target_info &info,
 
 extern void push_target (struct target_ops *);
 
+/* An overload that deletes the target on failure.  */
+extern void push_target (target_ops_up &&);
+
 extern int unpush_target (struct target_ops *);
 
 extern void target_pre_inferior (int);