Merge pull request #206 from tSed/fix-build-when-execinfo.b-is-not-available

Make backtrace support depend on execinfo.h's existence
This commit is contained in:
Adrian Knoth 2017-01-10 22:18:11 +01:00 committed by GitHub
commit a96111a7a3
2 changed files with 13 additions and 1 deletions

View File

@ -27,7 +27,9 @@
#include <stdio.h>
#include <signal.h>
#include <dlfcn.h>
#include <execinfo.h>
#ifdef HAVE_EXECINFO_H
# include <execinfo.h>
#endif
#include <errno.h>
#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);

View File

@ -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')