// SPDX-License-Identifier: GPL-2.0 /* * Test sigreturn to an unaligned address, ie. low 2 bits set. * Nothing bad should happen. * This was able to trigger warnings with CONFIG_PPC_RFI_SRR_DEBUG=y. */ #include <signal.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ucontext.h> #include <unistd.h> #include "utils.h" static void sigusr1_handler(int signo, siginfo_t *info, void *ptr) { ucontext_t *uc = ptr; UCONTEXT_NIA(uc) |= 3; } static int test_sigreturn_unaligned(void) { struct sigaction action; memset(&action, 0, sizeof(action)); action.sa_sigaction = sigusr1_handler; action.sa_flags = SA_SIGINFO; FAIL_IF(sigaction(SIGUSR1, &action, NULL) == -1); raise(SIGUSR1); return 0; } int main(void) { return test_harness(test_sigreturn_unaligned, "sigreturn_unaligned"); }