diff options
author | Tom Tromey <tom@tromey.com> | 2018-05-11 12:36:19 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2018-05-16 11:45:03 -0600 |
commit | 06333fea767dc1eaf88ac286293fcbaa0ef2de9e (patch) | |
tree | 69d1ea0454bb40bd7407c990c8edc203fd9d7b58 /gdb | |
parent | 921222e2e8e8427c6a609b1ff66265dceb0d07eb (diff) | |
download | gdb-06333fea767dc1eaf88ac286293fcbaa0ef2de9e.zip gdb-06333fea767dc1eaf88ac286293fcbaa0ef2de9e.tar.gz gdb-06333fea767dc1eaf88ac286293fcbaa0ef2de9e.tar.bz2 |
Make "cbfd" a gdb_bfd_ref_ptr
This changes program_space::cbfd to be a gdb_bfd_ref_ptr. This makes
it somewhat less error-prone to use, because now it manages the
reference counting automatically.
Tested by the buildbot.
2018-05-16 Tom Tromey <tom@tromey.com>
* gdbcore.h (core_bfd): Redefine.
* corelow.c (core_target::close): Update.
(core_target_open): Update.
* progspace.h (struct program_space) <cbfd>: Now a
gdb_bfd_ref_ptr.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 8 | ||||
-rw-r--r-- | gdb/corelow.c | 5 | ||||
-rw-r--r-- | gdb/gdbcore.h | 2 | ||||
-rw-r--r-- | gdb/progspace.h | 3 |
4 files changed, 13 insertions, 5 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 65b9098..b8d8fe6 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,13 @@ 2018-05-16 Tom Tromey <tom@tromey.com> + * gdbcore.h (core_bfd): Redefine. + * corelow.c (core_target::close): Update. + (core_target_open): Update. + * progspace.h (struct program_space) <cbfd>: Now a + gdb_bfd_ref_ptr. + +2018-05-16 Tom Tromey <tom@tromey.com> + PR cli/19551: * symfile-add-flags.h (enum symfile_add_flags) <SYMFILE_NOT_FILENAME>: New constant. diff --git a/gdb/corelow.c b/gdb/corelow.c index 439fe13..c617527 100644 --- a/gdb/corelow.c +++ b/gdb/corelow.c @@ -270,8 +270,7 @@ core_target::close () comments in clear_solib in solib.c. */ clear_solib (); - gdb_bfd_unref (core_bfd); - core_bfd = NULL; + current_program_space->cbfd.reset (nullptr); } /* Core targets are heap-allocated (see core_target_open), so here @@ -406,7 +405,7 @@ core_target_open (const char *arg, int from_tty) filename.get (), bfd_errmsg (bfd_get_error ())); } - core_bfd = temp_bfd.release (); + current_program_space->cbfd = std::move (temp_bfd); core_target *target = new core_target (); diff --git a/gdb/gdbcore.h b/gdb/gdbcore.h index 04a4b47..18ba0d7 100644 --- a/gdb/gdbcore.h +++ b/gdb/gdbcore.h @@ -133,7 +133,7 @@ extern void specify_exec_file_hook (void (*hook) (const char *filename)); /* Binary File Diddler for the core file. */ -#define core_bfd (current_program_space->cbfd) +#define core_bfd (current_program_space->cbfd.get ()) /* Whether to open exec and core files read-only or read-write. */ diff --git a/gdb/progspace.h b/gdb/progspace.h index 835fcfd..456911b 100644 --- a/gdb/progspace.h +++ b/gdb/progspace.h @@ -23,6 +23,7 @@ #include "target.h" #include "vec.h" +#include "gdb_bfd.h" #include "gdb_vecs.h" #include "registry.h" @@ -158,7 +159,7 @@ struct program_space char *pspace_exec_filename = NULL; /* Binary file diddling handle for the core file. */ - bfd *cbfd = NULL; + gdb_bfd_ref_ptr cbfd; /* The address space attached to this program space. More than one program space may be bound to the same address space. In the |