/* Definitions for BFD wrappers used by GDB.
- Copyright (C) 2011-2015 Free Software Foundation, Inc.
+ Copyright (C) 2011-2017 Free Software Foundation, Inc.
This file is part of GDB.
static hashval_t
hash_bfd (const void *b)
{
- const bfd *abfd = b;
+ const bfd *abfd = (const struct bfd *) b;
/* It is simplest to just hash the filename. */
return htab_hash_string (bfd_get_filename (abfd));
static int
eq_bfd (const void *a, const void *b)
{
- const bfd *abfd = a;
- const struct gdb_bfd_cache_search *s = b;
- struct gdb_bfd_data *gdata = bfd_usrdata (abfd);
+ const bfd *abfd = (const struct bfd *) a;
+ const struct gdb_bfd_cache_search *s
+ = (const struct gdb_bfd_cache_search *) b;
+ struct gdb_bfd_data *gdata = (struct gdb_bfd_data *) bfd_usrdata (abfd);
return (gdata->mtime == s->mtime
&& gdata->size == s->size
/* See gdb_bfd.h. */
-struct bfd *
+gdb_bfd_ref_ptr
gdb_bfd_open (const char *name, const char *target, int fd)
{
hashval_t hash;
/* Note that we cannot use htab_find_slot_with_hash here, because
opening the BFD may fail; and this would violate hashtab
invariants. */
- abfd = htab_find_with_hash (gdb_bfd_cache, &search, hash);
+ abfd = (struct bfd *) htab_find_with_hash (gdb_bfd_cache, &search, hash);
if (bfd_sharing && abfd != NULL)
{
if (debug_bfd_cache)
bfd_get_filename (abfd));
close (fd);
gdb_bfd_ref (abfd);
- return abfd;
+ return gdb_bfd_ref_ptr (abfd);
}
abfd = bfd_fopen (name, target, FOPEN_RB, fd);
}
gdb_bfd_ref (abfd);
- return abfd;
+ return gdb_bfd_ref_ptr (abfd);
}
/* A helper function that releases any section data attached to the
static void
free_one_bfd_section (bfd *abfd, asection *sectp, void *ignore)
{
- struct gdb_bfd_section_data *sect = bfd_get_section_userdata (abfd, sectp);
+ struct gdb_bfd_section_data *sect
+ = (struct gdb_bfd_section_data *) bfd_get_section_userdata (abfd, sectp);
if (sect != NULL && sect->data != NULL)
{
if (abfd == NULL)
return;
- gdata = bfd_usrdata (abfd);
+ gdata = (struct gdb_bfd_data *) bfd_usrdata (abfd);
if (debug_bfd_cache)
fprintf_unfiltered (gdb_stdlog,
/* Ask BFD to decompress sections in bfd_get_full_section_contents. */
abfd->flags |= BFD_DECOMPRESS;
- gdata = bfd_zalloc (abfd, sizeof (struct gdb_bfd_data));
+ gdata
+ = (struct gdb_bfd_data *) bfd_zalloc (abfd, sizeof (struct gdb_bfd_data));
gdata->refc = 1;
gdata->mtime = bfd_get_mtime (abfd);
gdata->size = bfd_get_size (abfd);
if (abfd == NULL)
return;
- gdata = bfd_usrdata (abfd);
+ gdata = (struct gdb_bfd_data *) bfd_usrdata (abfd);
gdb_assert (gdata->refc >= 1);
gdata->refc -= 1;
{
struct gdb_bfd_section_data *result;
- result = bfd_get_section_userdata (section->owner, section);
+ result = ((struct gdb_bfd_section_data *)
+ bfd_get_section_userdata (section->owner, section));
if (result == NULL)
{
- result = bfd_zalloc (section->owner, sizeof (*result));
+ result = ((struct gdb_bfd_section_data *)
+ bfd_zalloc (section->owner, sizeof (*result)));
bfd_set_section_userdata (section->owner, section, result);
}
done:
gdb_assert (descriptor->data != NULL);
*size = descriptor->size;
- return descriptor->data;
+ return (const gdb_byte *) descriptor->data;
}
/* Return 32-bit CRC for ABFD. If successful store it to *FILE_CRC_RETURN and
int
gdb_bfd_crc (struct bfd *abfd, unsigned long *crc_out)
{
- struct gdb_bfd_data *gdata = bfd_usrdata (abfd);
+ struct gdb_bfd_data *gdata = (struct gdb_bfd_data *) bfd_usrdata (abfd);
if (!gdata->crc_computed)
gdata->crc_computed = get_file_crc (abfd, &gdata->crc);
/* See gdb_bfd.h. */
-bfd *
+gdb_bfd_ref_ptr
gdb_bfd_fopen (const char *filename, const char *target, const char *mode,
int fd)
{
if (result)
gdb_bfd_ref (result);
- return result;
+ return gdb_bfd_ref_ptr (result);
}
/* See gdb_bfd.h. */
-bfd *
+gdb_bfd_ref_ptr
gdb_bfd_openr (const char *filename, const char *target)
{
bfd *result = bfd_openr (filename, target);
if (result)
gdb_bfd_ref (result);
- return result;
+ return gdb_bfd_ref_ptr (result);
}
/* See gdb_bfd.h. */
-bfd *
+gdb_bfd_ref_ptr
gdb_bfd_openw (const char *filename, const char *target)
{
bfd *result = bfd_openw (filename, target);
if (result)
gdb_bfd_ref (result);
- return result;
+ return gdb_bfd_ref_ptr (result);
}
/* See gdb_bfd.h. */
-bfd *
+gdb_bfd_ref_ptr
gdb_bfd_openr_iovec (const char *filename, const char *target,
void *(*open_func) (struct bfd *nbfd,
void *open_closure),
if (result)
gdb_bfd_ref (result);
- return result;
+ return gdb_bfd_ref_ptr (result);
}
/* See gdb_bfd.h. */
/* No need to stash the filename here, because we also keep a
reference on the parent archive. */
- gdata = bfd_usrdata (child);
+ gdata = (struct gdb_bfd_data *) bfd_usrdata (child);
if (gdata->archive_bfd == NULL)
{
gdata->archive_bfd = parent;
/* See gdb_bfd.h. */
-bfd *
+gdb_bfd_ref_ptr
gdb_bfd_openr_next_archived_file (bfd *archive, bfd *previous)
{
bfd *result = bfd_openr_next_archived_file (archive, previous);
if (result)
gdb_bfd_mark_parent (result, archive);
- return result;
+ return gdb_bfd_ref_ptr (result);
}
/* See gdb_bfd.h. */
struct gdb_bfd_data *gdata;
gdb_bfd_ref (includee);
- gdata = bfd_usrdata (includer);
+ gdata = (struct gdb_bfd_data *) bfd_usrdata (includer);
VEC_safe_push (bfdp, gdata->included_bfds, includee);
}
/* See gdb_bfd.h. */
-bfd *
+gdb_bfd_ref_ptr
gdb_bfd_fdopenr (const char *filename, const char *target, int fd)
{
bfd *result = bfd_fdopenr (filename, target, fd);
if (result)
gdb_bfd_ref (result);
- return result;
+ return gdb_bfd_ref_ptr (result);
}
\f
int
gdb_bfd_requires_relocations (bfd *abfd)
{
- struct gdb_bfd_data *gdata = bfd_usrdata (abfd);
+ struct gdb_bfd_data *gdata = (struct gdb_bfd_data *) bfd_usrdata (abfd);
if (gdata->relocation_computed == 0)
{
static int
print_one_bfd (void **slot, void *data)
{
- bfd *abfd = *slot;
- struct gdb_bfd_data *gdata = bfd_usrdata (abfd);
- struct ui_out *uiout = data;
- struct cleanup *inner;
+ bfd *abfd = (struct bfd *) *slot;
+ struct gdb_bfd_data *gdata = (struct gdb_bfd_data *) bfd_usrdata (abfd);
+ struct ui_out *uiout = (struct ui_out *) data;
- inner = make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
- ui_out_field_int (uiout, "refcount", gdata->refc);
- ui_out_field_string (uiout, "addr", host_address_to_string (abfd));
- ui_out_field_string (uiout, "filename", bfd_get_filename (abfd));
- ui_out_text (uiout, "\n");
- do_cleanups (inner);
+ ui_out_emit_tuple tuple_emitter (uiout, NULL);
+ uiout->field_int ("refcount", gdata->refc);
+ uiout->field_string ("addr", host_address_to_string (abfd));
+ uiout->field_string ("filename", bfd_get_filename (abfd));
+ uiout->text ("\n");
return 1;
}
struct ui_out *uiout = current_uiout;
cleanup = make_cleanup_ui_out_table_begin_end (uiout, 3, -1, "bfds");
- ui_out_table_header (uiout, 10, ui_left, "refcount", "Refcount");
- ui_out_table_header (uiout, 18, ui_left, "addr", "Address");
- ui_out_table_header (uiout, 40, ui_left, "filename", "Filename");
+ uiout->table_header (10, ui_left, "refcount", "Refcount");
+ uiout->table_header (18, ui_left, "addr", "Address");
+ uiout->table_header (40, ui_left, "filename", "Filename");
- ui_out_table_body (uiout);
+ uiout->table_body ();
htab_traverse (all_bfds, print_one_bfd, uiout);
do_cleanups (cleanup);