version 1.46, 2012/03/23 20:49:44
|
version 1.47, 2012/03/23 21:48:06
|
Line 105 __thread jmp_buf * throw_jmp_handler;
|
Line 105 __thread jmp_buf * throw_jmp_handler;
|
|
|
void throw(int code) |
void throw(int code) |
{ |
{ |
debugp(stderr,"\nthrow code %d to %lx\n", code, (intptr_t)*throw_jmp_handler); |
debugp(stderr,"\nthrow code %d to %p\n", code, *throw_jmp_handler); |
longjmp(*throw_jmp_handler,code); /* !! or use siglongjmp ? */ |
longjmp(*throw_jmp_handler,code); /* !! or use siglongjmp ? */ |
} |
} |
|
|
Line 142 signal_throw(int sig)
|
Line 142 signal_throw(int sig)
|
static void |
static void |
sigaction_throw(int sig, siginfo_t *info, void *_) |
sigaction_throw(int sig, siginfo_t *info, void *_) |
{ |
{ |
debugp(stderr,"\nsigaction_throw %d 0x%lx 0x%lx\n", sig, (intptr_t)info, (intptr_t)_); |
debugp(stderr,"\nsigaction_throw %d 0x%p 0x%p\n", sig, info, _); |
signal_throw(sig); |
signal_throw(sig); |
} |
} |
|
|
Line 199 static void segv_handler(int sig, siginf
|
Line 199 static void segv_handler(int sig, siginf
|
Address addr=info->si_addr; |
Address addr=info->si_addr; |
ImageHeader *h=gforth_header; |
ImageHeader *h=gforth_header; |
|
|
debugp(stderr,"\nsegv_handler %d 0x%lx 0x%lx\n", sig, (intptr_t)info, (intptr_t)_); |
debugp(stderr,"\nsegv_handler %d 0x%p 0x%p\n", sig, info, _); |
|
|
if (JUSTUNDER(addr, h->data_stack_base)) |
if (JUSTUNDER(addr, h->data_stack_base)) |
code=-3; |
code=-3; |