@@ -106,7 +106,7 @@ static void signal_segv(int signum, siginfo_t* info, void*ptr) {
jack_error("info.si_errno = %d", info->si_errno);
jack_error("info.si_code = %d (%s)", info->si_code, si_code_str);
jack_error("info.si_addr = %p", info->si_addr);
-#if !defined(__alpha__) && !defined(__ia64__) && !defined(__FreeBSD_kernel__) && !defined(__arm__) && !defined(__hppa__) && !defined(__sh__) && !defined(__aarch64__)
+#if HAVE_NGREG
for(i = 0; i < NGREG; i++)
jack_error("reg[%02d] = 0x" REGFORMAT, i,
#if defined(__powerpc64__)
@@ -119,7 +119,7 @@ static void signal_segv(int signum, siginfo_t* info, void*ptr) {
ucontext->uc_mcontext.gregs[i]
#endif
);
-#endif /* alpha, ia64, kFreeBSD, arm, hppa */
+#endif /* NGREG */
#if defined(SIGSEGV_STACK_X86) || defined(SIGSEGV_STACK_IA64)
# if defined(SIGSEGV_STACK_IA64)
@@ -168,6 +168,8 @@ def configure(conf):
conf.check_cc(header_name='execinfo.h', define_name="HAVE_EXECINFO_H", mandatory=False)
conf.check_cc(header_name='samplerate.h', define_name="HAVE_SAMPLERATE")
+ conf.check_cc(fragment="#include <ucontext.h>\nint main() { return NGREG; }\n",
+ define_name="HAVE_NGREG", mandatory=False)
if conf.is_defined('HAVE_SAMPLERATE'):
conf.env['LIB_SAMPLERATE'] = ['samplerate']