From 5daa028ca314e4c36c1f38e0149834d9a0520128 Mon Sep 17 00:00:00 2001 From: Wichert Akkerman Date: Mon, 15 Mar 1999 19:49:42 +0000 Subject: [PATCH] Simply bugfixes, see patch to debian/changelog for details --- mem.c | 15 ++++++------ net.c | 4 +--- proc.c | 68 +------------------------------------------------------ process.c | 6 ++--- signal.c | 6 ++--- util.c | 15 ++++++++---- 6 files changed, 26 insertions(+), 88 deletions(-) diff --git a/mem.c b/mem.c index 7ba41092..73076163 100644 --- a/mem.c +++ b/mem.c @@ -36,6 +36,7 @@ #else #include #endif + #if defined(LINUX) && defined(__i386__) #include #endif @@ -47,7 +48,7 @@ struct tcb *tcp; if (entering(tcp)) { tprintf("%#lx", tcp->u_arg[0]); } -#ifdef linux +#ifdef LINUX return RVAL_HEX; #else return 0; @@ -111,23 +112,21 @@ sys_mmap(tcp) struct tcb *tcp; { #ifdef LINUX -#if defined(ALPHA) || defined(sparc) +# if defined(ALPHA) || defined(sparc) long *u_arg = tcp->u_arg; -#else /* !ALPHA */ +# else /* !ALPHA */ long u_arg[6]; -#endif /* !ALPHA */ +# endif /* !ALPHA */ #else /* !LINUX */ long *u_arg = tcp->u_arg; #endif /* !LINUX */ if (entering(tcp)) { -#ifdef LINUX -#if !defined(ALPHA) && !defined(__sparc__) +#if defined(LINUX) && !defined(ALPHA) && !defined(__sparc__) if (umoven(tcp, tcp->u_arg[0], sizeof u_arg, (char *) u_arg) == -1) return 0; -#endif /* ALPHA/sparc */ -#endif /* LINUX */ +#endif /* LINUX && !ALPHA && !sparc */ /* addr */ tprintf("%#lx, ", u_arg[0]); diff --git a/net.c b/net.c index ab8a3678..8ea5c729 100644 --- a/net.c +++ b/net.c @@ -673,11 +673,9 @@ struct tcb *tcp; else tprintf("[%u, %u]", fds[0], fds[1]); } -#else -#if defined(SPARC) || defined(SVR4) +#elif defined(SPARC) || defined(SVR4) if (exiting(tcp)) tprintf("[%lu, %lu]", tcp->u_rval, getrval2(tcp)); -#endif #endif return 0; } diff --git a/proc.c b/proc.c index 6e110fd4..1bafa5e4 100644 --- a/proc.c +++ b/proc.c @@ -85,73 +85,6 @@ static struct xlat proc_run_flags[] = { { 0, NULL }, }; -#if 0 - -static struct xlat proc_map_flags[] = { - { MA_READ, "MA_READ" }, - { MA_WRITE, "MA_WRITE" }, - { MA_EXEC, "MA_EXEC" }, - { MA_SHARED, "MA_SHARED" }, - { MA_BREAK, "MA_BREAK" }, - { MA_STACK, "MA_STACK" }, - { 0, NULL }, -}; - -static struct xlat proc_page_flags[] = { - { PG_REFERENCED,"PG_REFERENCED" }, - { PG_MODIFIED, "PG_MODIFIED" }, - { PG_HWMAPPED, "PG_HWMAPPED" }, - { 0, NULL }, -}; - -#ifdef SPARC - -static struct xlat proc_regs[] = { - { R_G0, "R_G0" }, - { R_G1, "R_G1" }, - { R_G2, "R_G2" }, - { R_G3, "R_G3" }, - { R_G4, "R_G4" }, - { R_G5, "R_G5" }, - { R_G6, "R_G6" }, - { R_G7, "R_G7" }, - { R_O0, "R_O0" }, - { R_O1, "R_O1" }, - { R_O2, "R_O2" }, - { R_O3, "R_O3" }, - { R_O4, "R_O4" }, - { R_O5, "R_O5" }, - { R_O6, "R_O6" }, - { R_O7, "R_O7" }, - { R_L0, "R_L0" }, - { R_L1, "R_L1" }, - { R_L2, "R_L2" }, - { R_L3, "R_L3" }, - { R_L4, "R_L4" }, - { R_L5, "R_L5" }, - { R_L6, "R_L6" }, - { R_L7, "R_L7" }, - { R_I0, "R_I0" }, - { R_I1, "R_I1" }, - { R_I2, "R_I2" }, - { R_I3, "R_I3" }, - { R_I4, "R_I4" }, - { R_I5, "R_I5" }, - { R_I6, "R_I6" }, - { R_I7, "R_I7" }, - { R_PSR, "R_PSR" }, - { R_PC, "R_PC" }, - { R_nPC, "R_nPC" }, - { R_Y, "R_Y" }, - { R_WIM, "R_WIM" }, - { R_TBR, "R_TBR" }, - { 0, NULL }, -}; - -#endif /* SPARC */ - -#endif /* 0 */ - int proc_ioctl(tcp, code, arg) struct tcb *tcp; @@ -250,3 +183,4 @@ int code, arg; } #endif /* SVR4 */ + diff --git a/process.c b/process.c index f9f9993c..a7b62f4f 100644 --- a/process.c +++ b/process.c @@ -62,7 +62,7 @@ #define WCOREDUMP(status) ((status) & 0200) #endif -/* WTA: this has `&& !defined(LINUXSPARC', this seems unneeded though? */ +/* WTA: this has `&& !defined(LINUXSPARC)', this seems unneeded though? */ #if defined(HAVE_PRCTL) static struct xlat prctl_options[] = { #ifdef PR_MAXPROCS @@ -182,7 +182,7 @@ struct tcb *tcp; return 0; } -#ifndef LINUX +#if !defined(LINUX) int sys_getdomainname(tcp) @@ -937,7 +937,7 @@ internal_wait(tcp) struct tcb *tcp; { if (entering(tcp)) { -/* WTA: fix bug with hanging children */ + /* WTA: fix bug with hanging children */ if (!(tcp->u_arg[2] & WNOHANG) && tcp->nchildren > 0) { /* There are traced children */ tcp->flags |= TCB_SUSPENDED; diff --git a/signal.c b/signal.c index 66f6b3f1..baa39477 100644 --- a/signal.c +++ b/signal.c @@ -210,13 +210,13 @@ sigset_t *mask; strcpy(outstr, s); s = outstr + strlen(outstr); nsigs = 0; - for (i = 1; i <= nsignals; i++) { + for (i = 1; i < nsignals; i++) { if (sigismember(mask, i) == 1) nsigs++; } if (nsigs >= nsignals * 2 / 3) { *s++ = '~'; - for (i = 1; i <= nsignals; i++) { + for (i = 1; i < nsignals; i++) { switch (sigismember(mask, i)) { case 1: sigdelset(mask, i); @@ -229,7 +229,7 @@ sigset_t *mask; } format = "%s"; *s++ = '['; - for (i = 1; i <= nsignals; i++) { + for (i = 1; i < nsignals; i++) { if (sigismember(mask, i) == 1) { sprintf(s, format, signalent[i] + 3); s += strlen(s); format = " %s"; diff --git a/util.c b/util.c index 6fd726ce..5611f822 100644 --- a/util.c +++ b/util.c @@ -518,6 +518,7 @@ char *laddr; #ifdef LINUX int pid = tcp->pid; int n, m; + int started = 0; union { long val; char x[sizeof(long)]; @@ -530,13 +531,15 @@ char *laddr; errno = 0; u.val = ptrace(PTRACE_PEEKDATA, pid, (char *) addr, 0); if (errno) { - if (errno==EPERM || errno==EIO) { + if (started && (errno==EPERM || errno==EIO)) { /* Ran into 'end of memory' - stupid "printpath" */ return 0; } + /* But if not started, we had a bogus address. */ perror("ptrace: umoven"); return -1; } + started = 1; memcpy(laddr, &u.x[n], m = MIN(sizeof(long) - n, len)); addr += sizeof(long), laddr += m, len -= m; } @@ -544,13 +547,14 @@ char *laddr; errno = 0; u.val = ptrace(PTRACE_PEEKDATA, pid, (char *) addr, 0); if (errno) { - if (errno==EPERM || errno==EIO) { + if (started && (errno==EPERM || errno==EIO)) { /* Ran into 'end of memory' - stupid "printpath" */ return 0; } perror("ptrace: umoven"); return -1; } + started = 1; memcpy(laddr, u.x, m = MIN(sizeof(long), len)); addr += sizeof(long), laddr += m, len -= m; } @@ -642,6 +646,7 @@ char *laddr; #ifdef SRVR4 return umoven(tcp, addr, len, laddr); #else /* !SVR4 */ + int started = 0; int pid = tcp->pid; int i, n, m; union { @@ -656,13 +661,14 @@ char *laddr; errno = 0; u.val = ptrace(PTRACE_PEEKDATA, pid, (char *)addr, 0); if (errno) { - if (errno==EPERM || errno==EIO) { + if (started && (errno==EPERM || errno==EIO)) { /* Ran into 'end of memory' - stupid "printpath" */ return 0; } perror("umovestr"); return -1; } + started = 1; memcpy(laddr, &u.x[n], m = MIN(sizeof(long)-n,len)); while (n & (sizeof(long) - 1)) if (u.x[n++] == '\0') @@ -673,13 +679,14 @@ char *laddr; errno = 0; u.val = ptrace(PTRACE_PEEKDATA, pid, (char *)addr, 0); if (errno) { - if (errno==EPERM || errno==EIO) { + if (started && (errno==EPERM || errno==EIO)) { /* Ran into 'end of memory' - stupid "printpath" */ return 0; } perror("umovestr"); return -1; } + started = 1; memcpy(laddr, u.x, m = MIN(sizeof(long), len)); for (i = 0; i < sizeof(long); i++) if (u.x[i] == '\0') -- 2.40.0