#include <unistd.h>
#include <inttypes.h>
+#ifdef HAVE_BACKTRACE_SUPPORT
+#include <execinfo.h>
+#include <elfutils/libdwfl.h>
+#endif
+
#include "src/log.h"
#include "src/backtrace.h"
+void btd_backtrace_init(void)
+{
#ifdef HAVE_BACKTRACE_SUPPORT
-#include <execinfo.h>
-#include <elfutils/libdwfl.h>
+ void *frames[1];
+
+ /*
+ * initialize the backtracer, since the ctor calls dlopen(), which
+ * calls malloc(), which isn't signal-safe.
+ */
+ backtrace(frames, 1);
+#endif
+}
void btd_backtrace(uint16_t index)
{
+#ifdef HAVE_BACKTRACE_SUPPORT
char *debuginfo_path = NULL;
const Dwfl_Callbacks callbacks = {
.find_debuginfo = dwfl_standard_find_debuginfo,
#include <stdint.h>
+void btd_backtrace_init(void);
void btd_backtrace(uint16_t index);
void btd_assertion_message_expr(const char *file, int line,