+2020-04-02 Simon Marchi <simon.marchi@polymtl.ca>
+
+ * gdb_bfd.h: Include gdbsupport/byte-vector.h.
+ (gdb_bfd_get_full_section_contents): New declaration.
+ * gdb_bfd.c (gdb_bfd_get_full_section_contents): New function.
+ * windows-tdep.c (is_linked_with_cygwin_dll): Use
+ gdb_bfd_get_full_section_contents.
+
2020-04-02 Simon Marchi <simon.marchi@polymtl.ca>
* exec.c (build_section_table): Replace internal_error with
return gdata->needs_relocations;
}
-\f
+/* See gdb_bfd.h. */
+
+bool
+gdb_bfd_get_full_section_contents (bfd *abfd, asection *section,
+ gdb::byte_vector *contents)
+{
+ bfd_size_type section_size = bfd_section_size (section);
+
+ contents->resize (section_size);
+
+ return bfd_get_section_contents (abfd, section, contents->data (), 0,
+ section_size);
+}
/* A callback for htab_traverse that prints a single BFD. */
#define GDB_BFD_H
#include "registry.h"
+#include "gdbsupport/byte-vector.h"
#include "gdbsupport/gdb_ref_ptr.h"
DECLARE_REGISTRY (bfd);
int gdb_bfd_requires_relocations (bfd *abfd);
+/* Alternative to bfd_get_full_section_contents that returns the section
+ contents in *CONTENTS, instead of an allocated buffer.
+
+ Return true on success, false otherwise. */
+
+bool gdb_bfd_get_full_section_contents (bfd *abfd, asection *section,
+ gdb::byte_vector *contents);
+
#endif /* GDB_BFD_H */
bfd_vma idata_addr
= pe_data (abfd)->pe_opthdr.DataDirectory[PE_IMPORT_TABLE].VirtualAddress;
- /* Map the section's data. */
- bfd_size_type idata_size;
- const gdb_byte *const idata_contents
- = gdb_bfd_map_section (idata_section, &idata_size);
- if (idata_contents == nullptr)
+ /* Get the section's data. */
+ gdb::byte_vector idata_contents;
+ if (!gdb_bfd_get_full_section_contents (abfd, idata_section, &idata_contents))
{
warning (_("Failed to get content of .idata section."));
return false;
}
- const gdb_byte *iter = idata_contents;
- const gdb_byte *end = idata_contents + idata_size;
+ size_t idata_size = idata_contents.size ();
+ const gdb_byte *iter = idata_contents.data ();
+ const gdb_byte *end = idata_contents.data () + idata_size;
const pe_import_directory_entry null_dir_entry = { 0 };
/* Iterate through all directory entries. */