From: Arnaud Giersch Date: Sun, 19 Nov 2017 15:51:40 +0000 (+0100) Subject: Use already existing simgrid::xbt::demangle(). X-Git-Tag: v3.18~242^2~11 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/0e7d247670cc012d8e784d0c8bcbb70a1c0bb9c6 Use already existing simgrid::xbt::demangle(). --- diff --git a/src/mc/mc_global.cpp b/src/mc/mc_global.cpp index cd9f83033f..06f1981d42 100644 --- a/src/mc/mc_global.cpp +++ b/src/mc/mc_global.cpp @@ -13,6 +13,7 @@ #include #include "xbt/automaton.h" +#include "xbt/backtrace.hpp" #include "xbt/dynar.h" #include "xbt/swag.h" @@ -136,24 +137,20 @@ void dumpStack(FILE* file, unw_cursor_t cursor) unw_word_t off; do { const char* name = not unw_get_proc_name(&cursor, buffer, 100, &off) ? buffer : "?"; - - int status; - // Unmangle C++ names: - char* realname = abi::__cxa_demangle(name, 0, 0, &status); + auto realname = simgrid::xbt::demangle(name); #if defined(__x86_64__) unw_word_t rip = 0; unw_word_t rsp = 0; unw_get_reg(&cursor, UNW_X86_64_RIP, &rip); unw_get_reg(&cursor, UNW_X86_64_RSP, &rsp); - fprintf(file, " %i: %s (RIP=0x%" PRIx64 " RSP=0x%" PRIx64 ")\n", - nframe, realname ? realname : name, (std::uint64_t) rip, (std::uint64_t) rsp); + fprintf(file, " %i: %s (RIP=0x%" PRIx64 " RSP=0x%" PRIx64 ")\n", nframe, realname.get(), (std::uint64_t)rip, + (std::uint64_t)rsp); #else fprintf(file, " %i: %s\n", nframe, realname ? realname : name); #endif - free(realname); ++nframe; } while(unw_step(&cursor)); } diff --git a/src/surf/maxmin.cpp b/src/surf/maxmin.cpp index a46702c8c7..e9fd4ee864 100644 --- a/src/surf/maxmin.cpp +++ b/src/surf/maxmin.cpp @@ -6,6 +6,7 @@ /* \file callbacks.h */ #include "maxmin_private.hpp" +#include "xbt/backtrace.hpp" #include "xbt/log.h" #include "xbt/mallocator.h" #include "xbt/sysdep.h" @@ -209,12 +210,9 @@ void lmm_system_free(lmm_system_t sys) return; while ((var = (lmm_variable_t) extract_variable(sys))) { - int status; - char* demangled = abi::__cxa_demangle(typeid(*var->id).name(), 0, 0, &status); - - XBT_WARN("Probable bug: a %s variable (#%d) not removed before the LMM system destruction.", demangled, + auto demangled = simgrid::xbt::demangle(typeid(*var->id).name()); + XBT_WARN("Probable bug: a %s variable (#%d) not removed before the LMM system destruction.", demangled.get(), var->id_int); - xbt_free(demangled); lmm_var_free(sys, var); } while ((cnst = (lmm_constraint_t) extract_constraint(sys)))