mirror of https://github.com/xemu-project/xemu.git
34 lines
627 B
C
34 lines
627 B
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
/* See https://gitlab.com/qemu-project/qemu/-/issues/1648 */
|
|
|
|
#include <signal.h>
|
|
|
|
__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;
|
|
}
|