(root)/
strace-6.5/
src/
alpha.c
       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 */