aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHannes Domani <ssbssa@yahoo.de>2019-12-27 13:41:58 +0100
committerHannes Domani <ssbssa@yahoo.de>2020-01-03 17:58:19 +0100
commit44f81a76542dbeada2541a05de191ae0ac0fbc2c (patch)
tree6fb49d62e67f01f282442d70ea3c6993746b0852
parent25057eb004b9a6e55b96f64176bb27cf0c457e23 (diff)
downloadgdb-44f81a76542dbeada2541a05de191ae0ac0fbc2c.zip
gdb-44f81a76542dbeada2541a05de191ae0ac0fbc2c.tar.gz
gdb-44f81a76542dbeada2541a05de191ae0ac0fbc2c.tar.bz2
solib_target_free_so memory leak
gdb/ChangeLog: 2020-01-03 Hannes Domani <ssbssa@yahoo.de> * solib-target.c (struct lm_info_target): Change offsets to be a unique_xmalloc_ptr. (solib_target_relocate_section_addresses): Update.
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/solib-target.c10
2 files changed, 11 insertions, 5 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index a7817d6..3b26a31 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,11 @@
2020-01-03 Hannes Domani <ssbssa@yahoo.de>
+ * solib-target.c (struct lm_info_target):
+ Change offsets to be a unique_xmalloc_ptr.
+ (solib_target_relocate_section_addresses): Update.
+
+2020-01-03 Hannes Domani <ssbssa@yahoo.de>
+
* windows-nat.c (windows_clear_solib): Free so_list linked list.
2020-01-03 Bernd Edlinger <bernd.edlinger@hotmail.de>
diff --git a/gdb/solib-target.c b/gdb/solib-target.c
index 113211a..e90107e 100644
--- a/gdb/solib-target.c
+++ b/gdb/solib-target.c
@@ -46,7 +46,7 @@ struct lm_info_target : public lm_info_base
/* The cached offsets for each section of this shared library,
determined from SEGMENT_BASES, or SECTION_BASES. */
- section_offsets *offsets = NULL;
+ gdb::unique_xmalloc_ptr<section_offsets> offsets;
};
typedef std::vector<std::unique_ptr<lm_info_target>> lm_info_vector;
@@ -309,9 +309,8 @@ solib_target_relocate_section_addresses (struct so_list *so,
{
int num_sections = gdb_bfd_count_sections (so->abfd);
- li->offsets
- = ((struct section_offsets *)
- xzalloc (SIZEOF_N_SECTION_OFFSETS (num_sections)));
+ li->offsets.reset ((struct section_offsets *)
+ xzalloc (SIZEOF_N_SECTION_OFFSETS (num_sections)));
if (!li->section_bases.empty ())
{
@@ -377,7 +376,8 @@ Could not relocate shared library \"%s\": no segments"), so->so_name);
ULONGEST orig_delta;
int i;
- if (!symfile_map_offsets_to_segments (so->abfd, data, li->offsets,
+ if (!symfile_map_offsets_to_segments (so->abfd, data,
+ li->offsets.get (),
li->segment_bases.size (),
li->segment_bases.data ()))
warning (_("\