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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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