/* SPDX-License-Identifier: GPL-2.0-or-later */ /* See https://gitlab.com/qemu-project/qemu/-/issues/1648 */ #include __attribute__((noinline)) void bar(void) { /* Success! Continue through sigreturn. */ } /* * Because of the change of ABI between foo and bar, the compiler is * required to save XMM6-XMM15. The compiler will use MOVAPS or MOVDQA, * which will trap if the stack frame is not 16 byte aligned. */ __attribute__((noinline, ms_abi)) void foo(void) { bar(); } void sighandler(int num) { foo(); } int main(void) { signal(SIGUSR1, sighandler); raise(SIGUSR1); return 0; }