Blame SOURCES/libsodium-1.0.18/m4/ax_check_catchable_abrt.m4

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