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]

Re: gdbserver, NPTL pthreads and PEEKUSER based targets


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


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