diff --git a/config.h.in b/config.h.in index 775da4c95b..65844b472f 100644 --- a/config.h.in +++ b/config.h.in @@ -272,7 +272,7 @@ /* Define to 1 if you have the header file. */ #undef HAVE_KRB5_KRB5_H -/* if system have backtrace function */ +/* define if system have backtrace function */ #undef HAVE_LIBCTRACE /* Define if libidn2 was found */ @@ -539,6 +539,9 @@ /* Define to use large-system tuning. */ #undef TUNE_LARGE +/* define if we can use backtrace */ +#undef USE_BACKTRACE + /* Enable DNS Response Policy Service API */ #undef USE_DNSRPS diff --git a/config.h.win32 b/config.h.win32 index 0595c543e1..f0be1db618 100644 --- a/config.h.win32 +++ b/config.h.win32 @@ -367,6 +367,9 @@ typedef __int64 off_t; /* Large system tuning */ @TUNE_LARGE@ +/* define if we can use backtrace */ +@USE_BACKTRACE@ + /* the default value of dnssec-validation option */ @VALIDATION_DEFAULT@ diff --git a/configure b/configure index 11f54d643d..af0ab25968 100755 --- a/configure +++ b/configure @@ -734,7 +734,6 @@ A O ALWAYS_MAKE_SYMTABLE MKSYMTBL_PROGRAM -ISC_PLATFORM_USEBACKTRACE PURIFY purify_path MKDEPPROG @@ -17511,38 +17510,37 @@ esac # # Check whether --enable-backtrace was given. if test "${enable_backtrace+set}" = set; then : - enableval=$enable_backtrace; want_backtrace="$enableval" + enableval=$enable_backtrace; else - want_backtrace="yes" + enable_backtrace="yes" fi -case $want_backtrace in -yes) - ISC_PLATFORM_USEBACKTRACE="#define ISC_PLATFORM_USEBACKTRACE 1" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + +if test "$enable_backtrace" = "yes"; then : + +$as_echo "#define USE_BACKTRACE 1" >>confdefs.h + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { return (backtrace((void **)0, 0)); + ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : -$as_echo "#define HAVE_LIBCTRACE /**/" >>confdefs.h +$as_echo "#define HAVE_LIBCTRACE 1" >>confdefs.h + fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext - ;; -*) - ISC_PLATFORM_USEBACKTRACE="#undef ISC_PLATFORM_USEBACKTRACE" - ;; -esac - +fi # Check whether --enable-symtable was given. if test "${enable_symtable+set}" = set; then : diff --git a/configure.in b/configure.in index 8703dfc3b5..c1594e2c78 100644 --- a/configure.in +++ b/configure.in @@ -1811,22 +1811,20 @@ esac # enable/disable dumping stack backtrace. Also check if the system supports # glibc-compatible backtrace() function. # -AC_ARG_ENABLE(backtrace, - AS_HELP_STRING([--enable-backtrace], - [log stack backtrace on abort [default=yes]]), - want_backtrace="$enableval", want_backtrace="yes") -case $want_backtrace in -yes) - ISC_PLATFORM_USEBACKTRACE="#define ISC_PLATFORM_USEBACKTRACE 1" - AC_TRY_LINK([#include ], - [return (backtrace((void **)0, 0));], - [AC_DEFINE([HAVE_LIBCTRACE], [], [if system have backtrace function])],) - ;; -*) - ISC_PLATFORM_USEBACKTRACE="#undef ISC_PLATFORM_USEBACKTRACE" - ;; -esac -AC_SUBST(ISC_PLATFORM_USEBACKTRACE) +AC_ARG_ENABLE([backtrace], + [AS_HELP_STRING([--enable-backtrace], + [log stack backtrace on abort [default=yes]])], + [], [enable_backtrace="yes"]) + +AS_IF([test "$enable_backtrace" = "yes"], + [AC_DEFINE([USE_BACKTRACE], [1], [define if we can use backtrace]) + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[return (backtrace((void **)0, 0));]] + )], + [AC_DEFINE([HAVE_LIBCTRACE], [1], [define if system have backtrace function])] + )]) AC_ARG_ENABLE(symtable, AS_HELP_STRING([--enable-symtable], diff --git a/lib/isc/backtrace.c b/lib/isc/backtrace.c index 0ea145511e..7c645d7d04 100644 --- a/lib/isc/backtrace.c +++ b/lib/isc/backtrace.c @@ -24,7 +24,7 @@ #include #include -#ifdef ISC_PLATFORM_USEBACKTRACE +#ifdef USE_BACKTRACE /* * Getting a back trace of a running process is tricky and highly platform * dependent. Our current approach is as follows: @@ -52,9 +52,9 @@ #else #define BACKTRACE_DISABLED #endif /* HAVE_LIBCTRACE */ -#else /* !ISC_PLATFORM_USEBACKTRACE */ +#else /* USE_BACKTRACE */ #define BACKTRACE_DISABLED -#endif /* ISC_PLATFORM_USEBACKTRACE */ +#endif /* USE_BACKTRACE */ #ifdef BACKTRACE_LIBC isc_result_t diff --git a/lib/isc/include/isc/platform.h.in b/lib/isc/include/isc/platform.h.in index ba34ed6ff8..0280e438e7 100644 --- a/lib/isc/include/isc/platform.h.in +++ b/lib/isc/include/isc/platform.h.in @@ -78,11 +78,6 @@ */ @ISC_PLATFORM_HAVEDEVPOLL@ -/*! \brief - * Define if we want to log backtrace - */ -@ISC_PLATFORM_USEBACKTRACE@ - /* *** Printing. ***/ diff --git a/lib/isc/win32/include/isc/platform.h.in b/lib/isc/win32/include/isc/platform.h.in index a0fc5c644a..8c4f9dc795 100644 --- a/lib/isc/win32/include/isc/platform.h.in +++ b/lib/isc/win32/include/isc/platform.h.in @@ -67,11 +67,6 @@ */ #undef ISC_PLATFORM_HAVESYSUNH -/* - * Define if we want to log backtrace - */ -@ISC_PLATFORM_USEBACKTRACE@ - /* * Defines for the noreturn attribute. */ diff --git a/win32utils/Configure b/win32utils/Configure index b8f8ae2b7c..a0015ae01a 100644 --- a/win32utils/Configure +++ b/win32utils/Configure @@ -207,6 +207,7 @@ my @substdefh = ("AES_CC", "HAVE_DSA_GET0_PQG", "HAVE_ECDSA_SIG_GET0", "HAVE_RSA_SET0_KEY", + "USE_BACKTRACE", "USE_OPENSSL", "USE_PKCS11", "HAVE_PKCS11_ED25519", @@ -231,8 +232,7 @@ my @substdefp = ("ISC_PLATFORM_BUSYWAITNOP", "ISC_PLATFORM_HAVECMPXCHG", "ISC_PLATFORM_HAVEXADD", "ISC_PLATFORM_HAVEXADDQ", - "ISC_PLATFORM_NEEDSTRCASESTR", - "ISC_PLATFORM_USEBACKTRACE"); + "ISC_PLATFORM_NEEDSTRCASESTR"); # for conf.sh @@ -1160,7 +1160,7 @@ if ($msc_ver < 1400) { # backtrace for >= VS 2012 if ($msc_ver >= 1700) { - $configdefp{"ISC_PLATFORM_USEBACKTRACE"} = 1; + $configdefh{"USE_BACKTRACE"} = 1; } # no version of MSVS supports strcasestr() yet @@ -1411,7 +1411,7 @@ if ($use_openssl eq "yes") { die "find more than one OpenSSL libcrypto-*.dll DLL candidate\n"; } $openssl_dll = File::Spec->catdir($openssl_path, "@dirlist[0]"); - } + } $cryptolib = "openssl"; $configvar{"OPENSSL_PATH"} = "$openssl_path";