/* Very simple "bfd" target, for GDB, the GNU debugger.
- Copyright (C) 2003-2018 Free Software Foundation, Inc.
+ Copyright (C) 2003-2020 Free Software Foundation, Inc.
This file is part of GDB.
#include "gdb_bfd.h"
/* A target that wraps a BFD. */
+
+static const target_info target_bfd_target_info = {
+ "bfd",
+ N_("BFD backed target"),
+ N_("You should never see this")
+};
+
class target_bfd : public target_ops
{
public:
explicit target_bfd (struct bfd *bfd);
~target_bfd () override;
- const char *shortname () override
- { return "bfd"; }
-
- const char *longname () override
- { return _("BFD backed target"); }
+ const target_info &info () const override
+ { return target_bfd_target_info; }
- const char *doc () override
- { return _("You should never see this"); }
+ strata stratum () const override { return file_stratum; }
void close () override;
private:
/* The BFD we're wrapping. */
- struct bfd *m_bfd;
+ gdb_bfd_ref_ptr m_bfd;
/* The section table build from the ALLOC sections in BFD. Note
that we can't rely on extracting the BFD from a random section in
}
target_bfd::target_bfd (struct bfd *abfd)
+ : m_bfd (gdb_bfd_ref_ptr::new_reference (abfd))
{
- this->to_stratum = file_stratum;
- m_bfd = abfd;
- gdb_bfd_ref (abfd);
m_table.sections = NULL;
m_table.sections_end = NULL;
build_section_table (abfd, &m_table.sections, &m_table.sections_end);
target_bfd::~target_bfd ()
{
- gdb_bfd_unref (m_bfd);
xfree (m_table.sections);
}