Change target_bfd_reopen to take a gdb_bfd_ref_ptr

While looking at Andrew's recent target sections series, I saw that
target_bfd_reopen took a "bfd *", leading to a call to new_reference.
However, because the only caller of target_bfd_reopen is already using
gdb_bfd_ref_ptr, this code can be simplified and the explicit call to
new_reference can be removed.

gdb/ChangeLog
2021-02-22  Tom Tromey  <tromey@adacore.com>

	* solib-svr4.c (enable_break): Update.
	* bfd-target.c (class target_bfd) <target_bfd>: Change parameter
	type.
	(target_bfd_reopen): Change parameter type.
	* bfd-target.h (target_bfd_reopen): Change parameter type.
This commit is contained in:
Tom Tromey 2021-02-22 09:47:37 -07:00
parent f53fc42716
commit 15908a11ba
4 changed files with 19 additions and 13 deletions

View File

@ -1,3 +1,11 @@
2021-02-22 Tom Tromey <tromey@adacore.com>
* solib-svr4.c (enable_break): Update.
* bfd-target.c (class target_bfd) <target_bfd>: Change parameter
type.
(target_bfd_reopen): Change parameter type.
* bfd-target.h (target_bfd_reopen): Change parameter type.
2021-02-22 Simon Marchi <simon.marchi@polymtl.ca> 2021-02-22 Simon Marchi <simon.marchi@polymtl.ca>
* thread.c (add_thread_silent): Add assert. * thread.c (add_thread_silent): Add assert.

View File

@ -34,7 +34,7 @@ static const target_info target_bfd_target_info = {
class target_bfd : public target_ops class target_bfd : public target_ops
{ {
public: public:
explicit target_bfd (struct bfd *bfd); explicit target_bfd (const gdb_bfd_ref_ptr &bfd);
const target_info &info () const override const target_info &info () const override
{ return target_bfd_target_info; } { return target_bfd_target_info; }
@ -88,14 +88,14 @@ target_bfd::get_section_table ()
return &m_table; return &m_table;
} }
target_bfd::target_bfd (struct bfd *abfd) target_bfd::target_bfd (const gdb_bfd_ref_ptr &abfd)
: m_bfd (gdb_bfd_ref_ptr::new_reference (abfd)), : m_bfd (abfd),
m_table (build_section_table (abfd)) m_table (build_section_table (abfd.get ()))
{ {
} }
target_ops * target_ops *
target_bfd_reopen (struct bfd *abfd) target_bfd_reopen (const gdb_bfd_ref_ptr &abfd)
{ {
return new target_bfd (abfd); return new target_bfd (abfd);
} }

View File

@ -20,12 +20,11 @@
#ifndef BFD_TARGET_H #ifndef BFD_TARGET_H
#define BFD_TARGET_H #define BFD_TARGET_H
struct bfd; #include "gdb_bfd.h"
struct target_ops; struct target_ops;
/* Given an existing BFD, re-open it as a "struct target_ops". This /* Given an existing BFD, re-open it as a "struct target_ops". */
acquires a new reference to the BFD. This reference will be struct target_ops *target_bfd_reopen (const gdb_bfd_ref_ptr &bfd);
released when the target is closed. */
struct target_ops *target_bfd_reopen (struct bfd *bfd);
#endif #endif

View File

@ -2333,9 +2333,8 @@ enable_break (struct svr4_info *info, int from_tty)
goto bkpt_at_symbol; goto bkpt_at_symbol;
/* Now convert the TMP_BFD into a target. That way target, as /* Now convert the TMP_BFD into a target. That way target, as
well as BFD operations can be used. target_bfd_reopen well as BFD operations can be used. */
acquires its own reference. */ tmp_bfd_target = target_bfd_reopen (tmp_bfd);
tmp_bfd_target = target_bfd_reopen (tmp_bfd.get ());
/* On a running target, we can get the dynamic linker's base /* On a running target, we can get the dynamic linker's base
address from the shared library table. */ address from the shared library table. */