* ldmisc.c (demangle): Put back dots when string not demangled.

This commit is contained in:
Alan Modra 2002-01-25 12:22:42 +00:00
parent cc9ff76a52
commit 6d39955ebe
2 changed files with 14 additions and 7 deletions

View File

@ -1,3 +1,7 @@
2002-01-25 Alan Modra <amodra@bigpond.net.au>
* ldmisc.c (demangle): Put back dots when string not demangled.
2002-01-22 Richard Henderson <rth@redhat.com>
* emulparams/elf64alpha.sh (NOP): Use unop.

View File

@ -1,5 +1,6 @@
/* ldmisc.c
Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000
Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
2000, 2002
Free Software Foundation, Inc.
Written by Steve Chamberlain of Cygnus Support.
@ -69,18 +70,20 @@ demangle (string)
const char *string;
{
char *res;
const char *p;
if (output_bfd != NULL
&& bfd_get_symbol_leading_char (output_bfd) == string[0])
++string;
/* This is a hack for better error reporting on XCOFF, or the MS PE
format. Xcoff has a single '.', while the NT PE for PPC has
'..'. So we remove all of them. */
while (string[0] == '.')
++string;
/* This is a hack for better error reporting on XCOFF, PowerPC64-ELF
or the MS PE format. These formats have a number of leading '.'s
on at least some symbols, so we remove all dots. */
p = string;
while (*p == '.')
++p;
res = cplus_demangle (string, DMGL_ANSI | DMGL_PARAMS);
res = cplus_demangle (p, DMGL_ANSI | DMGL_PARAMS);
return res ? res : xstrdup (string);
}