118 |
extern int sigvec (int, struct sigvec *, struct sigvec *); |
extern int sigvec (int, struct sigvec *, struct sigvec *); |
119 |
#endif |
#endif |
120 |
|
|
121 |
|
static const char *stackbuf; |
122 |
static const char *stackbot; |
static const char *stackbot; |
123 |
static const char *stackend; |
static const char *stackend; |
124 |
static const char *arg0; |
static const char *arg0; |
336 |
{ |
{ |
337 |
stack_t ss; |
stack_t ss; |
338 |
|
|
339 |
|
stackbuf = (char *) xmalloc (SIGSTKSZ); |
340 |
|
|
341 |
ss.ss_size = SIGSTKSZ; |
ss.ss_size = SIGSTKSZ; |
342 |
ss.ss_sp = xmalloc (ss.ss_size); |
ss.ss_sp = (void *) stackbuf; |
343 |
ss.ss_flags = 0; |
ss.ss_flags = 0; |
344 |
if (sigaltstack (&ss, (stack_t *) 0) < 0) |
if (sigaltstack (&ss, (stack_t *) 0) < 0) |
345 |
{ |
{ |
346 |
xfree (ss.ss_sp); |
xfree (stackbuf); |
347 |
error (1, errno, "sigaltstack"); |
error (1, errno, "sigaltstack"); |
348 |
} |
} |
349 |
} |
} |
353 |
|
|
354 |
{ |
{ |
355 |
struct sigstack ss; |
struct sigstack ss; |
356 |
char *stackbuf = xmalloc (2 * SIGSTKSZ); |
stackbuf = (char *) xmalloc (2 * SIGSTKSZ); |
357 |
|
|
358 |
ss.ss_sp = stackbuf + SIGSTKSZ; |
ss.ss_sp = stackbuf + SIGSTKSZ; |
359 |
ss.ss_onstack = 0; |
ss.ss_onstack = 0; |
411 |
|
|
412 |
} |
} |
413 |
|
|
414 |
|
void |
415 |
|
stackovf_exit (void) |
416 |
|
{ |
417 |
|
XFREE (stackbuf); |
418 |
|
} |
419 |
|
|
420 |
#endif /* USE_STACKOVF */ |
#endif /* USE_STACKOVF */ |