summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--INSTALL.quagga.txt3
-rwxr-xr-xconfigure.ac29
-rw-r--r--doc/install.texi10
3 files changed, 34 insertions, 8 deletions
diff --git a/INSTALL.quagga.txt b/INSTALL.quagga.txt
index 0d465879..11c85b1a 100644
--- a/INSTALL.quagga.txt
+++ b/INSTALL.quagga.txt
@@ -31,6 +31,9 @@ not a guarantee of support, merely "we agree that it is broken".)
OpenBSD ? [info needed on what should work]
Solaris (modern/supported versions, including OpenSolaris forks)
+On BSD systems, installing libexecinfo is strongly recommended in order
+to get backtrace support.
+
For further Quagga specific information on 'configure' and build-time
configuration of the software, please read the Quagga info
documentation, (doc/quagga.info). To read the info page included with
diff --git a/configure.ac b/configure.ac
index ff7a4d54..8964006a 100755
--- a/configure.ac
+++ b/configure.ac
@@ -273,7 +273,9 @@ AC_ARG_ENABLE(gcc_ultra_verbose,
AC_ARG_ENABLE(linux24_tcp_md5,
[ --enable-linux24-tcp-md5 enable support for old, Linux-2.4 RFC2385 patch])
AC_ARG_ENABLE(gcc-rdynamic,
-[ --enable-gcc-rdynamic enable gcc linking with -rdynamic for better backtraces])
+[ --enable-gcc-rdynamic enable linking with -rdynamic for better backtraces (default if gcc)])
+AC_ARG_ENABLE(backtrace,
+[ --disable-backtrace, disable crash backtraces (default autodetect)])
AC_ARG_ENABLE(time-check,
[ --disable-time-check disable slow thread warning messages])
AC_ARG_ENABLE(pcreposix,
@@ -288,8 +290,10 @@ if test x"${enable_gcc_ultra_verbose}" = x"yes" ; then
CFLAGS="${CFLAGS} -Wpacked -Wpadded"
fi
-if test x"${enable_gcc_rdynamic}" = x"yes" ; then
- LDFLAGS="${LDFLAGS} -rdynamic"
+if test x"${enable_gcc_rdynamic}" != x"no" ; then
+ if test x"${enable_gcc_rdynamic}" = x"yes" -o x"$COMPILER" = x"GCC"; then
+ LDFLAGS="${LDFLAGS} -rdynamic"
+ fi
fi
if test x"${enable_time_check}" != x"no" ; then
@@ -1566,12 +1570,21 @@ AX_SYS_WEAK_ALIAS
dnl ---------------------------
dnl check for glibc 'backtrace'
dnl ---------------------------
-AC_CHECK_HEADER([execinfo.h],
- [AC_CHECK_FUNC([backtrace],
- [AC_DEFINE(HAVE_GLIBC_BACKTRACE,,[Glibc backtrace])
- AC_DEFINE(HAVE_STACK_TRACE,,[Stack symbol decoding])
+if test x"${enable_backtrace}" != x"no" ; then
+ backtrace_ok=no
+ AC_CHECK_HEADER([execinfo.h], [
+ AC_SEARCH_LIBS([backtrace], [execinfo], [
+ AC_DEFINE(HAVE_GLIBC_BACKTRACE,,[Glibc backtrace])
+ AC_DEFINE(HAVE_STACK_TRACE,,[Stack symbol decoding])
+ backtrace_ok=yes
+ ],, [-lm])
])
-])
+
+ if test x"${enable_backtrace}" = x"yes" -a x"${backtrace_ok}" = x"no"; then
+ dnl user explicitly requested backtrace but we failed to find support
+ AC_MSG_FAILURE([failed to find backtrace support])
+ fi
+fi
dnl -----------------------------------------
dnl check for malloc mallinfo struct and call
diff --git a/doc/install.texi b/doc/install.texi
index 0f8f65fa..1e8d965b 100644
--- a/doc/install.texi
+++ b/doc/install.texi
@@ -96,6 +96,16 @@ installed. They can be excluded from build with this option, which will
minimally decrease compile time and overhead. They can always be built and
executed at a later time by running @command{make check} in the @file{tests/}
subdirectory, even if they're excluded from build.
+@item --enable-gcc-rdynamic
+Pass the @command{-rdynamic} option to the linker driver. This is in most
+cases neccessary for getting usable backtraces. This option defaults to on
+if the compiler is detected as gcc, but giving an explicit enable/disable is
+suggested.
+@item --enable-backtrace
+Controls backtrace support for the crash handlers. This is autodetected by
+default. Using the switch will enforce the requested behaviour, failing with
+an error if support is requested but not available. On BSD systems, this
+needs libexecinfo, while on glibc support for this is part of libc itself.
@end table
You may specify any combination of the above options to the configure