* budemang.c: New file, "demangle" function.

* budemang.h: New file.
	* addr2line.c (translate_addresses): Use "demangle".
	* nm.c (print_symname): Likewise.
	* objdump.c (objdump_print_symname): Likewise.
	(dump_symbols): Likewise.  Also, don't use bfd_asymbol_name macro
	here since that obfuscates.
	* rdcoff.c: Don't #include demangle.h.
	* Makefile.am (CFILES): Add budemang.c, emul_aix.c,
	emul_vanilla.c.  Remove emul_$(EMULATION).c.  Sort.
	(HFILES): Add budemang.h.  Sort.
	(nm_new_SOURCES, objdump_SOURCES, addr2line_SOURCES): Add budemang.c.
	Run "make dep-am".
	* Makefile.in: Regenerate.
	* po/POTFILES.in: Regenerate.
This commit is contained in:
Alan Modra
2002-07-02 04:21:25 +00:00
parent 793011ca4e
commit a6637ec0ed
10 changed files with 318 additions and 226 deletions

View 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
{
char *res;
const char *name;
char *alloc = NULL;
res = cplus_demangle (functionname, DMGL_ANSI | DMGL_PARAMS);
if (res == NULL)
printf ("%s\n", functionname);
else
{
printf ("%s\n", res);
free (res);
}
name = functionname;
if (name == NULL || *name == '\0')
name = "??";
else if (do_demangle)
{
alloc = demangle (abfd, name);
name = alloc;
}
printf ("%s\n", name);
if (alloc != NULL)
free (alloc);
}
if (base_names && filename != NULL)