Use setter and getter for demangled_name.
authorSami Wagiaalla <swagiaal@redhat.com>
Fri, 16 Jul 2010 19:00:56 +0000 (19:00 +0000)
committerSami Wagiaalla <swagiaal@redhat.com>
Fri, 16 Jul 2010 19:00:56 +0000 (19:00 +0000)
2010-07-16  Sami Wagiaalla  <swagiaal@redhat.com>

* symtab.h (symbol_set_demangled_name): New function.
(symbol_get_demangled_name): New function.
* symtab.c (symbol_set_demangled_name): New function.
(symbol_get_demangled_name): New function.
(symbol_init_language_specific): Use demangled_name setter and getter.
(symbol_set_names): Ditto.
(symbol_natural_name): Ditto.
(symbol_demangled_name): Ditto.
* dwarf2read.c (new_symbol): Ditto.

gdb/ChangeLog
gdb/dwarf2read.c
gdb/symtab.c
gdb/symtab.h

index 7e7aaa072191aeea2c031694176f0f09a2386aee..69d2288efc496a5a9998cd65139d8c4f1d0dd385 100644 (file)
@@ -1,3 +1,15 @@
+2010-07-16  Sami Wagiaalla  <swagiaal@redhat.com>
+
+       * symtab.h (symbol_set_demangled_name): New function.
+       (symbol_get_demangled_name): New function.
+       * symtab.c (symbol_set_demangled_name): New function.
+       (symbol_get_demangled_name): New function.
+       (symbol_init_language_specific): Use demangled_name setter and getter.
+       (symbol_set_names): Ditto.
+       (symbol_natural_name): Ditto.
+       (symbol_demangled_name): Ditto.
+       * dwarf2read.c (new_symbol): Ditto.
+
 2010-07-16  Sami Wagiaalla  <swagiaal@redhat.com>
 
        * symtab.h: Renamed cplus_specific to mangled_lang.
index 8f129b99d3b78862ed20028e8a9af25806ed8364..234c5ccd811546c807448d430520c7bc879daeb9 100644 (file)
@@ -9743,9 +9743,8 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
       /* Fortran does not have mangling standard and the mangling does differ
         between gfortran, iFort etc.  */
       if (cu->language == language_fortran
-          && sym->ginfo.language_specific.mangled_lang.demangled_name == NULL)
-       sym->ginfo.language_specific.mangled_lang.demangled_name
-         = (char *) dwarf2_full_name (name, die, cu);
+          && symbol_get_demangled_name (&(sym->ginfo)) == NULL)
+       symbol_set_demangled_name (&(sym->ginfo), (char *) dwarf2_full_name (name, die, cu));
 
       /* Default assumptions.
          Use the passed type or decode it from the die.  */
index dbe6b248150495fd7191848d5fd2fb07927dbae6..8701d1fef0bbe39586bf8487c1194307e775f421 100644 (file)
@@ -340,6 +340,22 @@ gdb_mangle_name (struct type *type, int method_id, int signature_id)
   return (mangled_name);
 }
 
+/* Set the demangled name of GSYMBOL to NAME.  NAME must be already
+   correctly allocated.  */
+void
+symbol_set_demangled_name (struct general_symbol_info *gsymbol,
+                           char *name)
+{
+  gsymbol->language_specific.mangled_lang.demangled_name = name;
+}
+
+/* Return the demangled name of GSYMBOL.  */
+char *
+symbol_get_demangled_name (const struct general_symbol_info *gsymbol)
+{
+  return gsymbol->language_specific.mangled_lang.demangled_name;
+}
+
 \f
 /* Initialize the language dependent portion of a symbol
    depending upon the language for the symbol. */
@@ -354,7 +370,7 @@ symbol_init_language_specific (struct general_symbol_info *gsymbol,
       || gsymbol->language == language_objc
       || gsymbol->language == language_fortran)
     {
-      gsymbol->language_specific.mangled_lang.demangled_name = NULL;
+      symbol_set_demangled_name (gsymbol, NULL);
     }
   else
     {
@@ -537,7 +553,7 @@ symbol_set_names (struct general_symbol_info *gsymbol,
          memcpy (gsymbol->name, linkage_name, len);
          gsymbol->name[len] = '\0';
        }
-      gsymbol->language_specific.mangled_lang.demangled_name = NULL;
+      symbol_set_demangled_name (gsymbol, NULL);
 
       return;
     }
@@ -633,10 +649,9 @@ symbol_set_names (struct general_symbol_info *gsymbol,
 
   gsymbol->name = (*slot)->mangled + lookup_len - len;
   if ((*slot)->demangled[0] != '\0')
-    gsymbol->language_specific.mangled_lang.demangled_name
-      = (*slot)->demangled;
+    symbol_set_demangled_name (gsymbol, (*slot)->demangled);
   else
-    gsymbol->language_specific.mangled_lang.demangled_name = NULL;
+    symbol_set_demangled_name (gsymbol, NULL);
 }
 
 /* Return the source code name of a symbol.  In languages where
@@ -652,12 +667,12 @@ symbol_natural_name (const struct general_symbol_info *gsymbol)
     case language_java:
     case language_objc:
     case language_fortran:
-      if (gsymbol->language_specific.mangled_lang.demangled_name != NULL)
-       return gsymbol->language_specific.mangled_lang.demangled_name;
+      if (symbol_get_demangled_name (gsymbol) != NULL)
+       return symbol_get_demangled_name (gsymbol);
       break;
     case language_ada:
-      if (gsymbol->language_specific.mangled_lang.demangled_name != NULL)
-       return gsymbol->language_specific.mangled_lang.demangled_name;
+      if (symbol_get_demangled_name (gsymbol) != NULL)
+       return symbol_get_demangled_name (gsymbol);
       else
        return ada_decode_symbol (gsymbol);
       break;
@@ -679,12 +694,12 @@ symbol_demangled_name (const struct general_symbol_info *gsymbol)
     case language_java:
     case language_objc:
     case language_fortran:
-      if (gsymbol->language_specific.mangled_lang.demangled_name != NULL)
-       return gsymbol->language_specific.mangled_lang.demangled_name;
+      if (symbol_get_demangled_name (gsymbol) != NULL)
+       return symbol_get_demangled_name (gsymbol);
       break;
     case language_ada:
-      if (gsymbol->language_specific.mangled_lang.demangled_name != NULL)
-       return gsymbol->language_specific.mangled_lang.demangled_name;
+      if (symbol_get_demangled_name (gsymbol) != NULL)
+       return symbol_get_demangled_name (gsymbol);
       else
        return ada_decode_symbol (gsymbol);
       break;
index 30de42d241fad0af88b90b7e64ca6290f0814a9a..7f18fb3778c466a27ec2f94553f1feab27134e54 100644 (file)
@@ -154,6 +154,10 @@ struct general_symbol_info
   struct obj_section *obj_section;
 };
 
+extern void symbol_set_demangled_name (struct general_symbol_info *, char *);
+
+extern char *symbol_get_demangled_name (const struct general_symbol_info *);
+
 extern CORE_ADDR symbol_overlayed_address (CORE_ADDR, struct obj_section *);
 
 /* Note that all the following SYMBOL_* macros are used with the