From 62982abdee45cb20a7cfadb2b1bcc358655d4ad3 Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Tue, 19 May 2020 12:18:04 -0400 Subject: gdb: allocate symfile_segment_data with new - Allocate this structure with new instead of XNEW, use a unique pointer to manage its lifetime. - Change a few functions to return a unique pointer instead of a plain pointer. - Change free_symfile_segment_data to be symfile_segment_data's destructor. gdb/ChangeLog: * symfile.h (struct symfile_segment_data): Initialize fields. <~symfile_segment_data>: Add. (symfile_segment_data_up): New. (struct sym_fns) : Return a symfile_segment_data_up. (default_symfile_segments): Return a symfile_segment_data_up. (free_symfile_segment_data): Remove. (get_symfile_segment_data): Return a symfile_segment_data_up. * symfile.c (default_symfile_segments): Likewise. (get_symfile_segment_data): Likewise. (free_symfile_segment_data): Remove. (symfile_find_segment_sections): Update. * elfread.c (elf_symfile_segments): Return a symfile_segment_data_up. * remote.c (remote_target::get_offsets): Update. * solib-target.c (solib_target_relocate_section_addresses): Update. * symfile-debug.c (debug_sym_segments): Return a symfile_segment_data_up. --- gdb/solib-target.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'gdb/solib-target.c') diff --git a/gdb/solib-target.c b/gdb/solib-target.c index 93d95fd..35e50a3 100644 --- a/gdb/solib-target.c +++ b/gdb/solib-target.c @@ -364,9 +364,9 @@ Could not relocate shared library \"%s\": wrong number of ALLOC sections"), } else if (!li->segment_bases.empty ()) { - struct symfile_segment_data *data; + symfile_segment_data_up data + = get_symfile_segment_data (so->abfd); - data = get_symfile_segment_data (so->abfd); if (data == NULL) warning (_("\ Could not relocate shared library \"%s\": no segments"), so->so_name); @@ -375,7 +375,7 @@ 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, + if (!symfile_map_offsets_to_segments (so->abfd, data.get (), li->offsets, li->segment_bases.size (), li->segment_bases.data ())) @@ -407,8 +407,6 @@ Could not relocate shared library \"%s\": bad offsets"), so->so_name); + data->segment_sizes[i - 1] + orig_delta); gdb_assert (so->addr_low <= so->addr_high); - - free_symfile_segment_data (data); } } } -- cgit v1.1