diff options
author | Tom Tromey <tromey@adacore.com> | 2019-02-06 02:54:17 -0700 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2019-02-15 13:53:43 -0700 |
commit | dea57a626364698759d1525acf9109771d173811 (patch) | |
tree | 7385e42d07f72232fa630e5e370ba26f02906f52 /gdb | |
parent | 989f3c583d31e29029b1b7dd8ffd3afacbbb5c27 (diff) | |
download | gdb-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/ChangeLog | 7 | ||||
-rw-r--r-- | gdb/corelow.c | 3 | ||||
-rw-r--r-- | gdb/remote.c | 4 | ||||
-rw-r--r-- | gdb/target.c | 9 | ||||
-rw-r--r-- | gdb/target.h | 3 |
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); |