Subject: Re: Incorrect order of last two arguments of ptrace for requests PPC_PTRACE_GETREGS, SETREGS, GETFPREGS, SETFPREGS

From: supriya kannery <[email-masked]>
Date: Thu, 23 Nov 2006 12:40:30 +0530

Benjamin Herrenschmidt wrote:

>On Wed, 2006-11-22 at 18:36 +0000, David Woodhouse wrote:
>  
>
>>On
>>    
>>
>>>This is because PPC_PTRACE_GETREGS option for powerpc is implemented
>>>such that general purpose
>>>registers of the child process get copied to the address variable
>>>instead of data variable. Same is
>>>the case with other PPC request options PPC_PTRACE_SETREGS, GETFPREGS
>>>and SETFPREGS.
>>>
>>>Prepared a patch for this problem and tested with 2.6.18-rc6 kernel.
>>>This patch can be applied directly to 2.6.19-rc3 kernel.
>>>      
>>>
>>A more appropriate place to send this would be the linux-ppc development
>>list.
>>    
>>
>
>Also it's possible that existing code like gcc relies on that "feature"
>no ?
>
>Ben.
>
>
>  
>
Thanks David for posting this in ppc-dev list.
    I checked in GDB and ltrace which uses ptrace(). None of them are 
using PPC_PTRACE* options to get register values. The reasons for its 
less (or no) usage could be
1. These options are not documented in manpage
2. The usage is different from the general format of ptrace
3. These are used for copying all the registers. Most applications will 
require data from a single addr/register at a time and can get this data 
from a specific register/address using PEEKTEXT or POKETEXT options.
Supriya