diff --git a/libstdc++-v3/src/c++11/debug.cc b/libstdc++-v3/src/c++11/debug.cc index 9eda38023f7..30cf24ca891 100644 --- a/libstdc++-v3/src/c++11/debug.cc +++ b/libstdc++-v3/src/c++11/debug.cc @@ -1141,6 +1141,21 @@ namespace return ret; } + + void + print_backtrace_error(void* data, const char* msg, int errnum) + { + const int bufsize = 64; + char buf[bufsize]; + + PrintContext& ctx = *static_cast(data); + + int written = __builtin_sprintf(buf, "%d", errnum); + print_word(ctx, buf, written); + print_literal(ctx, " - "); + print_word(ctx, msg); + print_literal(ctx, "\n"); + } #endif } @@ -1193,7 +1208,7 @@ namespace __gnu_debug { print_literal(ctx, "Backtrace:\n"); _M_backtrace_full( - _M_backtrace_state, 1, print_backtrace, nullptr, &ctx); + _M_backtrace_state, 1, print_backtrace, print_backtrace_error, &ctx); ctx._M_first_line = true; print_literal(ctx, "\n"); }