gdb: use bfd_get_section_contents to read section contents in is_linked_with_cygwin_dll
authorSimon Marchi <simon.marchi@polymtl.ca>
Thu, 2 Apr 2020 19:49:06 +0000 (15:49 -0400)
committerSimon Marchi <simon.marchi@polymtl.ca>
Thu, 2 Apr 2020 19:49:06 +0000 (15:49 -0400)
commite0fc5c3fcbf0d9e425483c20dc14cf9cedeac3f4
treea67587eb388735ad67659c1903f6118dacdc963d
parente2ff18a0a54f98c38f8d9b80c36faa7aacacf6d6
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.
gdb/ChangeLog
gdb/gdb_bfd.c
gdb/gdb_bfd.h
gdb/windows-tdep.c