Mercurial > gnulib
annotate tests/test-c-stack2.sh @ 10276:adfc5a204195
Make c-stack use libsigsegv, when available.
* modules/c-stack (Depends-on): Add libsigsegv.
* modules/c-stack-tests (Makefile.am): Link with libsigsegv, if
needed.
* lib/c-stack.c (SIGSTKSZ): Define fallback.
(segv_handler, overflow_handler, c_stack_action)
[HAVE_LIBSIGSEGV && !HAVE_XSI_STACK_OVERFLOW_HEURISTIC]: Add new
implementation when libsigsegv is available, but only when using
the library is necessary.
* m4/c-stack.m4 (AC_SYS_XSI_STACK_OVERFLOW_HEURISTIC): Add
comment, explaining why XSI check fails on Linux.
(gl_PREREQ_C_STACK): Supply LIBCSTACK, LTLIBCSTACK.
* tests/test-c-stack2.sh: Tweak skip message.
* NEWS: Document new link-time requirements.
Signed-off-by: Eric Blake <ebb9@byu.net>
author | Eric Blake <ebb9@byu.net> |
---|---|
date | Thu, 17 Jul 2008 06:23:47 -0600 |
parents | 4c08c1b6678e |
children | e99e36699b9a |
rev | line source |
---|---|
10275
4c08c1b6678e
c-stack: Expose false positives when not using libsigsegv.
Eric Blake <ebb9@byu.net>
parents:
diff
changeset
|
1 #!/bin/sh |
4c08c1b6678e
c-stack: Expose false positives when not using libsigsegv.
Eric Blake <ebb9@byu.net>
parents:
diff
changeset
|
2 |
4c08c1b6678e
c-stack: Expose false positives when not using libsigsegv.
Eric Blake <ebb9@byu.net>
parents:
diff
changeset
|
3 tmpfiles="" |
4c08c1b6678e
c-stack: Expose false positives when not using libsigsegv.
Eric Blake <ebb9@byu.net>
parents:
diff
changeset
|
4 trap 'rm -fr $tmpfiles' 1 2 3 15 |
4c08c1b6678e
c-stack: Expose false positives when not using libsigsegv.
Eric Blake <ebb9@byu.net>
parents:
diff
changeset
|
5 |
4c08c1b6678e
c-stack: Expose false positives when not using libsigsegv.
Eric Blake <ebb9@byu.net>
parents:
diff
changeset
|
6 tmpfiles="t-c-stack2.tmp" |
4c08c1b6678e
c-stack: Expose false positives when not using libsigsegv.
Eric Blake <ebb9@byu.net>
parents:
diff
changeset
|
7 |
4c08c1b6678e
c-stack: Expose false positives when not using libsigsegv.
Eric Blake <ebb9@byu.net>
parents:
diff
changeset
|
8 # Sanitize exit status within a subshell, since some shells fail to |
4c08c1b6678e
c-stack: Expose false positives when not using libsigsegv.
Eric Blake <ebb9@byu.net>
parents:
diff
changeset
|
9 # redirect stderr on their message about death due to signal. |
4c08c1b6678e
c-stack: Expose false positives when not using libsigsegv.
Eric Blake <ebb9@byu.net>
parents:
diff
changeset
|
10 (./test-c-stack${EXEEXT} 1; exit $?) 2> t-c-stack2.tmp |
4c08c1b6678e
c-stack: Expose false positives when not using libsigsegv.
Eric Blake <ebb9@byu.net>
parents:
diff
changeset
|
11 |
4c08c1b6678e
c-stack: Expose false positives when not using libsigsegv.
Eric Blake <ebb9@byu.net>
parents:
diff
changeset
|
12 case $? in |
4c08c1b6678e
c-stack: Expose false positives when not using libsigsegv.
Eric Blake <ebb9@byu.net>
parents:
diff
changeset
|
13 77) if grep 'stack overflow' t-c-stack2.tmp >/dev/null ; then |
10276
adfc5a204195
Make c-stack use libsigsegv, when available.
Eric Blake <ebb9@byu.net>
parents:
10275
diff
changeset
|
14 echo 'cannot tell stack overflow from crash; consider installing libsigsegv' >&2 |
10275
4c08c1b6678e
c-stack: Expose false positives when not using libsigsegv.
Eric Blake <ebb9@byu.net>
parents:
diff
changeset
|
15 else |
4c08c1b6678e
c-stack: Expose false positives when not using libsigsegv.
Eric Blake <ebb9@byu.net>
parents:
diff
changeset
|
16 cat t-c-stack2.tmp >&2 |
4c08c1b6678e
c-stack: Expose false positives when not using libsigsegv.
Eric Blake <ebb9@byu.net>
parents:
diff
changeset
|
17 fi |
4c08c1b6678e
c-stack: Expose false positives when not using libsigsegv.
Eric Blake <ebb9@byu.net>
parents:
diff
changeset
|
18 (exit 77); exit 77 ;; |
4c08c1b6678e
c-stack: Expose false positives when not using libsigsegv.
Eric Blake <ebb9@byu.net>
parents:
diff
changeset
|
19 0) (exit 1); exit 1 ;; |
4c08c1b6678e
c-stack: Expose false positives when not using libsigsegv.
Eric Blake <ebb9@byu.net>
parents:
diff
changeset
|
20 esac |
4c08c1b6678e
c-stack: Expose false positives when not using libsigsegv.
Eric Blake <ebb9@byu.net>
parents:
diff
changeset
|
21 if grep 'program error' t-c-stack2.tmp >/dev/null ; then |
4c08c1b6678e
c-stack: Expose false positives when not using libsigsegv.
Eric Blake <ebb9@byu.net>
parents:
diff
changeset
|
22 : |
4c08c1b6678e
c-stack: Expose false positives when not using libsigsegv.
Eric Blake <ebb9@byu.net>
parents:
diff
changeset
|
23 else |
4c08c1b6678e
c-stack: Expose false positives when not using libsigsegv.
Eric Blake <ebb9@byu.net>
parents:
diff
changeset
|
24 (exit 1); exit 1 |
4c08c1b6678e
c-stack: Expose false positives when not using libsigsegv.
Eric Blake <ebb9@byu.net>
parents:
diff
changeset
|
25 fi |
4c08c1b6678e
c-stack: Expose false positives when not using libsigsegv.
Eric Blake <ebb9@byu.net>
parents:
diff
changeset
|
26 |
4c08c1b6678e
c-stack: Expose false positives when not using libsigsegv.
Eric Blake <ebb9@byu.net>
parents:
diff
changeset
|
27 rm -fr $tmpfiles |
4c08c1b6678e
c-stack: Expose false positives when not using libsigsegv.
Eric Blake <ebb9@byu.net>
parents:
diff
changeset
|
28 |
4c08c1b6678e
c-stack: Expose false positives when not using libsigsegv.
Eric Blake <ebb9@byu.net>
parents:
diff
changeset
|
29 exit 0 |