mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-27 03:51:15 +08:00
* gdb_bfd.h: Include registry.h. Use DECLARE_REGISTRY.
* gdb_bfd.c: Use DEFINE_REGISTRY. (struct gdb_bfd_data): Add REGISTRY_FIELDS. (gdb_bfd_ref): Call bfd_alloc_data. (gdb_bfd_unref): Call bfd_free_data.
This commit is contained in:
parent
6b81941e35
commit
e992eda4f6
@ -1,3 +1,11 @@
|
||||
2012-08-22 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
* gdb_bfd.h: Include registry.h. Use DECLARE_REGISTRY.
|
||||
* gdb_bfd.c: Use DEFINE_REGISTRY.
|
||||
(struct gdb_bfd_data): Add REGISTRY_FIELDS.
|
||||
(gdb_bfd_ref): Call bfd_alloc_data.
|
||||
(gdb_bfd_unref): Call bfd_free_data.
|
||||
|
||||
2012-08-22 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
* registry.h (struct registry_fields): New.
|
||||
|
@ -85,8 +85,16 @@ struct gdb_bfd_data
|
||||
/* If the BFD comes from an archive, this points to the archive's
|
||||
BFD. Otherwise, this is NULL. */
|
||||
bfd *archive_bfd;
|
||||
|
||||
/* The registry. */
|
||||
REGISTRY_FIELDS;
|
||||
};
|
||||
|
||||
#define GDB_BFD_DATA_ACCESSOR(ABFD) \
|
||||
((struct gdb_bfd_data *) bfd_usrdata (ABFD))
|
||||
|
||||
DEFINE_REGISTRY (bfd, GDB_BFD_DATA_ACCESSOR)
|
||||
|
||||
/* A hash table storing all the BFDs maintained in the cache. */
|
||||
|
||||
static htab_t gdb_bfd_cache;
|
||||
@ -256,6 +264,8 @@ gdb_bfd_ref (struct bfd *abfd)
|
||||
gdata->archive_bfd = NULL;
|
||||
bfd_usrdata (abfd) = gdata;
|
||||
|
||||
bfd_alloc_data (abfd);
|
||||
|
||||
/* This is the first we've seen it, so add it to the hash table. */
|
||||
slot = htab_find_slot (all_bfds, abfd, INSERT);
|
||||
gdb_assert (slot && !*slot);
|
||||
@ -297,6 +307,7 @@ gdb_bfd_unref (struct bfd *abfd)
|
||||
htab_clear_slot (gdb_bfd_cache, slot);
|
||||
}
|
||||
|
||||
bfd_free_data (abfd);
|
||||
bfd_usrdata (abfd) = NULL; /* Paranoia. */
|
||||
|
||||
htab_remove_elt (all_bfds, abfd);
|
||||
|
@ -21,6 +21,10 @@
|
||||
#ifndef GDB_BFD_H
|
||||
#define GDB_BFD_H
|
||||
|
||||
#include "registry.h"
|
||||
|
||||
DECLARE_REGISTRY (bfd);
|
||||
|
||||
/* Make a copy ABFD's filename using bfd_alloc, and reassign it to the
|
||||
BFD. This ensures that the BFD's filename has the same lifetime as
|
||||
the BFD itself. */
|
||||
|
Loading…
Reference in New Issue
Block a user