11 /*****************************************************************************/
13 static Dict *d = NULL;
16 my_demangle(const char *function_name) {
17 const char *tmp, *fn_copy;
18 #if !defined HAVE_LIBIBERTY && defined HAVE_LIBSUPC__
19 extern char *__cxa_demangle(const char *, char *, size_t *, int *);
23 debug(DEBUG_FUNCTION, "my_demangle(name=%s)", function_name);
26 d = dict_init(dict_key2hash_string, dict_key_cmp_string);
28 tmp = dict_find_entry(d, (void *)function_name);
30 fn_copy = strdup(function_name);
32 tmp = cplus_demangle(function_name, DMGL_ANSI | DMGL_PARAMS);
33 #elif defined HAVE_LIBSUPC__
34 tmp = __cxa_demangle(function_name, NULL, NULL, &status);
39 dict_enter(d, (void *)fn_copy, (void *)tmp);