* bfd.c (bfd_demangle): Always trim off bfd_get_symbol_leading_char.

This commit is contained in:
Alan Modra
2008-07-07 11:48:27 +00:00
parent 2b4590fb46
commit c29aae594a
2 changed files with 21 additions and 4 deletions

View File

@ -1,3 +1,7 @@
2008-07-07 Alan Modra <amodra@bigpond.net.au>
* bfd.c (bfd_demangle): Always trim off bfd_get_symbol_leading_char.
2008-07-02 Alan Modra <amodra@bigpond.net.au>
* elf32-ppc.c (is_pic_glink_stub): New function.

View File

@ -1829,10 +1829,12 @@ bfd_demangle (bfd *abfd, const char *name, int options)
char *res, *alloc;
const char *pre, *suf;
size_t pre_len;
bfd_boolean skip_lead;
if (abfd != NULL
skip_lead = (abfd != NULL
&& *name != '\0'
&& bfd_get_symbol_leading_char (abfd) == *name)
&& bfd_get_symbol_leading_char (abfd) == *name);
if (skip_lead)
++name;
/* This is a hack for better error reporting on XCOFF, PowerPC64-ELF
@ -1863,7 +1865,18 @@ bfd_demangle (bfd *abfd, const char *name, int options)
free (alloc);
if (res == NULL)
{
if (skip_lead)
{
size_t len = strlen (pre) + 1;
alloc = bfd_malloc (len);
if (alloc == NULL)
return NULL;
memcpy (alloc, pre, len);
return alloc;
}
return NULL;
}
/* Put back any prefix or suffix. */
if (pre_len != 0 || suf != NULL)