* ldcref.c (struct cref_hash_entry): Make "demangled" const.
authorAlan Modra <amodra@gmail.com>
Sat, 28 Apr 2007 06:04:28 +0000 (06:04 +0000)
committerAlan Modra <amodra@gmail.com>
Sat, 28 Apr 2007 06:04:28 +0000 (06:04 +0000)
(cref_fill_array): Adjust for changed demangler.
* ldlang.c (lang_one_common): Likewise.

ld/ChangeLog
ld/ldcref.c
ld/ldlang.c

index 893debdfbfdb0403e9d1bafb64b43d28c5a6a211..f24102c3b0b93cfa9f2163ec5ef23bdb4ac7e7e8 100644 (file)
@@ -1,3 +1,9 @@
+2007-04-28  Alan Modra  <amodra@bigpond.net.au>
+
+       * ldcref.c (struct cref_hash_entry): Make "demangled" const.
+       (cref_fill_array): Adjust for changed demangler.
+       * ldlang.c (lang_one_common): Likewise.
+
 2007-04-27  Nathan Froyd  <froydnj@codesourcery.com>
 
        * emulparams/elf32_sparc.sh: Update comments.
index 3966bbcb9c1ba1f8fb28da226c8307f5bd79a22e..4fa29de080a1d15a0128710fddefcf33406db6f8 100644 (file)
@@ -57,7 +57,7 @@ struct cref_ref {
 struct cref_hash_entry {
   struct bfd_hash_entry root;
   /* The demangled name.  */
-  char *demangled;
+  const char *demangled;
   /* References to and definitions of this symbol.  */
   struct cref_ref *refs;
 };
@@ -327,6 +327,8 @@ cref_fill_array (struct cref_hash_entry *h, void *data)
   ASSERT (h->demangled == NULL);
   h->demangled = bfd_demangle (output_bfd, h->root.string,
                               DMGL_ANSI | DMGL_PARAMS);
+  if (h->demangled == NULL)
+    h->demangled = h->root.string;
 
   **pph = h;
 
index 92cb77df1172a0bfe5d198ff00431993f134f00b..116f2e51764d093504a4f6a2a86229b2d738a815 100644 (file)
@@ -5269,9 +5269,17 @@ lang_one_common (struct bfd_link_hash_entry *h, void *info)
 
       name = bfd_demangle (output_bfd, h->root.string,
                           DMGL_ANSI | DMGL_PARAMS);
-      minfo ("%s", name);
-      len = strlen (name);
-      free (name);
+      if (name == NULL)
+       {
+         minfo ("%s", h->root.string);
+         len = strlen (h->root.string);
+       }
+      else
+       {
+         minfo ("%s", name);
+         len = strlen (name);
+         free (name);
+       }
 
       if (len >= 19)
        {