aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorTom Tromey <tromey@adacore.com>2019-02-06 02:54:17 -0700
committerTom Tromey <tromey@adacore.com>2019-02-15 13:53:43 -0700
commitdea57a626364698759d1525acf9109771d173811 (patch)
tree7385e42d07f72232fa630e5e370ba26f02906f52 /gdb
parent989f3c583d31e29029b1b7dd8ffd3afacbbb5c27 (diff)
downloadgdb-dea57a626364698759d1525acf9109771d173811.zip
gdb-dea57a626364698759d1525acf9109771d173811.tar.gz
gdb-dea57a626364698759d1525acf9109771d173811.tar.bz2
Add push_target overload
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.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog7
-rw-r--r--gdb/corelow.c3
-rw-r--r--gdb/remote.c4
-rw-r--r--gdb/target.c9
-rw-r--r--gdb/target.h3
5 files changed, 21 insertions, 5 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 2e72ab6..fea01a8 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -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)
diff --git a/gdb/corelow.c b/gdb/corelow.c
index 52d6d95..6a29d6a 100644
--- a/gdb/corelow.c
+++ b/gdb/corelow.c
@@ -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;
diff --git a/gdb/remote.c b/gdb/remote.c
index 85af01e..36136e3 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
@@ -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
diff --git a/gdb/target.c b/gdb/target.c
index c1ab07f..116510e 100644
--- a/gdb/target.c
+++ b/gdb/target.c
@@ -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
diff --git a/gdb/target.h b/gdb/target.h
index 96413aa..c95151a 100644
--- a/gdb/target.h
+++ b/gdb/target.h
@@ -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);