/* * Common user code for specification exception testing. * * SPDX-License-Identifier: GPL-2.0-or-later */ #include #include #include #include #include extern void test(void); extern long expected_old_psw[2]; static void handle_sigill(int sig, siginfo_t *info, void *ucontext) { if ((long)info->si_addr != expected_old_psw[1]) { _exit(EXIT_FAILURE); } _exit(EXIT_SUCCESS); } int main(void) { struct sigaction act; int err; memset(&act, 0, sizeof(act)); act.sa_sigaction = handle_sigill; act.sa_flags = SA_SIGINFO; err = sigaction(SIGILL, &act, NULL); assert(err == 0); test(); return EXIT_FAILURE; }