/* * Copyright (c) 2015-2021 The strace developers. * All rights reserved. * * SPDX-License-Identifier: LGPL-2.1-or-later */ static void arch_sigreturn(struct tcb *tcp) { kernel_ulong_t sp; if (!get_stack_pointer(tcp, &sp)) return; #define SIZEOF_STRUCT_SIGINFO 128 #define SIZEOF_STRUCT_SIGCONTEXT (21 * 4) #define OFFSETOF_STRUCT_UCONTEXT_UC_SIGMASK (5 * 4 + SIZEOF_STRUCT_SIGCONTEXT) const kernel_ulong_t addr = #ifdef AARCH64 tcp->currpers == 0 ? (sp + SIZEOF_STRUCT_SIGINFO + offsetof(ucontext_t, uc_sigmask)) : #endif (sp + OFFSETOF_STRUCT_UCONTEXT_UC_SIGMASK); print_sigset_addr(tcp, addr); }