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 <minov...@redhat.com>
---
 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


Reply via email to