2003-01-14 Roland McGrath <roland@redhat.com>
* configure.ac: Match powerpc* (includes powerpc64), and don't match ppc (never comes out of config.sub). * process.c (sys_ptrace): Use #lx format for address argument. [POWERPC]: Use sizeof(unsigned long) in place of 4 for multipliers. * process.c [POWERPC]: Likewise. * signal.c (sys_sigreturn) [POWERPC]: Likewise. * syscall.c (get_scno) [POWERPC]: Likewise. * util.c [POWERPC]: Likewise. (printnum): Use long for NUM. From Anton Blanchard <anton@samba.org>.
This commit is contained in:
parent
92999db60b
commit
eb28535990
@ -67,7 +67,7 @@ alpha*)
|
||||
arch=alpha
|
||||
AC_DEFINE([ALPHA], 1, [Define for the Alpha architecture.])
|
||||
;;
|
||||
ppc|powerpc)
|
||||
powerpc*)
|
||||
arch=powerpc
|
||||
AC_DEFINE([POWERPC], 1, [Define for the PowerPC architecture.])
|
||||
;;
|
||||
|
89
process.c
89
process.c
@ -609,7 +609,8 @@ int new;
|
||||
return -1;
|
||||
return 0;
|
||||
#elif defined(POWERPC)
|
||||
if (ptrace(PTRACE_POKEUSER, tcp->pid, (char*)(4*PT_R0), new) < 0)
|
||||
if (ptrace(PTRACE_POKEUSER, tcp->pid,
|
||||
(char*)(sizeof(unsigned long)*PT_R0), new) < 0)
|
||||
return -1;
|
||||
return 0;
|
||||
#elif defined(S390) || defined(S390X)
|
||||
@ -693,7 +694,7 @@ setarg(tcp, argnum)
|
||||
#endif
|
||||
{
|
||||
ptrace(PTRACE_POKEUSER, tcp->pid,
|
||||
(char*)((argnum==0 ? PT_ORIG_R3 : argnum+PT_R3)*4),
|
||||
(char*)((argnum==0 ? PT_ORIG_R3 : argnum+PT_R3)*sizeof(unsigned long)),
|
||||
tcp->u_arg[argnum]);
|
||||
if (errno)
|
||||
return -1;
|
||||
@ -2126,46 +2127,48 @@ struct xlat struct_user_offsets[] = {
|
||||
#ifndef PT_ORIG_R3
|
||||
#define PT_ORIG_R3 34
|
||||
#endif
|
||||
{ 4*PT_R0, "4*PT_R0" },
|
||||
{ 4*PT_R1, "4*PT_R1" },
|
||||
{ 4*PT_R2, "4*PT_R2" },
|
||||
{ 4*PT_R3, "4*PT_R3" },
|
||||
{ 4*PT_R4, "4*PT_R4" },
|
||||
{ 4*PT_R5, "4*PT_R5" },
|
||||
{ 4*PT_R6, "4*PT_R6" },
|
||||
{ 4*PT_R7, "4*PT_R7" },
|
||||
{ 4*PT_R8, "4*PT_R8" },
|
||||
{ 4*PT_R9, "4*PT_R9" },
|
||||
{ 4*PT_R10, "4*PT_R10" },
|
||||
{ 4*PT_R11, "4*PT_R11" },
|
||||
{ 4*PT_R12, "4*PT_R12" },
|
||||
{ 4*PT_R13, "4*PT_R13" },
|
||||
{ 4*PT_R14, "4*PT_R14" },
|
||||
{ 4*PT_R15, "4*PT_R15" },
|
||||
{ 4*PT_R16, "4*PT_R16" },
|
||||
{ 4*PT_R17, "4*PT_R17" },
|
||||
{ 4*PT_R18, "4*PT_R18" },
|
||||
{ 4*PT_R19, "4*PT_R19" },
|
||||
{ 4*PT_R20, "4*PT_R20" },
|
||||
{ 4*PT_R21, "4*PT_R21" },
|
||||
{ 4*PT_R22, "4*PT_R22" },
|
||||
{ 4*PT_R23, "4*PT_R23" },
|
||||
{ 4*PT_R24, "4*PT_R24" },
|
||||
{ 4*PT_R25, "4*PT_R25" },
|
||||
{ 4*PT_R26, "4*PT_R26" },
|
||||
{ 4*PT_R27, "4*PT_R27" },
|
||||
{ 4*PT_R28, "4*PT_R28" },
|
||||
{ 4*PT_R29, "4*PT_R29" },
|
||||
{ 4*PT_R30, "4*PT_R30" },
|
||||
{ 4*PT_R31, "4*PT_R31" },
|
||||
{ 4*PT_NIP, "4*PT_NIP" },
|
||||
{ 4*PT_MSR, "4*PT_MSR" },
|
||||
{ 4*PT_ORIG_R3, "4*PT_ORIG_R3" },
|
||||
{ 4*PT_CTR, "4*PT_CTR" },
|
||||
{ 4*PT_LNK, "4*PT_LNK" },
|
||||
{ 4*PT_XER, "4*PT_XER" },
|
||||
{ 4*PT_CCR, "4*PT_CCR" },
|
||||
{ 4*PT_FPR0, "4*PT_FPR0" },
|
||||
#define REGSIZE (sizeof(unsigned long))
|
||||
{ REGSIZE*PT_R0, "r0" },
|
||||
{ REGSIZE*PT_R1, "r1" },
|
||||
{ REGSIZE*PT_R2, "r2" },
|
||||
{ REGSIZE*PT_R3, "r3" },
|
||||
{ REGSIZE*PT_R4, "r4" },
|
||||
{ REGSIZE*PT_R5, "r5" },
|
||||
{ REGSIZE*PT_R6, "r6" },
|
||||
{ REGSIZE*PT_R7, "r7" },
|
||||
{ REGSIZE*PT_R8, "r8" },
|
||||
{ REGSIZE*PT_R9, "r9" },
|
||||
{ REGSIZE*PT_R10, "r10" },
|
||||
{ REGSIZE*PT_R11, "r11" },
|
||||
{ REGSIZE*PT_R12, "r12" },
|
||||
{ REGSIZE*PT_R13, "r13" },
|
||||
{ REGSIZE*PT_R14, "r14" },
|
||||
{ REGSIZE*PT_R15, "r15" },
|
||||
{ REGSIZE*PT_R16, "r16" },
|
||||
{ REGSIZE*PT_R17, "r17" },
|
||||
{ REGSIZE*PT_R18, "r18" },
|
||||
{ REGSIZE*PT_R19, "r19" },
|
||||
{ REGSIZE*PT_R20, "r20" },
|
||||
{ REGSIZE*PT_R21, "r21" },
|
||||
{ REGSIZE*PT_R22, "r22" },
|
||||
{ REGSIZE*PT_R23, "r23" },
|
||||
{ REGSIZE*PT_R24, "r24" },
|
||||
{ REGSIZE*PT_R25, "r25" },
|
||||
{ REGSIZE*PT_R26, "r26" },
|
||||
{ REGSIZE*PT_R27, "r27" },
|
||||
{ REGSIZE*PT_R28, "r28" },
|
||||
{ REGSIZE*PT_R29, "r29" },
|
||||
{ REGSIZE*PT_R30, "r30" },
|
||||
{ REGSIZE*PT_R31, "r31" },
|
||||
{ REGSIZE*PT_NIP, "NIP" },
|
||||
{ REGSIZE*PT_MSR, "MSR" },
|
||||
{ REGSIZE*PT_ORIG_R3, "ORIG_R3" },
|
||||
{ REGSIZE*PT_CTR, "CTR" },
|
||||
{ REGSIZE*PT_LNK, "LNK" },
|
||||
{ REGSIZE*PT_XER, "XER" },
|
||||
{ REGSIZE*PT_CCR, "CCR" },
|
||||
{ REGSIZE*PT_FPR0, "FPR0" },
|
||||
#undef REGSIZE
|
||||
#else
|
||||
#ifdef ALPHA
|
||||
{ 0, "r0" },
|
||||
@ -2569,7 +2572,7 @@ struct tcb *tcp;
|
||||
case PTRACE_PEEKDATA:
|
||||
case PTRACE_PEEKTEXT:
|
||||
case PTRACE_PEEKUSER:
|
||||
printnum(tcp, tcp->u_arg[3], "%#x");
|
||||
printnum(tcp, tcp->u_arg[3], "%#lx");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
2
signal.c
2
signal.c
@ -1253,7 +1253,7 @@ struct tcb *tcp;
|
||||
|
||||
if (entering(tcp)) {
|
||||
tcp->u_arg[0] = 0;
|
||||
if (upeek(tcp->pid, 4*PT_R1, &esp) < 0)
|
||||
if (upeek(tcp->pid, sizeof(unsigned long)*PT_R1, &esp) < 0)
|
||||
return 0;
|
||||
if (umove(tcp, esp, &sc) < 0)
|
||||
return 0;
|
||||
|
17
syscall.c
17
syscall.c
@ -806,7 +806,7 @@ struct tcb *tcp;
|
||||
}
|
||||
}
|
||||
#elif defined (POWERPC)
|
||||
if (upeek(pid, 4*PT_R0, &scno) < 0)
|
||||
if (upeek(pid, sizeof(unsigned long)*PT_R0, &scno) < 0)
|
||||
return -1;
|
||||
if (!(tcp->flags & TCB_INSYSCALL)) {
|
||||
/* Check if we return from execve. */
|
||||
@ -1204,9 +1204,9 @@ struct tcb *tcp;
|
||||
}
|
||||
#elif defined (POWERPC)
|
||||
# define SO_MASK 0x10000000
|
||||
if (upeek(pid, 4*PT_CCR, &flags) < 0)
|
||||
if (upeek(pid, sizeof(unsigned long)*PT_CCR, &flags) < 0)
|
||||
return -1;
|
||||
if (upeek(pid, 4*PT_R3, &result) < 0)
|
||||
if (upeek(pid, sizeof(unsigned long)*PT_R3, &result) < 0)
|
||||
return -1;
|
||||
if (flags & SO_MASK)
|
||||
result = -result;
|
||||
@ -1528,7 +1528,7 @@ force_result(tcp, error, rval)
|
||||
return -1;
|
||||
#else
|
||||
#ifdef POWERPC
|
||||
if (upeek(tcp->pid, 4*PT_CCR, &flags) < 0)
|
||||
if (upeek(tcp->pid, sizeof(unsigned long)*PT_CCR, &flags) < 0)
|
||||
return -1;
|
||||
if (error) {
|
||||
flags |= SO_MASK;
|
||||
@ -1538,8 +1538,8 @@ force_result(tcp, error, rval)
|
||||
flags &= ~SO_MASK;
|
||||
result = rval;
|
||||
}
|
||||
if (ptrace(PTRACE_POKEUSER, tcp->pid, (char*)(4*PT_CCR), flags) < 0 ||
|
||||
ptrace(PTRACE_POKEUSER, tcp->pid, (char*)(4*PT_R3), result) < 0)
|
||||
if (ptrace(PTRACE_POKEUSER, tcp->pid, (char*)(sizeof(unsigned long)*PT_CCR), flags) < 0 ||
|
||||
ptrace(PTRACE_POKEUSER, tcp->pid, (char*)(sizeof(unsigned long)*PT_R3), result) < 0)
|
||||
return -1;
|
||||
#else /* !POWERPC */
|
||||
#ifdef M68K
|
||||
@ -1762,7 +1762,10 @@ struct tcb *tcp;
|
||||
else
|
||||
tcp->u_nargs = MAX_ARGS;
|
||||
for (i = 0; i < tcp->u_nargs; i++) {
|
||||
if (upeek(pid, (i==0) ? (4*PT_ORIG_R3) : ((i+PT_R3)*4), &tcp->u_arg[i]) < 0)
|
||||
if (upeek(pid, (i==0) ?
|
||||
(sizeof(unsigned long)*PT_ORIG_R3) :
|
||||
((i+PT_R3)*sizeof(unsigned long)),
|
||||
&tcp->u_arg[i]) < 0)
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
14
util.c
14
util.c
@ -292,7 +292,7 @@ struct tcb *tcp;
|
||||
long addr;
|
||||
char *fmt;
|
||||
{
|
||||
int num;
|
||||
long num;
|
||||
|
||||
if (!addr) {
|
||||
tprintf("NULL");
|
||||
@ -942,7 +942,7 @@ struct tcb *tcp;
|
||||
if (upeek(tcp->pid, 4*15, &pc) < 0)
|
||||
return -1;
|
||||
#elif defined(POWERPC)
|
||||
if (upeek(tcp->pid, 4*PT_NIP, &pc) < 0)
|
||||
if (upeek(tcp->pid, sizeof(unsigned long)*PT_NIP, &pc) < 0)
|
||||
return -1;
|
||||
#elif defined(M68k)
|
||||
if (upeek(tcp->pid, 4*PT_PC, &pc) < 0)
|
||||
@ -1030,7 +1030,7 @@ struct tcb *tcp;
|
||||
#elif defined(POWERPC)
|
||||
long pc;
|
||||
|
||||
if (upeek(tcp->pid, 4*PT_NIP, &pc) < 0) {
|
||||
if (upeek(tcp->pid, sizeof(unsigned long)*PT_NIP, &pc) < 0) {
|
||||
tprintf ("[????????] ");
|
||||
return;
|
||||
}
|
||||
@ -1203,8 +1203,8 @@ typedef struct regs arg_setup_state;
|
||||
# define arg0_offset REG_A0
|
||||
# define arg1_offset (REG_A0+1)
|
||||
# elif defined (POWERPC)
|
||||
# define arg0_offset (4*PT_R3)
|
||||
# define arg1_offset (4*PT_R4)
|
||||
# define arg0_offset (sizeof(unsigned long)*PT_R3)
|
||||
# define arg1_offset (sizeof(unsigned long)*PT_R4)
|
||||
# define restore_arg0(tcp, state, val) 0
|
||||
# elif defined (HPPA)
|
||||
# define arg0_offset PT_GR26
|
||||
@ -1483,7 +1483,7 @@ struct tcb *tcp;
|
||||
#elif defined (MIPS)
|
||||
return -1; /* FIXME: I do not know what i do - Flo */
|
||||
#elif defined (POWERPC)
|
||||
if (upeek(tcp->pid, 4*PT_NIP, &tcp->baddr) < 0)
|
||||
if (upeek(tcp->pid, sizeof(unsigned long)*PT_NIP, &tcp->baddr) < 0)
|
||||
return -1;
|
||||
#elif defined(S390) || defined(S390X)
|
||||
if (upeek(tcp->pid,PT_PSWADDR, &tcp->baddr) < 0)
|
||||
@ -1707,7 +1707,7 @@ struct tcb *tcp;
|
||||
return 0;
|
||||
}
|
||||
#elif defined(POWERPC)
|
||||
if (upeek(tcp->pid, 4*PT_NIP, &pc) < 0)
|
||||
if (upeek(tcp->pid, sizeof(unsigned long)*PT_NIP, &pc) < 0)
|
||||
return -1;
|
||||
if (pc != tcp->baddr) {
|
||||
/* The breakpoint has not been reached yet. */
|
||||
|
Loading…
x
Reference in New Issue
Block a user