(root)/
strace-6.5/
src/
syscall_name.c
       1  /*
       2   * Copyright (c) 2015 Mike Frysinger <vapier@gentoo.org>
       3   * Copyright (c) 2016-2020 Dmitry V. Levin <ldv@strace.io>
       4   * Copyright (c) 2016-2021 Eugene Syromyatnikov <evgsyr@gmail.com>
       5   * Copyright (c) 2017 Chen Jingpiao <chenjingpiao@gmail.com>
       6   * Copyright (c) 2018 Paul Chaignon <paul.chaignon@gmail.com>
       7   * Copyright (c) 2021-2022 The strace developers.
       8   * All rights reserved.
       9   *
      10   * SPDX-License-Identifier: LGPL-2.1-or-later
      11   */
      12  
      13  #include "defs.h"
      14  
      15  /* for __X32_SYSCALL_BIT */
      16  #include "scno.h"
      17  
      18  /* PERSONALITY*_AUDIT_ARCH definitions depend on AUDIT_ARCH_* constants.  */
      19  #include <linux/audit.h>
      20  #define XLAT_MACROS_ONLY
      21  # include "xlat/elf_em.h"
      22  # include "xlat/audit_arch.h"
      23  #undef XLAT_MACROS_ONLY
      24  
      25  #include "nr_prefix.c"
      26  
      27  const struct audit_arch_t audit_arch_vec[SUPPORTED_PERSONALITIES] = {
      28  	PERSONALITY0_AUDIT_ARCH,
      29  #if SUPPORTED_PERSONALITIES > 1
      30  	PERSONALITY1_AUDIT_ARCH,
      31  # if SUPPORTED_PERSONALITIES > 2
      32  	PERSONALITY2_AUDIT_ARCH,
      33  # endif
      34  #endif
      35  };
      36  
      37  
      38  const char *
      39  syscall_name_arch(kernel_ulong_t nr, unsigned int arch, const char **prefix)
      40  {
      41  	for (size_t i = 0; i < SUPPORTED_PERSONALITIES; i++) {
      42  		if (arch != audit_arch_vec[i].arch)
      43  			continue;
      44  
      45  		kernel_ulong_t scno = shuffle_scno_pers(nr, i);
      46  		if (!scno_pers_is_valid(scno, i))
      47  			continue;
      48  
      49  		if (prefix) {
      50  			*prefix = (i == current_personality) ? nr_prefix(nr)
      51  							     : NULL;
      52  		}
      53  		return sysent_vec[i][scno].sys_name;
      54  	}
      55  
      56  	if (prefix)
      57  		*prefix = NULL;
      58  	return NULL;
      59  }