diff --git a/dbus/sigsegv.c b/dbus/sigsegv.c index 7216fcb7..ead08e7d 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 f7a15301..f0f16ded 100644 --- a/wscript +++ b/wscript @@ -488,6 +488,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')