/* Definitions for BFD wrappers used by GDB.
- Copyright (C) 2011-2017 Free Software Foundation, Inc.
+ Copyright (C) 2011-2018 Free Software Foundation, Inc.
This file is part of GDB.
#include "gdb/fileio.h"
#include "inferior.h"
-typedef bfd *bfdp;
-DEF_VEC_P (bfdp);
-
/* An object of this type is stored in the section's user data when
mapping a section. */
~gdb_bfd_data ()
{
- int ix;
- bfd *included_bfd;
-
- for (ix = 0;
- VEC_iterate (bfdp, included_bfds, ix, included_bfd);
- ++ix)
- gdb_bfd_unref (included_bfd);
- VEC_free (bfdp, included_bfds);
}
/* The reference count. */
bfd *archive_bfd = nullptr;
/* Table of all the bfds this bfd has included. */
- VEC (bfdp) *included_bfds = nullptr;
+ std::vector<gdb_bfd_ref_ptr> included_bfds;
/* The registry. */
REGISTRY_FIELDS = {};
data = NULL;
if (!bfd_get_full_section_contents (abfd, sectp, &data))
- error (_("Can't read data for section '%s' in file '%s'"),
- bfd_get_section_name (abfd, sectp),
- bfd_get_filename (abfd));
+ {
+ warning (_("Can't read data for section '%s' in file '%s'"),
+ bfd_get_section_name (abfd, sectp),
+ bfd_get_filename (abfd));
+ /* Set size to 0 to prevent further attempts to read the invalid
+ section. */
+ *size = 0;
+ return (const gdb_byte *) NULL;
+ }
descriptor->data = data;
done:
{
struct gdb_bfd_data *gdata;
- gdb_bfd_ref (includee);
gdata = (struct gdb_bfd_data *) bfd_usrdata (includer);
- VEC_safe_push (bfdp, gdata->included_bfds, includee);
+ gdata->included_bfds.push_back (new_bfd_ref (includee));
}
/* See gdb_bfd.h. */