diff options
author | Eric Christopher <echristo@apple.com> | 2012-09-21 23:03:29 +0000 |
---|---|---|
committer | Eric Christopher <echristo@apple.com> | 2012-09-21 23:03:29 +0000 |
commit | c69bdadac9431efc0cfa6832a321e0f51ab4e6cd (patch) | |
tree | ebc186f796ba7a019152f4d7acaaeb83c76049ae | |
parent | c91249485527f69cf0d7e7b6dda9d8e6eb46d4b0 (diff) | |
download | external_llvm-c69bdadac9431efc0cfa6832a321e0f51ab4e6cd.zip external_llvm-c69bdadac9431efc0cfa6832a321e0f51ab4e6cd.tar.gz external_llvm-c69bdadac9431efc0cfa6832a321e0f51ab4e6cd.tar.bz2 |
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
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164426 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | autoconf/configure.ac | 15 | ||||
-rwxr-xr-x | configure | 29 | ||||
-rw-r--r-- | include/llvm/Config/config.h.in | 3 | ||||
-rw-r--r-- | lib/Support/Unix/Signals.inc | 2 |
4 files changed, 47 insertions, 2 deletions
diff --git a/autoconf/configure.ac b/autoconf/configure.ac index 7fa883e..2f381fe 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], @@ -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 <<EOF -#line 10292 "configure" +#line 10319 "configure" #include "confdefs.h" #if HAVE_DLFCN_H diff --git a/include/llvm/Config/config.h.in b/include/llvm/Config/config.h.in index 5a60ba5..a4f8af4 100644 --- a/include/llvm/Config/config.h.in +++ b/include/llvm/Config/config.h.in @@ -18,6 +18,9 @@ /* Default <path> to all compiler invocations for --sysroot=<path>. */ #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 b7f83b6..7d161a6 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, |