* budemang.c: New file, "demangle" function.
[deliverable/binutils-gdb.git] / binutils / addr2line.c
index fae7eddebb699053788875bcb52089e6577bb3c9..2d9dc90015c8712a0a1d994664568abc5735f5f3 100644 (file)
@@ -35,6 +35,7 @@
 #include "libiberty.h"
 #include "demangle.h"
 #include "bucomm.h"
+#include "budemang.h"
 
 static boolean with_functions; /* -f, show function names.  */
 static boolean do_demangle;    /* -C, demangle names.  */
@@ -191,23 +192,22 @@ translate_addresses (abfd)
        {
          if (with_functions)
            {
-             if (functionname == NULL || *functionname == '\0')
-               printf ("??\n");
-             else if (! do_demangle)
-               printf ("%s\n", functionname);
-             else
+             const char *name;
+             char *alloc = NULL;
+
+             name = functionname;
+             if (name == NULL || *name == '\0')
+               name = "??";
+             else if (do_demangle)
                {
-                 char *res;
-
-                 res = cplus_demangle (functionname, DMGL_ANSI | DMGL_PARAMS);
-                 if (res == NULL)
-                   printf ("%s\n", functionname);
-                 else
-                   {
-                     printf ("%s\n", res);
-                     free (res);
-                   }
+                 alloc = demangle (abfd, name);
+                 name = alloc;
                }
+
+             printf ("%s\n", name);
+
+             if (alloc != NULL)
+               free (alloc);
            }
 
          if (base_names && filename != NULL)
This page took 0.024987 seconds and 4 git commands to generate.