From 15908a11ba92bcc30a92b70ee75e2576d915e0c1 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Mon, 22 Feb 2021 09:47:37 -0700 Subject: [PATCH] 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 * solib-svr4.c (enable_break): Update. * bfd-target.c (class target_bfd) : Change parameter type. (target_bfd_reopen): Change parameter type. * bfd-target.h (target_bfd_reopen): Change parameter type. --- gdb/ChangeLog | 8 ++++++++ gdb/bfd-target.c | 10 +++++----- gdb/bfd-target.h | 9 ++++----- gdb/solib-svr4.c | 5 ++--- 4 files changed, 19 insertions(+), 13 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 9de0e235dc0..00ac68ae325 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2021-02-22 Tom Tromey + + * solib-svr4.c (enable_break): Update. + * bfd-target.c (class 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 * thread.c (add_thread_silent): Add assert. diff --git a/gdb/bfd-target.c b/gdb/bfd-target.c index 90d247a981a..689dbb19e25 100644 --- a/gdb/bfd-target.c +++ b/gdb/bfd-target.c @@ -34,7 +34,7 @@ static const target_info target_bfd_target_info = { class target_bfd : public target_ops { public: - explicit target_bfd (struct bfd *bfd); + explicit target_bfd (const gdb_bfd_ref_ptr &bfd); const target_info &info () const override { return target_bfd_target_info; } @@ -88,14 +88,14 @@ target_bfd::get_section_table () return &m_table; } -target_bfd::target_bfd (struct bfd *abfd) - : m_bfd (gdb_bfd_ref_ptr::new_reference (abfd)), - m_table (build_section_table (abfd)) +target_bfd::target_bfd (const gdb_bfd_ref_ptr &abfd) + : m_bfd (abfd), + m_table (build_section_table (abfd.get ())) { } target_ops * -target_bfd_reopen (struct bfd *abfd) +target_bfd_reopen (const gdb_bfd_ref_ptr &abfd) { return new target_bfd (abfd); } diff --git a/gdb/bfd-target.h b/gdb/bfd-target.h index 199ada8c73f..3d37b5fca9f 100644 --- a/gdb/bfd-target.h +++ b/gdb/bfd-target.h @@ -20,12 +20,11 @@ #ifndef BFD_TARGET_H #define BFD_TARGET_H -struct bfd; +#include "gdb_bfd.h" + struct target_ops; -/* Given an existing BFD, re-open it as a "struct target_ops". This - acquires a new reference to the BFD. This reference will be - released when the target is closed. */ -struct target_ops *target_bfd_reopen (struct bfd *bfd); +/* Given an existing BFD, re-open it as a "struct target_ops". */ +struct target_ops *target_bfd_reopen (const gdb_bfd_ref_ptr &bfd); #endif diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c index 0416faa17c3..5d0d3803086 100644 --- a/gdb/solib-svr4.c +++ b/gdb/solib-svr4.c @@ -2333,9 +2333,8 @@ enable_break (struct svr4_info *info, int from_tty) goto bkpt_at_symbol; /* Now convert the TMP_BFD into a target. That way target, as - well as BFD operations can be used. target_bfd_reopen - acquires its own reference. */ - tmp_bfd_target = target_bfd_reopen (tmp_bfd.get ()); + well as BFD operations can be used. */ + tmp_bfd_target = target_bfd_reopen (tmp_bfd); /* On a running target, we can get the dynamic linker's base address from the shared library table. */ -- 2.30.2