aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2018-05-11 12:36:19 -0600
committerTom Tromey <tom@tromey.com>2018-05-16 11:45:03 -0600
commit06333fea767dc1eaf88ac286293fcbaa0ef2de9e (patch)
tree69d1ea0454bb40bd7407c990c8edc203fd9d7b58 /gdb
parent921222e2e8e8427c6a609b1ff66265dceb0d07eb (diff)
downloadgdb-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/ChangeLog8
-rw-r--r--gdb/corelow.c5
-rw-r--r--gdb/gdbcore.h2
-rw-r--r--gdb/progspace.h3
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