+#ifdef HAVE_BACKTRACE
+#include <execinfo.h>
+void
+backtrace_capture(struct backtrace *b)
+{
+ void *frames[BACKTRACE_MAX_FRAMES];
+ int i;
+
+ b->n_frames = backtrace(frames, BACKTRACE_MAX_FRAMES);
+ for (i = 0; i < b->n_frames; i++) {
+ b->frames[i] = (uintptr_t) frames[i];
+ }
+}
+#elif __GNUC__
+static uintptr_t