From 00f7144973cbe22977fee4334653ef01fbbed83f Mon Sep 17 00:00:00 2001 From: Arnaud Giersch Date: Tue, 24 Oct 2017 15:14:55 +0200 Subject: [PATCH] Fix symbols for cutting backtrace (takes mangled C++ symbols). --- src/xbt/backtrace_linux.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/xbt/backtrace_linux.cpp b/src/xbt/backtrace_linux.cpp index 7cde5e37c2..c5e765164b 100644 --- a/src/xbt/backtrace_linux.cpp +++ b/src/xbt/backtrace_linux.cpp @@ -327,9 +327,19 @@ std::vector resolveBacktrace( addrs[i].clear(); /* Mask the bottom of the stack */ - if (not strncmp("main", line_func, strlen("main")) || - not strncmp("xbt_thread_context_wrapper", line_func, strlen("xbt_thread_context_wrapper")) || - not strncmp("smx_ctx_sysv_wrapper", line_func, strlen("smx_ctx_sysv_wrapper"))) + const char* const breakers[] = { + "main", + "_ZN7simgrid6kernel7context13ThreadContext7wrapperE", // simgrid::kernel::context::ThreadContext::wrapper + "_ZN7simgrid6kernel7context8UContext7wrapperE" // simgrid::kernel::context::UContext::wrapper + }; + bool do_break = false; + for (const char* b : breakers) { + if (strncmp(b, line_func, strlen(b)) == 0) { + do_break = true; + break; + } + } + if (do_break) break; } pclose(pipe); -- 2.20.1