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

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