diff options
-rw-r--r-- | ld/ChangeLog | 4 | ||||
-rw-r--r-- | ld/ldmisc.c | 17 |
2 files changed, 14 insertions, 7 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index d1352ee..12f639e 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -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. diff --git a/ld/ldmisc.c b/ld/ldmisc.c index 25b7857..42adcee 100644 --- a/ld/ldmisc.c +++ b/ld/ldmisc.c @@ -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); } |