forked from Imagelibrary/binutils-gdb
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:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user