From 8172c323183ec161364a854cb803bec1e2c82844 Mon Sep 17 00:00:00 2001 From: Eric Christopher Date: Fri, 21 Sep 2012 23:03:29 +0000 Subject: [PATCH] Add an --enable-backtraces option to configure to determine whether or not we want to print out backtrace information. Useful for libraries that don't need backtrace information on a crash. rdar://11844710 llvm-svn: 164426 --- autoconf/configure.ac | 15 +++++++++++++++ configure | 29 ++++++++++++++++++++++++++++- include/llvm/Config/config.h.in | 3 +++ lib/Support/Unix/Signals.inc | 2 +- 4 files changed, 47 insertions(+), 2 deletions(-) diff --git a/autoconf/configure.ac b/autoconf/configure.ac index 7fa883e9cc5..2f381fec7fd 100644 --- a/autoconf/configure.ac +++ b/autoconf/configure.ac @@ -678,6 +678,21 @@ esac AC_DEFINE_UNQUOTED([ENABLE_TIMESTAMPS],$ENABLE_TIMESTAMPS, [Define if timestamp information (e.g., __DATE__) is allowed]) +dnl Enable embedding timestamp information into build. + +AC_ARG_ENABLE(backtraces, + AS_HELP_STRING([--enable-backtraces], + [Enable embedding backtraces on crash (default is YES)]),, + enableval=default) +case "$enableval" in + yes) AC_SUBST(ENABLE_TIMESTAMPS,[1]) ;; + no) AC_SUBST(ENABLE_TIMESTAMPS,[0]) ;; + default) AC_SUBST(ENABLE_TIMESTAMPS,[1]) ;; + *) AC_MSG_ERROR([Invalid setting for --enable-backtraces. Use "yes" or "no"]) ;; +esac +AC_DEFINE_UNQUOTED([ENABLE_BACKTRACES],$ENABLE_BACKTRACES, + [Define if you want backtraces on crash]) + dnl Allow specific targets to be specified for building (or not) TARGETS_TO_BUILD="" AC_ARG_ENABLE([targets],AS_HELP_STRING([--enable-targets], diff --git a/configure b/configure index 6fbc47c72a7..2bbfe59108b 100755 --- a/configure +++ b/configure @@ -1423,6 +1423,8 @@ Optional Features: Win32 DLL (default is NO) --enable-timestamps Enable embedding timestamp information in build (default is YES) + --enable-backtraces Enable embedding backtraces on crash (default is + YES) --enable-targets Build specific host targets: all or target1,target2,... Valid targets are: host, x86, x86_64, sparc, powerpc, arm, mips, spu, hexagon, @@ -5382,6 +5384,31 @@ cat >>confdefs.h <<_ACEOF _ACEOF + +# Check whether --enable-backtraces was given. +if test "${enable_backtraces+set}" = set; then + enableval=$enable_backtraces; +else + enableval=default +fi + +case "$enableval" in + yes) ENABLE_TIMESTAMPS=1 + ;; + no) ENABLE_TIMESTAMPS=0 + ;; + default) ENABLE_TIMESTAMPS=1 + ;; + *) { { echo "$as_me:$LINENO: error: Invalid setting for --enable-backtraces. Use \"yes\" or \"no\"" >&5 +echo "$as_me: error: Invalid setting for --enable-backtraces. Use \"yes\" or \"no\"" >&2;} + { (exit 1); exit 1; }; } ;; +esac + +cat >>confdefs.h <<_ACEOF +#define ENABLE_BACKTRACES $ENABLE_BACKTRACES +_ACEOF + + TARGETS_TO_BUILD="" # Check whether --enable-targets was given. if test "${enable_targets+set}" = set; then @@ -10289,7 +10316,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < to all compiler invocations for --sysroot=. */ #undef DEFAULT_SYSROOT +/* Define if you want backtraces on crash */ +#undef ENABLE_BACKTRACES + /* Define if position independent code is enabled */ #undef ENABLE_PIC diff --git a/lib/Support/Unix/Signals.inc b/lib/Support/Unix/Signals.inc index b7f83b6ff73..7d161a6a056 100644 --- a/lib/Support/Unix/Signals.inc +++ b/lib/Support/Unix/Signals.inc @@ -243,7 +243,7 @@ void llvm::sys::AddSignalHandler(void (*FnPtr)(void *), void *Cookie) { // On glibc systems we have the 'backtrace' function, which works nicely, but // doesn't demangle symbols. static void PrintStackTrace(void *) { -#ifdef HAVE_BACKTRACE +#if defined(HAVE_BACKTRACE) && defined(ENABLE_BACKTRACE) static void* StackTrace[256]; // Use backtrace() to output a backtrace on Linux systems with glibc. int depth = backtrace(StackTrace,