aboutsummaryrefslogtreecommitdiff
path: root/gdb/gdb_bfd.h
diff options
context:
space:
mode:
authorSimon Marchi <simon.marchi@polymtl.ca>2020-04-02 15:49:06 -0400
committerSimon Marchi <simon.marchi@polymtl.ca>2020-04-02 15:49:06 -0400
commite0fc5c3fcbf0d9e425483c20dc14cf9cedeac3f4 (patch)
treea67587eb388735ad67659c1903f6118dacdc963d /gdb/gdb_bfd.h
parente2ff18a0a54f98c38f8d9b80c36faa7aacacf6d6 (diff)
downloadbinutils-e0fc5c3fcbf0d9e425483c20dc14cf9cedeac3f4.zip
binutils-e0fc5c3fcbf0d9e425483c20dc14cf9cedeac3f4.tar.gz
binutils-e0fc5c3fcbf0d9e425483c20dc14cf9cedeac3f4.tar.bz2
gdb: use bfd_get_section_contents to read section contents in is_linked_with_cygwin_dll
The function is_linked_with_cygwin_dll currently uses gdb_bfd_map_section to get some section contents. This is not ideal because that memory, which is only used in this function, can't be released. Instead, it was suggested to use bfd_get_full_section_contents. However, bfd_get_full_section_contents returns a newly allocated buffer, which is not very practical to use with C++ automatic memory management constructs. I decided to make gdb_bfd_get_full_section_contents, a small alternative to bfd_get_full_section_contents. It is a small wrapper around bfd_get_section_contents which returns the full contents of the section in a gdb::byte_vector. gdb_bfd_get_full_section_contents could be used at many places that already allocate a vector of the size of the section and then call bfd_get_section_contents. I think these call sites can be updated over time. gdb/ChangeLog: * 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.
Diffstat (limited to 'gdb/gdb_bfd.h')
-rw-r--r--gdb/gdb_bfd.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/gdb/gdb_bfd.h b/gdb/gdb_bfd.h
index 9b1e292..ce72f78 100644
--- a/gdb/gdb_bfd.h
+++ b/gdb/gdb_bfd.h
@@ -21,6 +21,7 @@
#define GDB_BFD_H
#include "registry.h"
+#include "gdbsupport/byte-vector.h"
#include "gdbsupport/gdb_ref_ptr.h"
DECLARE_REGISTRY (bfd);
@@ -181,4 +182,12 @@ int gdb_bfd_count_sections (bfd *abfd);
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 */