diff options
author | Roland McGrath <roland@redhat.com> | 2003-01-14 09:59:00 +0000 |
---|---|---|
committer | Roland McGrath <roland@redhat.com> | 2003-01-14 09:59:00 +0000 |
commit | eb285359906700f46b22cf4f9911695034313736 (patch) | |
tree | 3cbf6c7c9f25f29d3ea031ce6386eb1d4201b898 | |
parent | 92999db60bddbc925c7f702a6c897ad17d746739 (diff) | |
download | strace-eb285359906700f46b22cf4f9911695034313736.tar.gz strace-eb285359906700f46b22cf4f9911695034313736.tar.bz2 strace-eb285359906700f46b22cf4f9911695034313736.tar.xz |
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>.
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | process.c | 89 | ||||
-rw-r--r-- | signal.c | 2 | ||||
-rw-r--r-- | syscall.c | 17 | ||||
-rw-r--r-- | util.c | 14 |
5 files changed, 65 insertions, 59 deletions
diff --git a/configure.ac b/configure.ac index f78a428..6d83bbe 100644 --- a/configure.ac +++ b/configure.ac @@ -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.]) ;; @@ -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; } } @@ -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; @@ -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; } } @@ -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. */ |