From b990279304b5e2b2ee0f64480cb09eda33f76beb Mon Sep 17 00:00:00 2001 From: Ira Cooper Date: Wed, 14 Mar 2012 12:56:02 -0400 Subject: [PATCH] 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. --- lib/util/fault.c | 2 ++ lib/util/wscript | 3 +++ lib/util/wscript_configure | 3 +++ source3/configure.in | 7 +++++++ wscript | 1 + 5 files changed, 16 insertions(+) create mode 100644 lib/util/wscript diff --git a/lib/util/fault.c b/lib/util/fault.c index 7fe081d2855..b3527bb22e6 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 00000000000..d296e7565ba --- /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 fdaf67acb3f..ad55476c7d8 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') diff --git a/source3/configure.in b/source3/configure.in index 611e1d8fb61..51e163dfb1c 100644 --- a/source3/configure.in +++ b/source3/configure.in @@ -6799,6 +6799,7 @@ if test x"$enable_pthreadpool" = x"yes" -a x"$samba_cv_HAVE_PTHREAD" = x"yes"; t fi fi + ################################################# # Check to see if we should use the included iniparser @@ -6834,6 +6835,12 @@ AC_SUBST(BUILD_INIPARSER) AC_SUBST(INIPARSERLIBS) AC_SUBST(FLAGS1) +AC_ARG_ENABLE(fault-handler,[AS_HELP_STRING([--disable-fault-handler], [Disable the default handler])]) + +if test x"$enable_fault_handler" = x"no"; then + AC_DEFINE(HAVE_DISABLE_FAULT_HANDLER, 1, [Disable the default signal handler]) +fi + ################################################### # Check for different/missing (set|get|end)netgrent prototypes CFLAGS_SAVE=$CFLAGS diff --git a/wscript b/wscript index e1fe95363e8..e64e50902a2 100755 --- a/wscript +++ b/wscript @@ -30,6 +30,7 @@ def set_options(opt): opt.RECURSE('lib/uid_wrapper') opt.RECURSE('pidl') opt.RECURSE('source3') + opt.RECURSE('lib/util') gr = opt.option_group('developer options') gr.add_option('--enable-build-farm', -- 2.11.4.GIT