gdb: use std::vector to store segments in symfile_segment_data

Instead of maintaining two vectors, I added a small `segment` class
which holds both the base address and size of one segment and replaced
the two `segment_bases` and `segment_sizes` arrays with a single vector.

The rest of the changes are straightforward, no behavior changes are
expected.

gdb/ChangeLog:

	* symfile.h (struct symfile_segment_data) <struct segment>: New.
	<segments>: New.
	<segment_bases, segment_sizes>: Remove.
	* symfile.c (default_symfile_segments): Update.
	* elfread.c (elf_symfile_segments): Update.
	* remote.c (remote_target::get_offsets): Update.
	* solib-target.c (solib_target_relocate_section_addresses):
	Update.
This commit is contained in:
Simon Marchi
2020-05-19 12:18:04 -04:00
parent 62982abdee
commit 68b888fff3
6 changed files with 45 additions and 41 deletions

View File

@@ -112,15 +112,10 @@ elf_symfile_segments (bfd *abfd)
return NULL;
symfile_segment_data_up data (new symfile_segment_data);
data->num_segments = num_segments;
data->segment_bases = XCNEWVEC (CORE_ADDR, num_segments);
data->segment_sizes = XCNEWVEC (CORE_ADDR, num_segments);
data->segments.reserve (num_segments);
for (i = 0; i < num_segments; i++)
{
data->segment_bases[i] = segments[i]->p_vaddr;
data->segment_sizes[i] = segments[i]->p_memsz;
}
data->segments.emplace_back (segments[i]->p_vaddr, segments[i]->p_memsz);
num_sections = bfd_count_sections (abfd);
data->segment_info = XCNEWVEC (int, num_sections);