(__siginfohandler_t *)
#endif
memory_fault_handler);
-#ifdef SIG_MEMORY_FAULT2
- undoably_install_low_level_interrupt_handler(SIG_MEMORY_FAULT2,
-#ifdef LISP_FEATURE_FREEBSD
- (__siginfohandler_t *)
-#endif
- memory_fault_handler);
-#endif
#endif
#ifdef LISP_FEATURE_SB_THREAD
SHOW("os_install_interrupt_handlers()/bsd-os/!defined(GENCGC)");
undoably_install_low_level_interrupt_handler(SIG_MEMORY_FAULT,
sigsegv_handler);
-#ifdef SIG_MEMORY_FAULT2
- undoably_install_low_level_interrupt_handler(SIG_MEMORY_FAULT2,
- sigsegv_handler);
-#endif
}
#endif /* defined GENCGC */
#endif /* __NetBSD__ */
#ifdef __FreeBSD__
+extern int getosreldate(void);
+
+int sig_memory_fault;
+
static void freebsd_init()
{
+ /* Memory fault signal on FreeBSD was changed from SIGBUS to
+ * SIGSEGV. */
+ if (getosreldate() < 700004)
+ sig_memory_fault = SIGBUS;
+ else
+ sig_memory_fault = SIGSEGV;
+
/* Quote from sbcl-devel (NIIMI Satoshi): "Some OSes, like FreeBSD
* 4.x with GENERIC kernel, does not enable SSE support even on
* SSE capable CPUs". Detect this situation and skip the
#define KERN_PROC_PATHNAME 12
#endif
-extern int getosreldate(void);
-
char *
os_get_runtime_executable_path()
{