<div dir="ltr">AFAIK BFD is GPL, so I rather not depend on it, in any form.<div><br></div><div>But I believe that cplus_demangle was part of libiberty which was LGPL, which would be OK as external dependency, but it doesn't seem that distros ship that library separately.</div>
<div><br></div><div style>Possibly an even simpler (both from licensing and dependency POV) would be libstdc++'s <span style="color:rgb(0,0,0)">abi::__cxa_demangle. Have you tried that?</span></div><div style><br></div>
<div><div class="gmail_extra">Jose<br><br><div class="gmail_quote">On Sun, May 19, 2013 at 3:39 PM, Alexander Monakov <span dir="ltr"><<a href="mailto:amonakov@ispras.ru" target="_blank">amonakov@ispras.ru</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">---<br>
 CMakeLists.txt             | 2 +-<br>
 common/trace_backtrace.cpp | 5 +++++<br>
 2 files changed, 6 insertions(+), 1 deletion(-)<br>
<br>
diff --git a/CMakeLists.txt b/CMakeLists.txt<br>
index db03031..6836553 100644<br>
--- a/CMakeLists.txt<br>
+++ b/CMakeLists.txt<br>
@@ -262,7 +262,7 @@ endif ()<br>
 if (CMAKE_EXECUTABLE_FORMAT STREQUAL "ELF")<br>
     add_subdirectory (thirdparty/libbacktrace)<br>
     include_directories (${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/libbacktrace)<br>
-    set (LIBBACKTRACE_LIBRARIES backtrace)<br>
+    set (LIBBACKTRACE_LIBRARIES backtrace bfd)<br>
 endif ()<br>
<br>
 # Always use bundled QJSon.<br>
diff --git a/common/trace_backtrace.cpp b/common/trace_backtrace.cpp<br>
index 83c9d46..9b13f6d 100644<br>
--- a/common/trace_backtrace.cpp<br>
+++ b/common/trace_backtrace.cpp<br>
@@ -274,6 +274,8 @@ std::vector<RawStackFrame> get_backtrace() {<br>
<br>
 #include <stdint.h><br>
 #include <dlfcn.h><br>
+#define HAVE_DECL_BASENAME 1<br>
+#include <demangle.h><br>
 #include <map><br>
 #include <vector><br>
<br>
@@ -330,6 +332,9 @@ class libbacktraceProvider {<br>
         frame.linenumber = line;<br>
         if (func)<br>
             frame.function = func;<br>
+        int dem_style = DMGL_PARAMS|DMGL_ANSI|DMGL_VERBOSE|DMGL_AUTO;<br>
+        if (func && (func = cplus_demangle_v3(func, dem_style)))<br>
+            frame.function = func;<br>
         this_->current_frames->push_back(frame);<br>
         return 0;<br>
     }<br>
<span class=""><font color="#888888">--<br>
1.8.1.2<br>
<br>
_______________________________________________<br>
apitrace mailing list<br>
<a href="mailto:apitrace@lists.freedesktop.org">apitrace@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/apitrace" target="_blank">http://lists.freedesktop.org/mailman/listinfo/apitrace</a><br>
</font></span></blockquote></div><br></div></div></div>