Re: gdbserver, NPTL pthreads and PEEKUSER based targets

Daniel Jacobowitz
2005-03-31T15:49:45Z

On Thu, Mar 31, 2005 at 04:43:04PM +0100, Daniel THOMPSON wrote:
> Hi folks
>
> I am trying to port gdbserver to work on NPTL kernels on an architecture
> that fetchs registers using PTRACE_PEEKUSER rather than PTRACE_GETREGS
> (in my specific case the SH4).
>
> I have written a hacky but working implementation of ps_lgetregs(). This
> is sufficient to get through he shared library loading without spitting
> out invalid data packets and works well enough for the threads_db code
> to correctly identify the root thread triplet (pid, lwp, tid).

You should be able to provide gregset information even if ptrace can't
fetch them; the ps_lgetregs implementation uses the same machinery, but
it doesn't require the ptrace support.

> Unfortunately the gdbserver bails out inside pthread_create() with an
> SIGTRAP signal.

That will be an unrelated problem. It sounds like you may need a
reinsert_addr method.

> The other oddity I noted is that where the x86 does a
> PTRACE_ATTACH to LWP pid+4 inside pthread_create(), the SH4 is attaching
> to LWP pid+1 which does not seem right as this would not be the LWP of
> the spawned thread.

Why wouldn't it be?

--
Daniel Jacobowitz
CodeSourcery, LLC