[PATCH] solib.c, symbol_add_stub()
Elena Zannoni
ezannoni@cygnus.com
Wed May 10 16:47:00 GMT 2000
Michael Snyder writes:
> Elena,
>
> Suddenly I'm running into this same problem on Cleaver
> (Solaris 2.6) -- and applying this patch doesn't fix it.
>
> Michael
>
Core dump? Can I see a back trace?
I'll give it a try myself.
Elena
>
> Elena Zannoni wrote:
> >
> > This patch gets rid of a core dump (reported by Peter Schauer) if
> > there is no .text section in a shared library.
> >
> > Will commit tomorrow if there are no objections.
> >
> > 2000-05-09 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
> >
> > * solib.c (symbol_add_stub): Remember the index and the name of
> > the section with the lowest address. Use this data (instead of
> > data from .text) to pass info into symbol_file_add.
> >
> > Index: solib.c
> > ===================================================================
> > RCS file: /cvs/src/src/gdb/solib.c,v
> > retrieving revision 1.12
> > diff -p -u -r1.12 solib.c
> > --- solib.c 2000/05/05 18:14:27 1.12
> > +++ solib.c 2000/05/09 22:19:37
> > @@ -1165,10 +1165,10 @@ symbol_add_stub (arg)
> > PTR arg;
> > {
> > register struct so_list *so = (struct so_list *) arg; /* catch_errs bogon */
> > - CORE_ADDR text_addr = 0;
> > struct section_addr_info *sap;
> > - int i;
> > - asection *text_section;
> > + CORE_ADDR lowest_addr = 0;
> > + int lowest_index;
> > + asection *lowest_sect = NULL;
> >
> > /* Have we already loaded this shared object? */
> > ALL_OBJFILES (so->objfile)
> > @@ -1179,32 +1179,33 @@ symbol_add_stub (arg)
> >
> > /* Find the shared object's text segment. */
> > if (so->textsection)
> > - text_addr = so->textsection->addr;
> > + {
> > + lowest_addr = so->textsection->addr;
> > + lowest_sect = bfd_get_section_by_name (so->abfd, ".text");
> > + lowest_index = lowest_sect->index;
> > + }
> > else if (so->abfd != NULL)
> > {
> > - asection *lowest_sect;
> > -
> > - /* If we didn't find a mapped non zero sized .text section, set up
> > - text_addr so that the relocation in symbol_file_add does no harm. */
> > + /* If we didn't find a mapped non zero sized .text section, set
> > + up lowest_addr so that the relocation in symbol_file_add does
> > + no harm. */
> > lowest_sect = bfd_get_section_by_name (so->abfd, ".text");
> > if (lowest_sect == NULL)
> > bfd_map_over_sections (so->abfd, find_lowest_section,
> > (PTR) &lowest_sect);
> > if (lowest_sect)
> > - text_addr = bfd_section_vma (so->abfd, lowest_sect)
> > - + LM_ADDR (so);
> > + {
> > + lowest_addr = bfd_section_vma (so->abfd, lowest_sect)
> > + + LM_ADDR (so);
> > + lowest_index = lowest_sect->index;
> > + }
> > }
> >
> > sap = build_section_addr_info_from_section_table (so->sections,
> > so->sections_end);
> > +
> > + sap->other[lowest_index].addr = lowest_addr;
> >
> > - /* Look for the index for the .text section in the sap structure. */
> > - text_section = bfd_get_section_by_name (so->abfd, ".text");
> > - for (i = 0; i < MAX_SECTIONS && sap->other[i].name; i++)
> > - if (sap->other[i].sectindex == text_section->index)
> > - break;
> > -
> > - sap->other[i].addr = text_addr;
> > so->objfile = symbol_file_add (so->so_name, so->from_tty,
> > sap, 0, OBJF_SHARED);
> > free_section_addr_info (sap);
More information about the Gdb-patches
mailing list