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 }