stl: "libc++_static",
- whole_static_libs: ["libasync_safe"],
+ whole_static_libs: ["libasync_safe", "libdemangle"],
include_dirs: ["bionic/libc"],
#include <unistd.h>
#include <unwind.h>
+#include <demangle.h>
+
#include "backtrace.h"
#include "debug_log.h"
#include "MapData.h"
char buf[1024];
if (symbol != nullptr) {
- char* demangled_symbol = __cxa_demangle(symbol, nullptr, nullptr, nullptr);
- const char* best_name = (demangled_symbol != nullptr) ? demangled_symbol : symbol;
-
async_safe_format_buffer(
buf, sizeof(buf), " #%02zd pc %" PAD_PTR " %s%s (%s+%" PRIuPTR ")\n", frame_num,
- rel_pc, soname, offset_buf, best_name, frames[frame_num] - offset);
- free(demangled_symbol);
+ rel_pc, soname, offset_buf, demangle(symbol).c_str(), frames[frame_num] - offset);
} else {
async_safe_format_buffer(
buf, sizeof(buf), " #%02zd pc %" PAD_PTR " %s%s\n", frame_num, rel_pc, soname,