gdbserver, NPTL pthreads and PEEKUSER based targets

Daniel THOMPSON
2005-03-31T15:43:21Z

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).

Unfortunately the gdbserver bails out inside pthread_create() with an
SIGTRAP signal. 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.

I have tried comparing the strace's of gdb vs. gdbserver but did not
notice anything very useful.

--
Daniel Thompson (STMicroelectronics) <daniel.thompson@st.com>
1000 Aztec West, Almondsbury, Bristol, BS32 4SQ. 01454 462659

If a car is a horseless carriage then is a motorcycle a horseless horse?