projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
0.7.12.12:
[sbcl.git]
/
src
/
runtime
/
sunos-os.c
diff --git
a/src/runtime/sunos-os.c
b/src/runtime/sunos-os.c
index
5e721f9
..
a6ab92f
100644
(file)
--- a/
src/runtime/sunos-os.c
+++ b/
src/runtime/sunos-os.c
@@
-160,11
+160,6
@@
boolean is_valid_lisp_addr(os_vm_address_t addr)
\f
\f
-#if defined GENCGC
-
-#error "GENCGC is not yet supported (presumably on x86 solaris?)"
-
-#else
static void
sigsegv_handler(int signal, siginfo_t *info, void* void_context)
static void
sigsegv_handler(int signal, siginfo_t *info, void* void_context)
@@
-173,17
+168,15
@@
sigsegv_handler(int signal, siginfo_t *info, void* void_context)
os_vm_address_t addr;
addr = arch_get_bad_addr(signal, info, context);
os_vm_address_t addr;
addr = arch_get_bad_addr(signal, info, context);
- /* There's some complicated recovery code in linux-os.c here
- that I'm currently too confused to understand. FIXME. */
if(!interrupt_maybe_gc(signal, info, context)) {
if(!interrupt_maybe_gc(signal, info, context)) {
- interrupt_handle_now(signal, info, context);
+ if(!handle_control_stack_guard_triggered(context,addr))
+ interrupt_handle_now(signal, info, context);
}
}
}
}
-#endif
-
void
os_install_interrupt_handlers()
{
void
os_install_interrupt_handlers()
{
- undoably_install_low_level_interrupt_handler(SIGSEGV,sigsegv_handler);
+ undoably_install_low_level_interrupt_handler(SIG_MEMORY_FAULT,
+ sigsegv_handler);
}
}