Re: shared library support hookin the remote.c

Kevin Buettner
2004-07-01T17:58:19Z

On Mon, 28 Jun 2004 18:55:45 -0700
Stephen & Linda Smith <ischis2@cox.net> wrote:

> Kevin Buettner wrote:
>
> > How does the remote target communicate the necessary details to GDB
> >
> >then?
> >
> >It sounds to me as though you want to add the hook so that you can add
> >a private protocol extension.
> >
> >IMO, it's better to hash out the details of a public remote protocol
> >extension for shared library support.
> >
> That would be my preference, but I haven't figured out a generic way.
> Here is the basic problem is that the
> remote protocol has no notion of shared libraries or of segments (TEXT,
> BSS, DATA, etc). Can someone
> on this list think of a generic way of getting this data?

If you can have the stub report both the original and adjusted address
for the segments of a particular load object, GDB should be able to
determine which section(s) those segments belong to. (Take a look at the
FR-V shared library support.)

> A second problem is that the number and names of the segments doesn't
> appear to be consistent. It was for this
> reason that I was thinking of making the protocol a target specific one
> that supports the solib interface.

I wouldn't worry about the names; I don't think there'll be any need to
communicate those. As for the number of segments, the protocol should
be designed to handle an arbitrary number of segments.

> >... I'd like to first understand how communication of shared library information
> >between GDB and the stub is accomplished and what the protocol looks
> >like.
> >
>
> I assume you don't mean how the published protocol works.
>
> What I didn't in the passed, was to use a q packet. If I read the spec
> correctly was to use that packet type to find out if
> there were any libraries and to find out the segment addersses.
>
> I don't mind making it a public interface, but from the conversation
> three years ago, I got the idea that the maintainers
> weren't especially keen on making it part of the general (i.e remote.c)
> code base.

I don't recall. However, if the protocol is general enough to be usable
by a variety of targets, I see no reason for not including it in remote.c.
After all, qSymbol support is present in remote.c and that's only used for
some thread implementations. It would be good to get buy-in from the
maintainer of remote.c before you start though.

Kevin