From: Cyrus H. <ch...@bo...> - 2005-10-20 03:13:52
|
Dear sbcl-devel, In 0.9.5.76, we now test whether or not nodefer works using a SIGTRAP. While this works fine under normal circumstances on Mac OS, it breaks GDB. Gabor suggested the obvious fix of changing the signal under Darwin and this patch does that. It is a rather trivial and obvious patch, but it restores the ability to debug sbcl using gdb under Mac OS. I should offer the caveat that I really don't understand signals that well and don't know if this restores the intended behavior of the test, but it, at least, restores my ability to run sbcl using gdb. Thank you for considering this patch, Cyrus Index: sbcl/src/runtime/interrupt.c =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/runtime/interrupt.c,v retrieving revision 1.102 diff -u -r1.102 interrupt.c --- sbcl/src/runtime/interrupt.c 17 Oct 2005 10:58:30 -0000 1.102 +++ sbcl/src/runtime/interrupt.c 20 Oct 2005 03:09:18 -0000 @@ -1075,8 +1075,13 @@ sa.sa_sigaction = sigaction_nodefer_test_handler; sigemptyset(&sa.sa_mask); sigaddset(&sa.sa_mask, SIGABRT); +#ifdef LISP_FEATURE_DARWIN + sigaction(SIGUSR1, &sa, NULL); + kill(getpid(), SIGUSR1); +#else sigaction(SIGTRAP, &sa, NULL); kill(getpid(), SIGTRAP); +#endif while (sigaction_nodefer_works == -1); } |