Re: [RFA] fix build failure in solib-som.c

Kevin Buettner
2007-08-08T17:50:37Z

On Wed, 8 Aug 2007 10:44:37 -0700
Joel Brobecker <brobecker@adacore.com> wrote:

> Hi Kevin,
>
> > > > > 2007-08-07 Joel Brobecker <brobecker@adacore.com>
> > > > >
> > > > > * solib-som.c (som_relocate_section_addresses): Stop saving
> > > > > the $CODE$ section in the so_list structure.
> > > > >
> > > > > This files compiles fine again after this change is applied.
> > > > >
> > > > > Would that be OK to apply?
> > > >
> > > > I think it would be better to revise the code to set so->addr_low and
> > > > so->addr_high to sec->addr and sec->endaddr respectively. You'll also
> > > > have to move this block of code to the end of the function.
> > >
> > > Isn't that already done in som_current_sos, though?
> >
> > It is, but those addresses won't be relocated. In order to be
> > consistent with the other ports, I think these values should be
> > relocated. Note that solib.c's solib_map_sections() sets `addr_low'
> > and `addr_high' for .text after the relocation has been done. Clearly
> > this won't work for SOM since the .text section is named differently.
> > However, given that `addr_low' and `addr_high' are set after the
> > relocation has been performed (for other ports with a .text), I think
> > it makes sense to arrange the SOM-specific code as suggested in my
> > earlier reply. I'm beginning to think too that the assignments to
> > addr_low and addr_high ought to be removed from som_current_sos().
>
> I had a closer look. I don't think we need to relocate the addr_low
> and addr_high addresses, because they were extracted from the load
> map info (which I would imagine would contain already relocated
> addresses). This is in som_current_sos.

Ah, okay.

> This is only by luck, but it looks like my original patch still
> makes sense, no? I did a quick test by running any program, and
> doing a "info sharedlibrary", and it looks likes the addresses
> are indeed relocated (they don't correspond to the $CODE$ or $TEXT$
> addresses printed by objdump).

Sounds good. Go ahead and check in your original patch.

Kevin