[RFA] symfile.c -- use bfd access methods
Elena Zannoni
ezannoni@redhat.com
Fri Jan 11 21:40:00 GMT 2002
Michael Snyder writes:
>
> Some more cleanups of symfile.c, using bfd access methods instead of
> accessing private bfd data fields. In several cases (those that
> would require touching more than one source file) I've just added
> a FIXME comment and deferred doing the actual work.
>
Michael, there are some typos in your patch. I get the following errors:
e -Wcomment -Wtrigraphs -Wformat -Wparentheses -Wpointer-arith -Wuninitialized -Werror /home/ezannoni/sources/src/gdb/symfile.c
/home/ezannoni/sources/src/gdb/symfile.c: In function `simple_overlay_update_1':/home/ezannoni/sources/src/gdb/symfile.c:3129: `osection' undeclared (first use in this function)
/home/ezannoni/sources/src/gdb/symfile.c:3129: (Each undeclared identifier is reported only once
/home/ezannoni/sources/src/gdb/symfile.c:3129: for each function it appears in.)/home/ezannoni/sources/src/gdb/symfile.c:3129: `bsect' undeclared (first use in this function)
/home/ezannoni/sources/src/gdb/symfile.c:3129: invalid lvalue in assignment
/home/ezannoni/sources/src/gdb/symfile.c: In function `simple_overlay_update':
/home/ezannoni/sources/src/gdb/symfile.c:3190: `osection' undeclared (first use in this function)
/home/ezannoni/sources/src/gdb/symfile.c:3190: `bsect' undeclared (first use in this function)
/home/ezannoni/sources/src/gdb/symfile.c:3190: invalid lvalue in assignment
Maybe you wanted asection instead of osection?
Modulus that, the patch is ok.
Elena
> 2002-01-11 Michael Snyder <msnyder@redhat.com>
>
> * symfile.c (build_section_addr_info_from_section_tab):
> Use bfd access method instead of manipulating bfd directly.
> (syms_from_objfile): Ditto.
> (simple_overlay_update_1): Ditto.
> (simple_overlay_update): Ditto.
> (generic_load): Ditto.
> (overlay_unmapped_address): FIXME comment, bfd access methods.
> (sections_overlap): FIXME comment, bfd access methods.
> (pc_in_mapped_range): FIXME comment, bfd access methods.
> (pc_in_unmapped_range): FIXME comment, bfd access methods.
> (section_is_mapped): FIXME comment, bfd access methods.
> (section_is_overlay): FIXME comment, bfd access methods.
>
> Index: symfile.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/symfile.c,v
> retrieving revision 1.46
> diff -c -3 -p -r1.46 symfile.c
> *** symfile.c 2002/01/08 02:09:31 1.46
> --- symfile.c 2002/01/11 23:54:31
> *************** build_section_addr_info_from_section_tab
> *** 452,462 ****
>
> for (stp = start, oidx = 0; stp != end; stp++)
> {
> ! if (stp->the_bfd_section->flags & (SEC_ALLOC | SEC_LOAD)
> && oidx < MAX_SECTIONS)
> {
> sap->other[oidx].addr = stp->addr;
> ! sap->other[oidx].name = xstrdup (stp->the_bfd_section->name);
> sap->other[oidx].sectindex = stp->the_bfd_section->index;
> oidx++;
> }
> --- 452,464 ----
>
> for (stp = start, oidx = 0; stp != end; stp++)
> {
> ! if (bfd_get_section_flags (stp->bfd,
> ! stp->the_bfd_section) & (SEC_ALLOC | SEC_LOAD)
> && oidx < MAX_SECTIONS)
> {
> sap->other[oidx].addr = stp->addr;
> ! sap->other[oidx].name
> ! = xstrdup (bfd_section_name (stp->bfd, stp->the_bfd_section));
> sap->other[oidx].sectindex = stp->the_bfd_section->index;
> oidx++;
> }
> *************** syms_from_objfile (struct objfile *objfi
> *** 708,714 ****
> for (i = 0;
> !s_addr && i < MAX_SECTIONS && addrs->other[i].name;
> i++)
> ! if (strcmp (s->the_bfd_section->name, addrs->other[i].name) == 0)
> s_addr = addrs->other[i].addr; /* end added for gdb/13815 */
>
> s->addr -= s->offset;
> --- 710,718 ----
> for (i = 0;
> !s_addr && i < MAX_SECTIONS && addrs->other[i].name;
> i++)
> ! if (strcmp (bfd_section_name (s->objfile->obfd,
> ! s->the_bfd_section),
> ! addrs->other[i].name) == 0)
> s_addr = addrs->other[i].addr; /* end added for gdb/13815 */
>
> s->addr -= s->offset;
> *************** generic_load (char *args, int from_tty)
> *** 1222,1228 ****
> }
>
> for (s = loadfile_bfd->sections; s; s = s->next)
> ! if (s->flags & SEC_LOAD)
> total_size += bfd_get_section_size_before_reloc (s);
>
> start_time = time (NULL);
> --- 1226,1232 ----
> }
>
> for (s = loadfile_bfd->sections; s; s = s->next)
> ! if (bfd_get_section_flags (loadfile_bfd, s) & SEC_LOAD)
> total_size += bfd_get_section_size_before_reloc (s);
>
> start_time = time (NULL);
> *************** void (*target_overlay_update) (struct ob
> *** 2512,2517 ****
> --- 2516,2523 ----
> int
> section_is_overlay (asection *section)
> {
> + /* FIXME: need bfd *, so we can use bfd_section_lma methods. */
> +
> if (overlay_debugging)
> if (section && section->lma != 0 &&
> section->vma != section->lma)
> *************** section_is_mapped (asection *section)
> *** 2598,2603 ****
> --- 2604,2611 ----
> CORE_ADDR
> pc_in_unmapped_range (CORE_ADDR pc, asection *section)
> {
> + /* FIXME: need bfd *, so we can use bfd_section_lma methods. */
> +
> int size;
>
> if (overlay_debugging)
> *************** pc_in_unmapped_range (CORE_ADDR pc, asec
> *** 2616,2621 ****
> --- 2624,2631 ----
> CORE_ADDR
> pc_in_mapped_range (CORE_ADDR pc, asection *section)
> {
> + /* FIXME: need bfd *, so we can use bfd_section_vma methods. */
> +
> int size;
>
> if (overlay_debugging)
> *************** pc_in_mapped_range (CORE_ADDR pc, asecti
> *** 2634,2639 ****
> --- 2644,2651 ----
> int
> sections_overlap (asection *a, asection *b)
> {
> + /* FIXME: need bfd *, so we can use bfd_section_vma methods. */
> +
> CORE_ADDR a_start = a->vma;
> CORE_ADDR a_end = a->vma + bfd_get_section_size_before_reloc (a);
> CORE_ADDR b_start = b->vma;
> *************** sections_overlap (asection *a, asection
> *** 2649,2654 ****
> --- 2661,2668 ----
> CORE_ADDR
> overlay_unmapped_address (CORE_ADDR pc, asection *section)
> {
> + /* FIXME: need bfd *, so we can use bfd_section_lma methods. */
> +
> if (overlay_debugging)
> if (section && section_is_overlay (section) &&
> pc_in_mapped_range (pc, section))
> *************** overlay_unmapped_address (CORE_ADDR pc,
> *** 2664,2669 ****
> --- 2678,2685 ----
> CORE_ADDR
> overlay_mapped_address (CORE_ADDR pc, asection *section)
> {
> + /* FIXME: need bfd *, so we can use bfd_section_vma methods. */
> +
> if (overlay_debugging)
> if (section && section_is_overlay (section) &&
> pc_in_unmapped_range (pc, section))
> *************** static int
> *** 3102,3124 ****
> simple_overlay_update_1 (struct obj_section *osect)
> {
> int i, size;
>
> size = bfd_get_section_size_before_reloc (osect->the_bfd_section);
> for (i = 0; i < cache_novlys; i++)
> ! if (cache_ovly_table[i][VMA] == osect->the_bfd_section->vma &&
> ! cache_ovly_table[i][LMA] == osect->the_bfd_section->lma /* &&
> ! cache_ovly_table[i][SIZE] == size */ )
> {
> read_target_long_array (cache_ovly_table_base + i * TARGET_LONG_BYTES,
> (int *) cache_ovly_table[i], 4);
> ! if (cache_ovly_table[i][VMA] == osect->the_bfd_section->vma &&
> ! cache_ovly_table[i][LMA] == osect->the_bfd_section->lma /* &&
> ! cache_ovly_table[i][SIZE] == size */ )
> {
> osect->ovly_mapped = cache_ovly_table[i][MAPPED];
> return 1;
> }
> ! else /* Warning! Warning! Target's ovly table has changed! */
> return 0;
> }
> return 0;
> --- 3118,3142 ----
> simple_overlay_update_1 (struct obj_section *osect)
> {
> int i, size;
> + bfd *obfd = osect->objfile->obfd;
> + osection *bsect = osect->the_bfd_section;
>
> size = bfd_get_section_size_before_reloc (osect->the_bfd_section);
> for (i = 0; i < cache_novlys; i++)
> ! if (cache_ovly_table[i][VMA] == bfd_section_vma (obfd, bsect)
> ! && cache_ovly_table[i][LMA] == bfd_section_lma (obfd, bsect)
> ! /* && cache_ovly_table[i][SIZE] == size */ )
> {
> read_target_long_array (cache_ovly_table_base + i * TARGET_LONG_BYTES,
> (int *) cache_ovly_table[i], 4);
> ! if (cache_ovly_table[i][VMA] == bfd_section_vma (obfd, bsect)
> ! && cache_ovly_table[i][LMA] == bfd_section_lma (obfd, bsect)
> ! /* && cache_ovly_table[i][SIZE] == size */ )
> {
> osect->ovly_mapped = cache_ovly_table[i][MAPPED];
> return 1;
> }
> ! else /* Warning! Warning! Target's ovly table has changed! */
> return 0;
> }
> return 0;
> *************** simple_overlay_update (struct obj_sectio
> *** 3161,3173 ****
> if (section_is_overlay (osect->the_bfd_section))
> {
> int i, size;
>
> size = bfd_get_section_size_before_reloc (osect->the_bfd_section);
> for (i = 0; i < cache_novlys; i++)
> ! if (cache_ovly_table[i][VMA] == osect->the_bfd_section->vma &&
> ! cache_ovly_table[i][LMA] == osect->the_bfd_section->lma /* &&
> ! cache_ovly_table[i][SIZE] == size */ )
> ! { /* obj_section matches i'th entry in ovly_table */
> osect->ovly_mapped = cache_ovly_table[i][MAPPED];
> break; /* finished with inner for loop: break out */
> }
> --- 3179,3193 ----
> if (section_is_overlay (osect->the_bfd_section))
> {
> int i, size;
> + bfd *obfd = osect->objfile->obfd;
> + osection *bsect = osect->the_bfd_section;
>
> size = bfd_get_section_size_before_reloc (osect->the_bfd_section);
> for (i = 0; i < cache_novlys; i++)
> ! if (cache_ovly_table[i][VMA] == bfd_section_vma (obfd, bsect)
> ! && cache_ovly_table[i][LMA] == bfd_section_lma (obfd, bsect)
> ! /* && cache_ovly_table[i][SIZE] == size */ )
> ! { /* obj_section matches i'th entry in ovly_table */
> osect->ovly_mapped = cache_ovly_table[i][MAPPED];
> break; /* finished with inner for loop: break out */
> }
More information about the Gdb-patches
mailing list