}
\f
-/* Locate all mappable sections of a BFD file.
- table_pp_char is a char * to get it through bfd_map_over_sections;
- we cast it back to its proper type. */
-
-static void
-add_to_section_table (bfd *abfd, struct bfd_section *asect,
- void *table_pp_char)
-{
- struct target_section **table_pp = (struct target_section **) table_pp_char;
- flagword aflag;
-
- gdb_assert (abfd == asect->owner);
-
- /* Check the section flags, but do not discard zero-length sections, since
- some symbols may still be attached to this section. For instance, we
- encountered on sparc-solaris 2.10 a shared library with an empty .bss
- section to which a symbol named "_end" was attached. The address
- of this symbol still needs to be relocated. */
- aflag = bfd_section_flags (asect);
- if (!(aflag & SEC_ALLOC))
- return;
-
- (*table_pp)->owner = NULL;
- (*table_pp)->the_bfd_section = asect;
- (*table_pp)->addr = bfd_section_vma (asect);
- (*table_pp)->endaddr = (*table_pp)->addr + bfd_section_size (asect);
- (*table_pp)++;
-}
-
/* See exec.h. */
void
xfree (*start);
*start = XNEWVEC (struct target_section, count);
*end = *start;
- bfd_map_over_sections (some_bfd, add_to_section_table, (char *) end);
+ for (asection *asect : gdb_bfd_sections (some_bfd))
+ {
+ flagword aflag;
+
+ /* Check the section flags, but do not discard zero-length
+ sections, since some symbols may still be attached to this
+ section. For instance, we encountered on sparc-solaris 2.10
+ a shared library with an empty .bss section to which a symbol
+ named "_end" was attached. The address of this symbol still
+ needs to be relocated. */
+ aflag = bfd_section_flags (asect);
+ if (!(aflag & SEC_ALLOC))
+ continue;
+
+ (*end)->owner = NULL;
+ (*end)->the_bfd_section = asect;
+ (*end)->addr = bfd_section_vma (asect);
+ (*end)->endaddr = (*end)->addr + bfd_section_size (asect);
+ (*end)++;
+ }
gdb_assert (*end <= *start + count);