-#include "simgrid/simix.h" /* SIMIX_process_self_get_name() */
-#include <xbt/backtrace.h>
-#include <xbt/backtrace.hpp>
-#include <xbt/log.h>
-#include <xbt/sysdep.h>
-
-#include "src/internal_config.h"
-
-extern "C" {
-
-XBT_LOG_NEW_DEFAULT_SUBCATEGORY(xbt_backtrace, xbt, "Backtrace");
-
-}
-
-static bool startWith(std::string str, const char* prefix)
-{
- return strncmp(str.c_str(), prefix, strlen(prefix)) == 0;
-}
-
-void xbt_backtrace_display(xbt_backtrace_location_t* loc, std::size_t count)
-{
-#ifdef HAVE_BACKTRACE
- std::vector<std::string> backtrace = simgrid::xbt::resolveBacktrace(loc, count);
- if (backtrace.empty()) {
- fprintf(stderr, "(backtrace not set)\n");
- return;
- }
- fprintf(stderr, "Backtrace (displayed in process %s):\n", SIMIX_process_self_get_name());
- for (std::string const& s : backtrace) {
- if (startWith(s, "xbt_backtrace_display_current"))
- continue;
-
- std::fprintf(stderr, "---> '%s'\n", s.c_str());
- if (startWith(s, "SIMIX_simcall_handle") ||
- startWith(s, "simgrid::xbt::MainFunction") /* main used with thread factory */)
- break;
- }
-#else
- XBT_ERROR("Cannot display backtrace when compiled without libunwind.");
+#if HAVE_BOOST_STACKTRACE_BACKTRACE
+#define BOOST_STACKTRACE_USE_BACKTRACE
+#include <boost/stacktrace.hpp>
+#elif HAVE_BOOST_STACKTRACE_ADDR2LINE
+#define BOOST_STACKTRACE_USE_ADDR2LINE
+#include <boost/stacktrace.hpp>