summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorIra Cooper <ira@samba.org>2012-03-14 12:56:02 -0400
committerIra Cooper <ira@samba.org>2012-03-15 05:55:03 +0100
commitb990279304b5e2b2ee0f64480cb09eda33f76beb (patch)
tree99620a21f1ec21f02e320298fba30f306e9f15ef /lib
parent48c2f803e8550a1d321d7312563a6f08bb89f096 (diff)
downloadsamba-b990279304b5e2b2ee0f64480cb09eda33f76beb.tar.gz
samba-b990279304b5e2b2ee0f64480cb09eda33f76beb.tar.bz2
samba-b990279304b5e2b2ee0f64480cb09eda33f76beb.zip
util: Add --disable-fault-handling.
On some platforms you can not debug coredumps after the default signal handler gets done dumping core. This allows waf to have an option to disable our default signal handler.
Diffstat (limited to 'lib')
-rw-r--r--lib/util/fault.c2
-rw-r--r--lib/util/wscript3
-rw-r--r--lib/util/wscript_configure3
3 files changed, 8 insertions, 0 deletions
diff --git a/lib/util/fault.c b/lib/util/fault.c
index 7fe081d285..b3527bb22e 100644
--- a/lib/util/fault.c
+++ b/lib/util/fault.c
@@ -96,6 +96,7 @@ void fault_setup(void)
if (fault_state.disabled) {
return;
}
+#if !defined(HAVE_DISABLE_FAULT_HANDLING)
#ifdef SIGSEGV
CatchSignal(SIGSEGV, sig_fault);
#endif
@@ -105,6 +106,7 @@ void fault_setup(void)
#ifdef SIGABRT
CatchSignal(SIGABRT, sig_fault);
#endif
+#endif
}
_PUBLIC_ const char *panic_action = NULL;
diff --git a/lib/util/wscript b/lib/util/wscript
new file mode 100644
index 0000000000..d296e7565b
--- /dev/null
+++ b/lib/util/wscript
@@ -0,0 +1,3 @@
+def set_options(opt):
+ ''' This is a bit strange, but disable is the flag, not enable. '''
+ opt.add_option('--disable-fault-handling', action='store_true', dest='disable_fault_handling', help=('disable the fault handlers'), default=False)
diff --git a/lib/util/wscript_configure b/lib/util/wscript_configure
index fdaf67acb3..ad55476c7d 100644
--- a/lib/util/wscript_configure
+++ b/lib/util/wscript_configure
@@ -1,5 +1,8 @@
#!/usr/bin/env python
+import Options
+if Options.options.disable_fault_handling:
+ conf.DEFINE('HAVE_DISABLE_FAULT_HANDLING',1)
# backtrace could be in libexecinfo or in libc
conf.CHECK_FUNCS_IN('backtrace backtrace_symbols', 'execinfo', checklibc=True, headers='execinfo.h')