This is the mail archive of the gdb@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

gdbserver, NPTL pthreads and PEEKUSER based targets


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?


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]