summaryrefslogtreecommitdiff
path: root/system.c
diff options
context:
space:
mode:
authorWichert Akkerman <wichert@deephackmode.org>2000-08-10 02:14:04 +0000
committerWichert Akkerman <wichert@deephackmode.org>2000-08-10 02:14:04 +0000
commit16a03d2e97415afe6cf34172a0aea97a95a0b160 (patch)
tree6f229102401c8d22a9cd85c69f63dcb49b36ca6f /system.c
parente381610a008714838053fdb9ca9b6b9bdeeaa8e4 (diff)
downloadstrace-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.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/system.c b/system.c
index 218e137..f16b711 100644
--- a/system.c
+++ b/system.c
@@ -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