(root)/
strace-6.5/
src/
linux/
arm/
arch_sigreturn.c
       1  /*
       2   * Copyright (c) 2015-2021 The strace developers.
       3   * All rights reserved.
       4   *
       5   * SPDX-License-Identifier: LGPL-2.1-or-later
       6   */
       7  
       8  static void
       9  arch_sigreturn(struct tcb *tcp)
      10  {
      11  	kernel_ulong_t sp;
      12  	if (!get_stack_pointer(tcp, &sp))
      13  		return;
      14  
      15  #define SIZEOF_STRUCT_SIGINFO 128
      16  #define SIZEOF_STRUCT_SIGCONTEXT (21 * 4)
      17  #define OFFSETOF_STRUCT_UCONTEXT_UC_SIGMASK (5 * 4 + SIZEOF_STRUCT_SIGCONTEXT)
      18  
      19  	const kernel_ulong_t addr =
      20  #ifdef AARCH64
      21  		tcp->currpers == 0 ?
      22  			(sp + SIZEOF_STRUCT_SIGINFO +
      23  			 offsetof(ucontext_t, uc_sigmask)) :
      24  #endif
      25  			(sp + OFFSETOF_STRUCT_UCONTEXT_UC_SIGMASK);
      26  
      27  	print_sigset_addr(tcp, addr);
      28  }