123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- # SYNOPSIS
- #
- # AX_CHECK_CATCHABLE_ABRT
- #
- # DESCRIPTION
- #
- # Check whether SIGABRT can be caught using signal handlers.
- #serial 1
- AC_DEFUN([AX_CHECK_CATCHABLE_ABRT], [dnl
- AC_PREREQ(2.64)
- AS_VAR_PUSHDEF([CACHEVAR], [ax_cv_check_[]_AC_LANG_ABBREV[]CATCHABLE_ABRT])dnl
- AC_CACHE_CHECK([whether SIGABRT can be caught when using the _AC_LANG compiler], CACHEVAR, [
- AC_RUN_IFELSE([
- AC_LANG_PROGRAM([[
- #include <signal.h>
- #include <stdlib.h>
- #ifndef SIGABRT
- # error SIGABRT is not defined
- #endif
- static void sigabrt_handler_3(int _)
- {
- exit(0);
- }
- static void sigabrt_handler_2(int _)
- {
- signal(SIGABRT, sigabrt_handler_3);
- abort();
- exit(1);
- }
- static void sigabrt_handler_1(int _)
- {
- signal(SIGABRT, sigabrt_handler_2);
- abort();
- exit(1);
- }
- ]], [[
- signal(SIGABRT, sigabrt_handler_1);
- abort();
- exit(1);
- ]])],
- [AS_VAR_SET(CACHEVAR, [yes])],
- [AS_VAR_SET(CACHEVAR, [no])],
- [AS_VAR_SET(CACHEVAR, [unknown])]
- )
- ])
- AS_VAR_IF(CACHEVAR, yes,
- [AC_DEFINE([HAVE_CATCHABLE_ABRT], [1], [Define if SIGABRT can be caught using signal handlers])],
- [AC_MSG_WARN([On this platform, SIGABRT cannot be caught using signal handlers.])]
- )
- AS_VAR_POPDEF([CACHEVAR])dnl
- ])
|