From mboxrd@z Thu Jan 1 00:00:00 1970 From: erik quanstrom Date: Thu, 23 Aug 2012 13:45:49 -0400 To: 9fans@9fans.net Message-ID: <7b91c25159e2f83bbf6632726c978d2d@kw.quanstro.net> In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Subject: Re: [9fans] syscall tracing: errstr Topicbox-Message-UUID: af46be84-ead7-11e9-9d60-3106f5b1d025 On Thu Aug 23 13:11:05 EDT 2012, yarikos@gmail.com wrote: > Anybody else noticed ratrace reporting an older errstr? yes. i see the same thing. should be using up->syserrstr not up->errstr, i think. i took the liberty of removing any system call that's been dead for more than a decade. :-) the format of ratrace output is still essentially unparsable, and it's not utf-8 safe. - erik ; diffy -c ../port/*fmt*.c /n/dump/2012/0823/sys/src/9/port/syscallfmt.c:80,86 - ../port/syscallfmt.c:80,85 p = va_arg(list, uintptr); fmtprint(&fmt, "%#p", p); break; - case _ERRSTR: /* deprecated */ case CHDIR: case EXITS: case REMOVE: /n/dump/2012/0823/sys/src/9/port/syscallfmt.c:124,136 - ../port/syscallfmt.c:123,128 argv++; } break; - case _FSESSION: /* deprecated */ - case _FSTAT: /* deprecated */ - case _FWSTAT: /* obsolete */ - i[0] = va_arg(list, int); - a = va_arg(list, char*); - fmtprint(&fmt, "%d %#p", i[0], a); - break; case FAUTH: i[0] = va_arg(list, int); a = va_arg(list, char*); /n/dump/2012/0823/sys/src/9/port/syscallfmt.c:144,159 - ../port/syscallfmt.c:136,141 v = va_arg(list, void*); fmtprint(&fmt, "%#p", v); break; - case _MOUNT: /* deprecated */ - i[0] = va_arg(list, int); - fmtprint(&fmt, "%d ", i[0]); - a = va_arg(list, char*); - fmtuserstring(&fmt, a, " "); - i[0] = va_arg(list, int); - fmtprint(&fmt, "%#ux ", i[0]); - a = va_arg(list, char*); - fmtuserstring(&fmt, a, ""); - break; case OPEN: a = va_arg(list, char*); fmtuserstring(&fmt, a, " "); /n/dump/2012/0823/sys/src/9/port/syscallfmt.c:160,182 - ../port/syscallfmt.c:142,151 i[0] = va_arg(list, int); fmtprint(&fmt, "%#ux", i[0]); break; - case OSEEK: /* deprecated */ - i[0] = va_arg(list, int); - l = va_arg(list, long); - i[1] = va_arg(list, int); - fmtprint(&fmt, "%d %ld %d", i[0], l, i[1]); - break; case SLEEP: l = va_arg(list, long); fmtprint(&fmt, "%ld", l); break; - case _STAT: /* obsolete */ - case _WSTAT: /* obsolete */ - a = va_arg(list, char*); - fmtuserstring(&fmt, a, " "); - a = va_arg(list, char*); - fmtprint(&fmt, "%#p", a); - break; case RFORK: i[0] = va_arg(list, int); fmtprint(&fmt, "%#ux", i[0]); /n/dump/2012/0823/sys/src/9/port/syscallfmt.c:203,209 - ../port/syscallfmt.c:172,177 break; case NOTIFY: case SEGDETACH: - case _WAIT: /* deprecated */ v = va_arg(list, void*); fmtprint(&fmt, "%#p", v); break; /n/dump/2012/0823/sys/src/9/port/syscallfmt.c:274,291 - ../port/syscallfmt.c:242,255 a = va_arg(list, char*); fmtuserstring(&fmt, a, ""); break; - case _READ: /* deprecated */ case PREAD: i[0] = va_arg(list, int); v = va_arg(list, void*); l = va_arg(list, long); fmtprint(&fmt, "%d %#p %ld", i[0], v, l); - if(syscallno == PREAD){ - vl = va_arg(list, vlong); - fmtprint(&fmt, " %lld", vl); - } + vl = va_arg(list, vlong); + fmtprint(&fmt, " %lld", vl); break; - case _WRITE: /* deprecated */ case PWRITE: i[0] = va_arg(list, int); v = va_arg(list, void*); /n/dump/2012/0823/sys/src/9/port/syscallfmt.c:294,303 - ../port/syscallfmt.c:258,265 len = MIN(l, 64); fmtrwdata(&fmt, v, len, " "); fmtprint(&fmt, "%ld", l); - if(syscallno == PWRITE){ - vl = va_arg(list, vlong); - fmtprint(&fmt, " %lld", vl); - } + vl = va_arg(list, vlong); + fmtprint(&fmt, " %lld", vl); break; } /n/dump/2012/0823/sys/src/9/port/syscallfmt.c:323,336 - ../port/syscallfmt.c:285,297 switch(syscallno){ default: if(ret == -1) - errstr = up->errstr; + errstr = up->syserrstr; fmtprint(&fmt, " = %ld", ret); break; case ALARM: - case _WRITE: case PWRITE: if(ret == -1) - errstr = up->errstr; + errstr = up->syserrstr; fmtprint(&fmt, " = %ld", ret); break; case EXEC: /n/dump/2012/0823/sys/src/9/port/syscallfmt.c:338,344 - ../port/syscallfmt.c:299,305 case SEGATTACH: case RENDEZVOUS: if((void *)ret == (void*)-1) - errstr = up->errstr; + errstr = up->syserrstr; fmtprint(&fmt, " = %#p", (void *)ret); break; case AWAIT: /n/dump/2012/0823/sys/src/9/port/syscallfmt.c:350,359 - ../port/syscallfmt.c:311,319 } else{ fmtprint(&fmt, "%#p/\"\" %lud = %ld", a, l, ret); - errstr = up->errstr; + errstr = up->syserrstr; } break; - case _ERRSTR: case ERRSTR: a = va_arg(list, char*); if(syscallno == _ERRSTR) /n/dump/2012/0823/sys/src/9/port/syscallfmt.c:366,372 - ../port/syscallfmt.c:326,332 } else{ fmtprint(&fmt, "\"\" %lud = %ld", l, ret); - errstr = up->errstr; + errstr = up->syserrstr; } break; case FD2PATH: /n/dump/2012/0823/sys/src/9/port/syscallfmt.c:380,389 - ../port/syscallfmt.c:340,348 } else{ fmtprint(&fmt, "\"\" %lud = %ld", l, ret); - errstr = up->errstr; + errstr = up->syserrstr; } break; - case _READ: case PREAD: i = va_arg(list, int); USED(i); /n/dump/2012/0823/sys/src/9/port/syscallfmt.c:395,401 - ../port/syscallfmt.c:354,360 } else{ fmtprint(&fmt, "/\"\""); - errstr = up->errstr; + errstr = up->syserrstr; } fmtprint(&fmt, " %ld", l); if(syscallno == PREAD){