diff options
author | Wichert Akkerman <wichert@deephackmode.org> | 2000-08-10 02:14:04 +0000 |
---|---|---|
committer | Wichert Akkerman <wichert@deephackmode.org> | 2000-08-10 02:14:04 +0000 |
commit | 16a03d2e97415afe6cf34172a0aea97a95a0b160 (patch) | |
tree | 6f229102401c8d22a9cd85c69f63dcb49b36ca6f /system.c | |
parent | e381610a008714838053fdb9ca9b6b9bdeeaa8e4 (diff) | |
download | strace-16a03d2e97415afe6cf34172a0aea97a95a0b160.tar.gz strace-16a03d2e97415afe6cf34172a0aea97a95a0b160.tar.bz2 strace-16a03d2e97415afe6cf34172a0aea97a95a0b160.tar.xz |
test/clone.c: minor fixup
Another bunch of patches from John Hughes merged:
signal.c:
+ SVR4 printcontext(): sigset_t != sigset_t*
+ getcontext returns a value, so print on exit of syscall
+ add UC_FP to ucontext_flags for OS writers that can't spell
+ sys_signal(): special case SIG_{ERR,DFL,IGN}
+ decode_subcall(): only do subcall range checking when needed
bunch of UnixWare updates
aclocal.m4, acconfig.h, configure.in: add test for long long type
Diffstat (limited to 'system.c')
-rw-r--r-- | system.c | 45 |
1 files changed, 45 insertions, 0 deletions
@@ -1903,3 +1903,48 @@ struct tcb *tcp; } #endif + +#if UNIXWARE >= 2 + +#include <sys/ksym.h> +#include <sys/elf.h> + +static struct xlat ksym_flags[] = { + { STT_NOTYPE, "STT_NOTYPE" }, + { STT_FUNC, "STT_FUNC" }, + { STT_OBJECT, "STT_OBJECT" }, + { 0, NULL }, +}; + +int +sys_getksym(tcp) +struct tcb *tcp; +{ + if (entering (tcp)) { + printstr(tcp, tcp->u_arg[0], -1); + tprintf(", "); + } + else { + if (syserror(tcp)) { + tprintf("%#lx, %#lx", + tcp->u_arg[1], tcp->u_arg[2]); + } + else { + int val; + printnum (tcp, tcp->u_arg[1], "%#lx"); + tprintf(", "); + if (umove(tcp, tcp->u_arg[2], &val) < 0) { + tprintf("%#lx", tcp->u_arg[2]); + } + else { + tprintf("["); + printxval (ksym_flags, val, "STT_???"); + tprintf("]"); + } + } + } + + return 0; +} + +#endif |