118 |
extern int sigvec (int, struct sigvec *, struct sigvec *); |
extern int sigvec (int, struct sigvec *, struct sigvec *); |
119 |
#endif |
#endif |
120 |
|
|
|
static const char *stackbuf; |
|
121 |
static const char *stackbot; |
static const char *stackbot; |
122 |
static const char *stackend; |
static const char *stackend; |
123 |
static const char *arg0; |
static const char *arg0; |
335 |
{ |
{ |
336 |
stack_t ss; |
stack_t ss; |
337 |
|
|
|
stackbuf = (char *) xmalloc (SIGSTKSZ); |
|
|
|
|
338 |
ss.ss_size = SIGSTKSZ; |
ss.ss_size = SIGSTKSZ; |
339 |
ss.ss_sp = (void *) stackbuf; |
ss.ss_sp = xmalloc (ss.ss_size); |
340 |
ss.ss_flags = 0; |
ss.ss_flags = 0; |
341 |
if (sigaltstack (&ss, (stack_t *) 0) < 0) |
if (sigaltstack (&ss, (stack_t *) 0) < 0) |
342 |
{ |
{ |
343 |
xfree (stackbuf); |
xfree (ss.ss_sp); |
344 |
error (1, errno, "sigaltstack"); |
error (1, errno, "sigaltstack"); |
345 |
} |
} |
346 |
} |
} |
350 |
|
|
351 |
{ |
{ |
352 |
struct sigstack ss; |
struct sigstack ss; |
353 |
stackbuf = (char *) xmalloc (2 * SIGSTKSZ); |
char *stackbuf = xmalloc (2 * SIGSTKSZ); |
354 |
|
|
355 |
ss.ss_sp = stackbuf + SIGSTKSZ; |
ss.ss_sp = stackbuf + SIGSTKSZ; |
356 |
ss.ss_onstack = 0; |
ss.ss_onstack = 0; |
408 |
|
|
409 |
} |
} |
410 |
|
|
|
void |
|
|
stackovf_exit (void) |
|
|
{ |
|
|
XFREE (stackbuf); |
|
|
} |
|
|
|
|
411 |
#endif /* USE_STACKOVF */ |
#endif /* USE_STACKOVF */ |