From 6d39955ebe7b9029474cfa994b74ea86409e9456 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Fri, 25 Jan 2002 12:22:42 +0000 Subject: [PATCH] * ldmisc.c (demangle): Put back dots when string not demangled. --- ld/ChangeLog | 4 ++++ ld/ldmisc.c | 17 ++++++++++------- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/ld/ChangeLog b/ld/ChangeLog index d1352ee9736..12f639e5828 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,7 @@ +2002-01-25 Alan Modra + + * ldmisc.c (demangle): Put back dots when string not demangled. + 2002-01-22 Richard Henderson * emulparams/elf64alpha.sh (NOP): Use unop. diff --git a/ld/ldmisc.c b/ld/ldmisc.c index 25b7857a998..42adceeac3e 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); } -- 2.30.2