[rfa/threads] Convert thread event descriptors to code addrs

Michael Snyder msnyder@redhat.com
Tue Nov 25 22:02:00 GMT 2003


Andrew Cagney wrote:
> Hello,
> 
> For PPC64 every function has two minimal symbols vis:
> 
> .__nptl_create_event: the start address
> __nptl_create_event: the descriptor
> 
> This patch modifies ps_pglobal_lookup so that it always returns the 
> function's start address.  Doing this ensures that libthread_db and 
> GDB's thread code are "on the same page" when it comes to the true 
> address of the thread-create and thread-death breakpoints.
> 
> The alternative would be to modify libthread_db so that it knew that 
> PPC64 symbol were special but I suspect that it doesn't want to know 
> about such underlying details.
> 
> ok for mainline?

Yes, with typo correction noted below.

> ------------------------------------------------------------------------
> 
> 2003-11-25  Andrew Cagney  <cagney@redhat.com>
> 
> 	* proc-service.c (ps_pglobal_lookup): Convert function descriptors
> 	into code addresses using gdbarch_convert_from_func_ptr_addr.
> 
> Index: ./gdb/proc-service.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/proc-service.c,v
> retrieving revision 1.7
> diff -u -r1.7 proc-service.c
> --- ./gdb/proc-service.c	24 Feb 2002 22:31:19 -0000	1.7
> +++ ./gdb/proc-service.c	25 Nov 2003 20:59:49 -0000
> @@ -181,7 +181,13 @@
>    if (ms == NULL)
>      return PS_NOSYM;
>  
> -  *sym_addr = SYMBOL_VALUE_ADDRESS (ms);
> +  /* Get the addres, make certain that any descriptors are converted

"address".

> +     into corresponding code addresses.  (For PPC64, the symbol
> +     "__nptl_create_event" points at a function descriptor while this
> +     code needs the corresponding function's start address.)  */
> +  *sym_addr = gdbarch_convert_from_func_ptr_addr (current_gdbarch,
> +						  SYMBOL_VALUE_ADDRESS (ms),
> +						  &current_target);
>    return PS_OK;
>  }
>  




More information about the Gdb-patches mailing list