1 /*
2 * Copyright (c) 2016 Dmitry V. Levin <ldv@strace.io>
3 * Copyright (c) 2016-2021 The strace developers.
4 * All rights reserved.
5 *
6 * SPDX-License-Identifier: LGPL-2.1-or-later
7 */
8
9 #include "defs.h"
10
11 #ifdef ALPHA
12
13 # include "xstring.h"
14
15 static int
16 decode_getxxid(struct tcb *tcp, const char *what)
17 {
18 if (entering(tcp))
19 return 0;
20
21 long rval = getrval2(tcp);
22 if (rval == -1)
23 return 0;
24 static const char const fmt[] = "%s %ld";
25 static char outstr[sizeof(fmt) + 3 * sizeof(rval)];
26 xsprintf(outstr, fmt, what, rval);
27 tcp->auxstr = outstr;
28 return RVAL_STR;
29 }
30
31 SYS_FUNC(getxpid)
32 {
33 return decode_getxxid(tcp, "ppid");
34 }
35
36 SYS_FUNC(getxuid)
37 {
38 return decode_getxxid(tcp, "euid");
39 }
40
41 SYS_FUNC(getxgid)
42 {
43 return decode_getxxid(tcp, "egid");
44 }
45
46 SYS_FUNC(osf_statfs)
47 {
48 /* pathname */
49 printpath(tcp, tcp->u_arg[0]);
50 tprint_arg_next();
51
52 /* buf */
53 printaddr(tcp->u_arg[1]);
54 tprint_arg_next();
55
56 /* size */
57 PRINT_VAL_U(tcp->u_arg[2]);
58
59 return RVAL_DECODED;
60 }
61
62 SYS_FUNC(osf_fstatfs)
63 {
64 /* fd */
65 printfd(tcp, tcp->u_arg[0]);
66 tprint_arg_next();
67
68 /* buf */
69 printaddr(tcp->u_arg[1]);
70 tprint_arg_next();
71
72 /* size */
73 PRINT_VAL_U(tcp->u_arg[2]);
74
75 return RVAL_DECODED;
76 }
77
78 #endif /* ALPHA */