This is the patch to introduce SIGILL handler to be able to trigger SIGSEGV signal in qemu. This has been written to help debugging state when qemu crashes by SIGSEGV as a simple reproducer to emulate such situation in case of need.
Signed-off-by: Michal Novotny <[email protected]> --- vl.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/vl.c b/vl.c index 7e04641..3966271 100644 --- a/vl.c +++ b/vl.c @@ -2897,6 +2897,26 @@ static int object_create(QemuOpts *opts, void *opaque) return 0; } +#ifdef CONFIG_POSIX +static void signal_handler(int signal) +{ + int *p = NULL; + + *p = 0xDEADBEEF; +} + +static void setup_signal_handlers(void) +{ + struct sigaction action; + + memset(&action, 0, sizeof(action)); + sigfillset(&action.sa_mask); + action.sa_handler = signal_handler; + action.sa_flags = 0; + sigaction(SIGILL, &action, NULL); +} +#endif + int main(int argc, char **argv, char **envp) { int i; @@ -2945,6 +2965,10 @@ int main(int argc, char **argv, char **envp) #endif } +#ifdef CONFIG_POSIX + setup_signal_handlers(); +#endif + module_call_init(MODULE_INIT_QOM); qemu_add_opts(&qemu_drive_opts); -- 1.7.11.7
