This is the mail archive of the gdb-patches@sourceware.org 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: [PATCH] Fix Cell debugging regression (Re: [PATCH] Use thread_info and inferior pointers more throughout)


Pedro Alves wrote:

> > The change above switches the behavior to use the SPU architecture
> > if GDB happens to interrupt SPU code.  This is wrong and causes
> > internal GDB errors pretty much instantly when starting an SPU ...
> Sorry, missed that.  Some comments here would be helpful.

Agreed.  :-)
 
> gdb/ChangeLog:
> 2018-06-27  Pedro Alves  <palves@redhat.com>
> 
> 	* proc-service.c (ps_lgetregs, ps_lsetregs, ps_lgetfpregs)
> 	(ps_lsetfpregs): Use get_thread_main_regcache.
> 	* regcache.c (get_thread_main_regcache): Define.
> 	* regcache.h (get_thread_main_regcache): Declare.

This looks good to me as far as the architecture is concerned.

In the meantime I also noticed another potential issue (which is
not related to multi-arch at all):

>  ps_err_e
>  ps_lgetregs (struct ps_prochandle *ph, lwpid_t lwpid, prgregset_t gregset)
>  {
> -  ptid_t ptid = ptid_build (ptid_get_pid (ph->ptid), lwpid, 0);
> -  struct regcache *regcache
> -    = get_thread_arch_regcache (ptid, target_gdbarch ());
> +  struct regcache *regcache = get_thread_regcache (ph->thread);

This change also assumes that ph->thread is the same thread
as the one indicated by lwpid.  Looking at the callers of the
various libthread_db routines that might result in a callback
to the ps_...regs routines, it is not immediately obvious to
me that this is actually true.  Are you sure this can never
be called to look up registers of another thread?

Bye,
Ulrich

-- 
  Dr. Ulrich Weigand
  GNU/Linux compilers and toolchain
  Ulrich.Weigand@de.ibm.com


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