diff options
Diffstat (limited to 'gdb/symfile.c')
-rw-r--r-- | gdb/symfile.c | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/gdb/symfile.c b/gdb/symfile.c index 9d5e282..22793e7 100644 --- a/gdb/symfile.c +++ b/gdb/symfile.c @@ -745,9 +745,6 @@ default_symfile_segments (bfd *abfd) high = low + bfd_section_size (sect); symfile_segment_data_up data (new symfile_segment_data); - data->num_segments = 1; - data->segment_bases = XCNEW (CORE_ADDR); - data->segment_sizes = XCNEW (CORE_ADDR); num_sections = bfd_count_sections (abfd); data->segment_info = XCNEWVEC (int, num_sections); @@ -768,8 +765,7 @@ default_symfile_segments (bfd *abfd) data->segment_info[i] = 1; } - data->segment_bases[0] = low; - data->segment_sizes[0] = high - low; + data->segments.emplace_back (low, high - low); return data; } @@ -3663,13 +3659,13 @@ symfile_map_offsets_to_segments (bfd *abfd, /* If we do not have segment mappings for the object file, we can not relocate it by segments. */ gdb_assert (data != NULL); - gdb_assert (data->num_segments > 0); + gdb_assert (data->segments.size () > 0); for (i = 0, sect = abfd->sections; sect != NULL; i++, sect = sect->next) { int which = data->segment_info[i]; - gdb_assert (0 <= which && which <= data->num_segments); + gdb_assert (0 <= which && which <= data->segments.size ()); /* Don't bother computing offsets for sections that aren't loaded as part of any segment. */ @@ -3681,7 +3677,7 @@ symfile_map_offsets_to_segments (bfd *abfd, if (which > num_segment_bases) which = num_segment_bases; - offsets[i] = segment_bases[which - 1] - data->segment_bases[which - 1]; + offsets[i] = segment_bases[which - 1] - data->segments[which - 1].base; } return 1; @@ -3699,7 +3695,7 @@ symfile_find_segment_sections (struct objfile *objfile) if (data == NULL) return; - if (data->num_segments != 1 && data->num_segments != 2) + if (data->segments.size () != 1 && data->segments.size () != 2) return; for (i = 0, sect = abfd->sections; sect != NULL; i++, sect = sect->next) |