(root)/
strace-6.5/
src/
linux/
powerpc/
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 addr;
      12  	if (!get_stack_pointer(tcp, &addr))
      13  		return;
      14  
      15  	/* Skip dummy stack frame. */
      16  	addr += 64;
      17  
      18  #ifdef POWERPC64
      19  	/* The only sigreturn on ppc64 is compat_sys_sigreturn. */
      20  	typedef struct {
      21  		unsigned int _unused[4];
      22  		int signal;
      23  		unsigned int handler;
      24  		unsigned int oldmask;
      25  		/* all the rest is irrelevant */
      26  	} sigreturn_context;
      27  #else
      28  	typedef struct sigcontext sigreturn_context;
      29  #endif
      30  
      31  	sigreturn_context sc;
      32  
      33  	if (!umove_or_printaddr(tcp, addr, &sc)) {
      34  		const unsigned int mask[NSIG_BYTES / sizeof(int)] = {
      35  			sc.oldmask,
      36  			sc._unused[3]
      37  		};
      38  
      39  		tprintsigmask_addr(mask);
      40  	}
      41  }