summaryrefslogtreecommitdiff
path: root/src/alpha.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/alpha.c')
-rw-r--r--src/alpha.c66
1 files changed, 66 insertions, 0 deletions
diff --git a/src/alpha.c b/src/alpha.c
new file mode 100644
index 000000000..e6a3f75ae
--- /dev/null
+++ b/src/alpha.c
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2016 Dmitry V. Levin <ldv@strace.io>
+ * Copyright (c) 2016-2018 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#include "defs.h"
+
+#ifdef ALPHA
+
+# include "xstring.h"
+
+static int
+decode_getxxid(struct tcb *tcp, const char *what)
+{
+ if (entering(tcp))
+ return 0;
+
+ long rval = getrval2(tcp);
+ if (rval == -1)
+ return 0;
+ static const char const fmt[] = "%s %ld";
+ static char outstr[sizeof(fmt) + 3 * sizeof(rval)];
+ xsprintf(outstr, fmt, what, rval);
+ tcp->auxstr = outstr;
+ return RVAL_STR;
+}
+
+SYS_FUNC(getxpid)
+{
+ return decode_getxxid(tcp, "ppid");
+}
+
+SYS_FUNC(getxuid)
+{
+ return decode_getxxid(tcp, "euid");
+}
+
+SYS_FUNC(getxgid)
+{
+ return decode_getxxid(tcp, "egid");
+}
+
+SYS_FUNC(osf_statfs)
+{
+ printpath(tcp, tcp->u_arg[0]);
+ tprints(", ");
+ printaddr(tcp->u_arg[1]);
+ tprints(", ");
+ tprintf("%lu", tcp->u_arg[2]);
+ return RVAL_DECODED;
+}
+
+SYS_FUNC(osf_fstatfs)
+{
+ printfd(tcp, tcp->u_arg[0]);
+ tprints(", ");
+ printaddr(tcp->u_arg[1]);
+ tprints(", ");
+ tprintf("%lu", tcp->u_arg[2]);
+ return RVAL_DECODED;
+}
+
+#endif /* ALPHA */