[PATCH 3/3] avr32: add support for new architecture AVR32

Hans-Christian Egtvedt hans-christian.egtvedt at atmel.com
Wed Feb 25 14:44:41 UTC 2009


Denys Vlasenko wrote:
> On Tue, 2009-02-24 at 14:58 +0100, Hans-Christian Egtvedt wrote:
>> This patch adds AVR32 architecture support to strace. Implemented by
>> Håvard Skinnemoen (haavard.skinnemoen at atmel.com) and ported to latest
>> CVS HEAD by Hans-Christian Egtvedt (hans-christian.egtvedt at atmel.com).
>>
>> Tested on AP7000 with some random commands, and behaves nice. I also
>> tried going through the test/ directory, but they seem to be a bit
>> outdated and a bit x86 specific AFAICT?
> 
> I committed your cleanup patches fro test/* and warning
> removal for strace.c

Thanks

> but this one has slight problem:
> 
> patching file process.c
> Hunk #3 FAILED at 3020.
> Hunk #4 FAILED at 3114.
> Hunk #5 FAILED at 3130.
> 3 out of 5 hunks FAILED -- saving rejects to file process.c.rej
> 
> Care to rediff against current cvs?
> 

Sure, no problem. I'll make a new patch tomorrow, early off today for 
football practice (-:

>> --- a/process.c
>> +++ b/process.c
>> @@ -728,6 +728,10 @@ change_syscall(struct tcb *tcp, int new)
>>  	if (ptrace(PTRACE_POKEUSER, tcp->pid, (char*)(REG_A3), new)<0)
>>  	    	return -1;
>>  	return 0;
>> +#elif defined(AVR32)
>> +       if (ptrace(PTRACE_POKEUSER, tcp->pid, (char*)(REG_R8), new) < 0)
>> +	       return -1;
>> +       return 0;
>>  #elif defined(BFIN)
>>  	if (ptrace(PTRACE_POKEUSER, tcp->pid, (char*)(REG_P0), new)<0)
>>  		return -1;
>> @@ -788,7 +792,29 @@ setarg(tcp, argnum)
>>  	struct tcb *tcp;
>>  	int argnum;
>>  {
>> -#if defined (IA64)
>> +#if defined(AVR32)
>> +	{
>> +		errno = 0;
>> +		if (argnum == 0)
>> +			ptrace(PTRACE_POKEUSER, tcp->pid,
>> +			       (char *)(REG_R12_ORIG),
>> +			       tcp->u_arg[argnum]);
>> +		else if (argnum < 4)
>> +			/* r11 .. r9 */
>> +			ptrace(PTRACE_POKEUSER, tcp->pid,
>> +			       (char *)(REG_R12 - 4 * argnum),
>> +			       tcp->u_arg[argnum]);
>> +		else if (argnum < 6)
>> +			/* r6 .. r5 */
>> +			ptrace(PTRACE_POKEUSER, tcp->pid,
>> +			       (char *)(REG_R10 - 4 * argnum),
>> +			       tcp->u_arg[argnum]);
> 
> 
> You may want to use do_ptrace() if you want to get
> ptrace errors reported here.
> 

I'll look into this as well before submitting a new patch.

-- 
Best regards,
Hans-Christian Egtvedt




More information about the Strace-devel mailing list