From 8ac6bf1b4a13899c3a7dbb04bb69117b82f65136 Mon Sep 17 00:00:00 2001 From: Samuel Martin Date: Mon, 16 May 2016 22:51:50 +0200 Subject: [PATCH] wscript: make backtrace support depends on execinfo.h existence In some C-libraries (like uclibc), backtrace support is optional, so the execinfo.h may not exist. This change adds the check for execinfo.h header and conditionaly enable backtrace support. This issue has been triggered by Buildroot farms: http://autobuild.buildroot.org/results/391/391e71a988250ea66ec4dbee6f60fdce9eaf2766/build-end.log Signed-off-by: Samuel Martin --- dbus/sigsegv.c | 8 +++++++- wscript | 6 ++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/dbus/sigsegv.c b/dbus/sigsegv.c index ee12f918..5cf3d080 100644 --- a/dbus/sigsegv.c +++ b/dbus/sigsegv.c @@ -27,7 +27,9 @@ #include #include #include -#include +#ifdef HAVE_EXECINFO_H +# include +#endif #include #ifndef NO_CPP_DEMANGLE char * __cxa_demangle(const char * __mangled_name, char * __output_buffer, size_t * __length, int * __status); @@ -161,12 +163,16 @@ static void signal_segv(int signum, siginfo_t* info, void*ptr) { bp = (void**)bp[0]; } #else +# ifdef HAVE_EXECINFO_H jack_error("Stack trace (non-dedicated):"); sz = backtrace(bt, 20); strings = backtrace_symbols(bt, sz); for(i = 0; i < sz; ++i) jack_error("%s", strings[i]); +# else + jack_error("Stack trace not available"); +# endif #endif jack_error("End of stack trace"); exit (-1); diff --git a/wscript b/wscript index db9e3e7e..206f47e7 100644 --- a/wscript +++ b/wscript @@ -483,6 +483,12 @@ def configure(conf): defines=['_GNU_SOURCE'], mandatory=False) + # Check for backtrace support + conf.check( + header_name='execinfo.h', + define_name='HAVE_EXECINFO_H', + mandatory=False) + conf.recurse('common') if Options.options.dbus: conf.recurse('dbus')