2004-02-07 Elena Zannoni <ezannoni@redhat.com>
authorElena Zannoni <ezannoni@kwikemart.cygnus.com>
Sat, 7 Feb 2004 16:57:55 +0000 (16:57 +0000)
committerElena Zannoni <ezannoni@kwikemart.cygnus.com>
Sat, 7 Feb 2004 16:57:55 +0000 (16:57 +0000)
        * objfiles.h (struct objfile): Add objfile_obstack field.
        Remove type_obstack field.

        * dwarf2read.c (dwarf2_add_field,dwarf2_add_member_fn,
        read_structure_scope read_enumeration, new_symbol): Replace
        type_obstack with objfile_obstack.
        * dwarfread.c (struct_type, enum_type): Ditto.
        * gdbtypes.c (alloc_type, alloc_type_instance, init_type)
        (lookup_fundamental_type): Ditto.
        * gdbtypes.h (TYPE_ALLOC): Ditto.
        * hpread.c (hpread_read_enum_type, hpread_read_function_type)
        (hpread_read_doc_function_type, hpread_read_struct_type)
        (fix_static_member_physnames, hpread_read_array_type)
        (hpread_read_subrange_type, hpread_type_lookup): Ditto.
        * jv-lang.c (java_lookup_class, type_from_class, type_from_class)
        (java_link_class_type): Ditto.
        * mdebugread.c (parse_type): Ditto.
        * objfiles.c (allocate_objfile, free_objfile): Ditto.
        * solib-sunos.c (solib_add_common_symbols): Ditto.
        * stabsread.c (define_symbol, read_type, read_member_functions,
        read_cpp_abbrev, read_one_struct_field): Ditto.
        * symfile.c (reread_symbols): Ditto.
        * symmisc.c (print_objfile_statistics): Ditto.

14 files changed:
gdb/ChangeLog
gdb/dwarf2read.c
gdb/dwarfread.c
gdb/gdbtypes.c
gdb/gdbtypes.h
gdb/hpread.c
gdb/jv-lang.c
gdb/mdebugread.c
gdb/objfiles.c
gdb/objfiles.h
gdb/solib-sunos.c
gdb/stabsread.c
gdb/symfile.c
gdb/symmisc.c

index a3122e039f714927abf94659a297117886ff77e2..f1a24b303b5cf4b74f9071747e29820d7ef5fc61 100644 (file)
@@ -1,3 +1,29 @@
+2004-02-07  Elena Zannoni  <ezannoni@redhat.com>
+
+       * objfiles.h (struct objfile): Add objfile_obstack field.
+       Remove type_obstack field.
+
+       * dwarf2read.c (dwarf2_add_field,dwarf2_add_member_fn,
+       read_structure_scope read_enumeration, new_symbol): Replace
+       type_obstack with objfile_obstack.
+       * dwarfread.c (struct_type, enum_type): Ditto.
+       * gdbtypes.c (alloc_type, alloc_type_instance, init_type) 
+       (lookup_fundamental_type): Ditto.
+       * gdbtypes.h (TYPE_ALLOC): Ditto.
+       * hpread.c (hpread_read_enum_type, hpread_read_function_type) 
+       (hpread_read_doc_function_type, hpread_read_struct_type) 
+       (fix_static_member_physnames, hpread_read_array_type) 
+       (hpread_read_subrange_type, hpread_type_lookup): Ditto.
+       * jv-lang.c (java_lookup_class, type_from_class, type_from_class) 
+       (java_link_class_type): Ditto.
+       * mdebugread.c (parse_type): Ditto.
+       * objfiles.c (allocate_objfile, free_objfile): Ditto.
+       * solib-sunos.c (solib_add_common_symbols): Ditto.
+       * stabsread.c (define_symbol, read_type, read_member_functions,
+       read_cpp_abbrev, read_one_struct_field): Ditto.
+       * symfile.c (reread_symbols): Ditto.
+       * symmisc.c (print_objfile_statistics): Ditto.
+       
 2004-02-07  Andrew Cagney  <cagney@redhat.com>
 
        * tui/tui-data.h (tui_win_element): Rename TuiWinElement.
index 9fe77d3a21dcc80aecfdeae89a19e450522638fc..3c93215e40eb08663909842f7d00e1b3cefda497 100644 (file)
@@ -2666,7 +2666,7 @@ dwarf2_add_field (struct field_info *fip, struct die_info *die,
       if (attr && DW_STRING (attr))
        fieldname = DW_STRING (attr);
       fp->name = obsavestring (fieldname, strlen (fieldname),
-                              &objfile->type_obstack);
+                              &objfile->objfile_obstack);
 
       /* Change accessibility for artificial fields (e.g. virtual table
          pointer or virtual base class pointer) to private.  */
@@ -2698,10 +2698,10 @@ dwarf2_add_field (struct field_info *fip, struct die_info *die,
       physname = dwarf2_linkage_name (die, cu);
 
       SET_FIELD_PHYSNAME (*fp, obsavestring (physname, strlen (physname),
-                                            &objfile->type_obstack));
+                                            &objfile->objfile_obstack));
       FIELD_TYPE (*fp) = die_type (die, cu);
       FIELD_NAME (*fp) = obsavestring (fieldname, strlen (fieldname),
-                                      &objfile->type_obstack);
+                                      &objfile->objfile_obstack);
     }
   else if (die->tag == DW_TAG_inheritance)
     {
@@ -2870,7 +2870,7 @@ dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
   /* Fill in the member function field info.  */
   fnp = &new_fnfield->fnfield;
   fnp->physname = obsavestring (physname, strlen (physname),
-                               &objfile->type_obstack);
+                               &objfile->objfile_obstack);
   fnp->type = alloc_type (objfile);
   if (die->type && TYPE_CODE (die->type) == TYPE_CODE_FUNC)
     {
@@ -3036,7 +3036,7 @@ read_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
             TYPE_TAG_NAME to be a const char *, I ran into a cascade
             of changes which would have forced decode_line_1 to take
             a const char **.  */
-         char *new_prefix = obconcat (&objfile->type_obstack,
+         char *new_prefix = obconcat (&objfile->objfile_obstack,
                                       processing_current_prefix,
                                       processing_current_prefix[0] == '\0'
                                       ? "" : "::",
@@ -3047,7 +3047,7 @@ read_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
       else
        {
          TYPE_TAG_NAME (type) = obsavestring (name, strlen (name),
-                                              &objfile->type_obstack);
+                                              &objfile->objfile_obstack);
          need_to_update_name = (cu->language == language_cplus);
        }
     }
@@ -3139,7 +3139,7 @@ read_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
                      TYPE_TAG_NAME (type)
                        = obsavestring (actual_class_name,
                                        strlen (actual_class_name),
-                                       &objfile->type_obstack);
+                                       &objfile->objfile_obstack);
                    }
                  xfree (actual_class_name);
                  need_to_update_name = 0;
@@ -3256,7 +3256,7 @@ read_enumeration (struct die_info *die, struct dwarf2_cu *cu)
 
       if (processing_has_namespace_info)
        {
-         TYPE_TAG_NAME (type) = obconcat (&objfile->type_obstack,
+         TYPE_TAG_NAME (type) = obconcat (&objfile->objfile_obstack,
                                           processing_current_prefix,
                                           processing_current_prefix[0] == '\0'
                                           ? "" : "::",
@@ -3265,7 +3265,7 @@ read_enumeration (struct die_info *die, struct dwarf2_cu *cu)
       else
        {
          TYPE_TAG_NAME (type) = obsavestring (name, strlen (name),
-                                              &objfile->type_obstack);
+                                              &objfile->objfile_obstack);
        }
     }
 
@@ -5717,7 +5717,7 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
                  TYPE_NAME (SYMBOL_TYPE (sym)) =
                    obsavestring (SYMBOL_NATURAL_NAME (sym),
                                  strlen (SYMBOL_NATURAL_NAME (sym)),
-                                 &objfile->type_obstack);
+                                 &objfile->objfile_obstack);
                add_symbol_to_list (typedef_sym, list_to_add);
              }
          }
index 5d1518de54390683a3b40b21b96da6123f1dc2fc..0452886f7e519eed2ff6d8b0c62551f7d9a8cd4b 100644 (file)
@@ -1,7 +1,7 @@
 /* DWARF debugging format support for GDB.
 
    Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-   2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+   2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
 
    Written by Fred Fish at Cygnus Support.  Portions based on dbxread.c,
    mipsread.c, coffread.c, and dwarfread.c from a Data General SVR4 gdb port.
@@ -968,7 +968,7 @@ struct_type (struct dieinfo *dip, char *thisdie, char *enddie,
       && *dip->at_name != '~'
       && *dip->at_name != '.')
     {
-      TYPE_TAG_NAME (type) = obconcat (&objfile->type_obstack,
+      TYPE_TAG_NAME (type) = obconcat (&objfile->objfile_obstack,
                                       "", "", dip->at_name);
     }
   /* Use whatever size is known.  Zero is a valid size.  We might however
@@ -1011,7 +1011,7 @@ struct_type (struct dieinfo *dip, char *thisdie, char *enddie,
          /* Save the data.  */
          list->field.name =
            obsavestring (mbr.at_name, strlen (mbr.at_name),
-                         &objfile->type_obstack);
+                         &objfile->objfile_obstack);
          FIELD_TYPE (list->field) = decode_die_type (&mbr);
          FIELD_BITPOS (list->field) = 8 * locval (&mbr);
          FIELD_STATIC_KIND (list->field) = 0;
@@ -1670,7 +1670,7 @@ enum_type (struct dieinfo *dip, struct objfile *objfile)
       && *dip->at_name != '~'
       && *dip->at_name != '.')
     {
-      TYPE_TAG_NAME (type) = obconcat (&objfile->type_obstack,
+      TYPE_TAG_NAME (type) = obconcat (&objfile->objfile_obstack,
                                       "", "", dip->at_name);
     }
   if (dip->at_byte_size != 0)
@@ -1704,7 +1704,7 @@ enum_type (struct dieinfo *dip, struct objfile *objfile)
                            objfile);
          scan += TARGET_FT_LONG_SIZE (objfile);
          list->field.name = obsavestring (scan, strlen (scan),
-                                          &objfile->type_obstack);
+                                          &objfile->objfile_obstack);
          scan += strlen (scan) + 1;
          nfields++;
          /* Handcraft a new symbol for this enum member. */
index f98cf1c579f632e92712912ff195cd7fe2fdc69a..4c24fa27a8d975b2be6c97b6401595a102cce293 100644 (file)
@@ -1,6 +1,6 @@
 /* Support routines for manipulating internal types for GDB.
-   Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003
-   Free Software Foundation, Inc.
+   Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003,
+   2004 Free Software Foundation, Inc.
    Contributed by Cygnus Support, using pieces from other GDB modules.
 
    This file is part of GDB.
@@ -136,7 +136,7 @@ static void virtual_base_list_aux (struct type *dclass);
 
 /* Alloc a new type structure and fill it with some defaults.  If
    OBJFILE is non-NULL, then allocate the space for the type structure
-   in that objfile's type_obstack.  Otherwise allocate the new type structure
+   in that objfile's objfile_obstack.  Otherwise allocate the new type structure
    by xmalloc () (for permanent types).  */
 
 struct type *
@@ -154,10 +154,10 @@ alloc_type (struct objfile *objfile)
     }
   else
     {
-      type = obstack_alloc (&objfile->type_obstack,
+      type = obstack_alloc (&objfile->objfile_obstack,
                            sizeof (struct type));
       memset (type, 0, sizeof (struct type));
-      TYPE_MAIN_TYPE (type) = obstack_alloc (&objfile->type_obstack,
+      TYPE_MAIN_TYPE (type) = obstack_alloc (&objfile->objfile_obstack,
                                             sizeof (struct main_type));
       OBJSTAT (objfile, n_types++);
     }
@@ -191,7 +191,7 @@ alloc_type_instance (struct type *oldtype)
     }
   else
     {
-      type = obstack_alloc (&TYPE_OBJFILE (oldtype)->type_obstack,
+      type = obstack_alloc (&TYPE_OBJFILE (oldtype)->objfile_obstack,
                            sizeof (struct type));
       memset (type, 0, sizeof (struct type));
     }
@@ -1675,7 +1675,7 @@ allocate_cplus_struct_type (struct type *type)
 /* Helper function to initialize the standard scalar types.
 
    If NAME is non-NULL and OBJFILE is non-NULL, then we make a copy
-   of the string pointed to by name in the type_obstack for that objfile,
+   of the string pointed to by name in the objfile_obstack for that objfile,
    and initialize the type name to that copy.  There are places (mipsread.c
    in particular, where init_type is called with a NULL value for NAME). */
 
@@ -1692,7 +1692,7 @@ init_type (enum type_code code, int length, int flags, char *name,
   if ((name != NULL) && (objfile != NULL))
     {
       TYPE_NAME (type) =
-       obsavestring (name, strlen (name), &objfile->type_obstack);
+       obsavestring (name, strlen (name), &objfile->objfile_obstack);
     }
   else
     {
@@ -1793,7 +1793,7 @@ lookup_fundamental_type (struct objfile *objfile, int typeid)
     {
       nbytes = FT_NUM_MEMBERS * sizeof (struct type *);
       objfile->fundamental_types = (struct type **)
-       obstack_alloc (&objfile->type_obstack, nbytes);
+       obstack_alloc (&objfile->objfile_obstack, nbytes);
       memset ((char *) objfile->fundamental_types, 0, nbytes);
       OBJSTAT (objfile, n_types += FT_NUM_MEMBERS);
     }
index acd0ffdb5cd94d390391fd80c6f078bc75e78048..a1141d72e255c2e814894a19d9a1ed8779b2c5aa 100644 (file)
@@ -1,7 +1,7 @@
 /* Internal type definitions for GDB.
 
    Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-   2001, 2002, 2003 Free Software Foundation, Inc.
+   2001, 2002, 2003, 2004 Free Software Foundation, Inc.
 
    Contributed by Cygnus Support, using pieces from other GDB modules.
 
@@ -320,7 +320,7 @@ struct main_type
   char *tag_name;
 
   /* Every type is now associated with a particular objfile, and the
-     type is allocated on the type_obstack for that objfile.  One problem
+     type is allocated on the objfile_obstack for that objfile.  One problem
      however, is that there are times when gdb allocates new types while
      it is not in the process of reading symbols from a particular objfile.
      Fortunately, these happen when the type being created is a derived
@@ -1069,15 +1069,15 @@ extern struct type *builtin_type_f_void;
 /* Allocate space for storing data associated with a particular type.
    We ensure that the space is allocated using the same mechanism that
    was used to allocate the space for the type structure itself.  I.E.
-   if the type is on an objfile's type_obstack, then the space for data
-   associated with that type will also be allocated on the type_obstack.
+   if the type is on an objfile's objfile_obstack, then the space for data
+   associated with that type will also be allocated on the objfile_obstack.
    If the type is not associated with any particular objfile (such as
    builtin types), then the data space will be allocated with xmalloc,
    the same as for the type structure. */
 
 #define TYPE_ALLOC(t,size)  \
    (TYPE_OBJFILE (t) != NULL  \
-    ? obstack_alloc (&TYPE_OBJFILE (t) -> type_obstack, size) \
+    ? obstack_alloc (&TYPE_OBJFILE (t) -> objfile_obstack, size) \
     : xmalloc (size))
 
 extern struct type *alloc_type (struct objfile *);
index 246f77ec0c5a14855d5dba60a01d30f9ba66a7d1..1edb81c8a12af5619f54b62bcad4c1f0e9d12903 100644 (file)
@@ -3145,7 +3145,7 @@ hpread_read_enum_type (dnttpointer hp_type, union dnttentry *dn_bufp,
   TYPE_FLAGS (type) &= ~TYPE_FLAG_STUB;
   TYPE_NFIELDS (type) = nsyms;
   TYPE_FIELDS (type) = (struct field *)
-    obstack_alloc (&objfile->type_obstack, sizeof (struct field) * nsyms);
+    obstack_alloc (&objfile->objfile_obstack, sizeof (struct field) * nsyms);
 
   /* Find the symbols for the members and put them into the type.
      The symbols can be found in the symlist that we put them on
@@ -3306,7 +3306,7 @@ hpread_read_function_type (dnttpointer hp_type, union dnttentry *dn_bufp,
   /* Note how many parameters we found.  */
   TYPE_NFIELDS (type) = nsyms;
   TYPE_FIELDS (type) = (struct field *)
-    obstack_alloc (&objfile->type_obstack,
+    obstack_alloc (&objfile->objfile_obstack,
                   sizeof (struct field) * nsyms);
 
   /* Find the symbols for the parameters and 
@@ -3485,7 +3485,7 @@ hpread_read_doc_function_type (dnttpointer hp_type, union dnttentry *dn_bufp,
   /* Note how many parameters we found.  */
   TYPE_NFIELDS (type) = nsyms;
   TYPE_FIELDS (type) = (struct field *)
-    obstack_alloc (&objfile->type_obstack,
+    obstack_alloc (&objfile->objfile_obstack,
                   sizeof (struct field) * nsyms);
 
   /* Find the symbols for the parameters and 
@@ -3782,7 +3782,7 @@ hpread_read_struct_type (dnttpointer hp_type, union dnttentry *dn_bufp,
 
   if (n_templ_args > 0)
     TYPE_TEMPLATE_ARGS (type) = (struct template_arg *)
-      obstack_alloc (&objfile->type_obstack, sizeof (struct template_arg) * n_templ_args);
+      obstack_alloc (&objfile->objfile_obstack, sizeof (struct template_arg) * n_templ_args);
   for (n = n_templ_args; t_list; t_list = t_list->next)
     {
       n -= 1;
@@ -4255,7 +4255,7 @@ hpread_read_struct_type (dnttpointer hp_type, union dnttentry *dn_bufp,
   TYPE_NINSTANTIATIONS (type) = ninstantiations;
   if (ninstantiations > 0)
     TYPE_INSTANTIATIONS (type) = (struct type **)
-      obstack_alloc (&objfile->type_obstack, sizeof (struct type *) * ninstantiations);
+      obstack_alloc (&objfile->objfile_obstack, sizeof (struct type *) * ninstantiations);
   for (n = ninstantiations; i_list; i_list = i_list->next)
     {
       n -= 1;
@@ -4267,7 +4267,7 @@ hpread_read_struct_type (dnttpointer hp_type, union dnttentry *dn_bufp,
   TYPE_NFIELDS (type) = nfields;
   TYPE_N_BASECLASSES (type) = n_base_classes;
   TYPE_FIELDS (type) = (struct field *)
-    obstack_alloc (&objfile->type_obstack, sizeof (struct field) * nfields);
+    obstack_alloc (&objfile->objfile_obstack, sizeof (struct field) * nfields);
   /* Copy the saved-up fields into the field vector.  */
   for (n = nfields, tmp_list = list; tmp_list; tmp_list = tmp_list->next)
     {
@@ -4281,7 +4281,7 @@ hpread_read_struct_type (dnttpointer hp_type, union dnttentry *dn_bufp,
   TYPE_NFN_FIELDS (type) = n_fn_fields;
   TYPE_NFN_FIELDS_TOTAL (type) = n_fn_fields_total;
   TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
-    obstack_alloc (&objfile->type_obstack, sizeof (struct fn_fieldlist) * n_fn_fields);
+    obstack_alloc (&objfile->objfile_obstack, sizeof (struct fn_fieldlist) * n_fn_fields);
   for (n = n_fn_fields; fn_list; fn_list = fn_list->next)
     {
       n -= 1;
@@ -4399,7 +4399,7 @@ fix_static_member_physnames (struct type *type, char *class_name,
          return;               /* physnames are already set */
 
        SET_FIELD_PHYSNAME (TYPE_FIELDS (type)[i],
-                           obstack_alloc (&objfile->type_obstack,
+                           obstack_alloc (&objfile->objfile_obstack,
             strlen (class_name) + strlen (TYPE_FIELD_NAME (type, i)) + 3));
        strcpy (TYPE_FIELD_STATIC_PHYSNAME (type, i), class_name);
        strcat (TYPE_FIELD_STATIC_PHYSNAME (type, i), "::");
@@ -4562,7 +4562,7 @@ hpread_read_array_type (dnttpointer hp_type, union dnttentry *dn_bufp,
    */
   TYPE_NFIELDS (type) = 1;
   TYPE_FIELDS (type) = (struct field *)
-    obstack_alloc (&objfile->type_obstack, sizeof (struct field));
+    obstack_alloc (&objfile->objfile_obstack, sizeof (struct field));
   TYPE_FIELD_TYPE (type, 0) = hpread_type_lookup (dn_bufp->darray.indextype,
                                                  objfile);
   return type;
@@ -4585,7 +4585,7 @@ hpread_read_subrange_type (dnttpointer hp_type, union dnttentry *dn_bufp,
   TYPE_LENGTH (type) = dn_bufp->dsubr.bitlength / 8;
   TYPE_NFIELDS (type) = 2;
   TYPE_FIELDS (type)
-    = (struct field *) obstack_alloc (&objfile->type_obstack,
+    = (struct field *) obstack_alloc (&objfile->objfile_obstack,
                                      2 * sizeof (struct field));
 
   if (dn_bufp->dsubr.dyn_low)
@@ -4803,7 +4803,7 @@ hpread_type_lookup (dnttpointer hp_type, struct objfile *objfile)
 
        /* Build the correct name.  */
        TYPE_NAME (structtype)
-         = (char *) obstack_alloc (&objfile->type_obstack,
+         = (char *) obstack_alloc (&objfile->objfile_obstack,
                                    strlen (prefix) + strlen (suffix) + 1);
        TYPE_NAME (structtype) = strcpy (TYPE_NAME (structtype), prefix);
        TYPE_NAME (structtype) = strcat (TYPE_NAME (structtype), suffix);
index 92c263b3cac1258885f576fc3910d6826e72eaa4..3d153130f25c33abd83cebea2ccd64606b9fee30 100644 (file)
@@ -186,7 +186,7 @@ java_lookup_class (char *name)
   type = alloc_type (objfile);
   TYPE_CODE (type) = TYPE_CODE_STRUCT;
   INIT_CPLUS_SPECIFIC (type);
-  TYPE_TAG_NAME (type) = obsavestring (name, strlen (name), &objfile->type_obstack);
+  TYPE_TAG_NAME (type) = obsavestring (name, strlen (name), &objfile->objfile_obstack);
   TYPE_FLAGS (type) |= TYPE_FLAG_STUB;
   TYPE ? = addr;
   return type;
@@ -289,7 +289,7 @@ type_from_class (struct value *clas)
   /* if clasloader non-null, prepend loader address. FIXME */
   temp = clas;
   utf8_name = value_struct_elt (&temp, NULL, "name", NULL, "structure");
-  name = get_java_utf8_name (&objfile->type_obstack, utf8_name);
+  name = get_java_utf8_name (&objfile->objfile_obstack, utf8_name);
   for (nptr = name; *nptr != 0; nptr++)
     {
       if (*nptr == '/')
@@ -309,7 +309,7 @@ type_from_class (struct value *clas)
       char *signature = name;
       int namelen = java_demangled_signature_length (signature);
       if (namelen > strlen (name))
-       name = obstack_alloc (&objfile->type_obstack, namelen + 1);
+       name = obstack_alloc (&objfile->objfile_obstack, namelen + 1);
       java_demangled_signature_copy (name, signature);
       name[namelen] = '\0';
       is_array = 1;
@@ -442,7 +442,7 @@ java_link_class_type (struct type *type, struct value *clas)
       temp = field;
       temp = value_struct_elt (&temp, NULL, "name", NULL, "structure");
       TYPE_FIELD_NAME (type, i) =
-       get_java_utf8_name (&objfile->type_obstack, temp);
+       get_java_utf8_name (&objfile->objfile_obstack, temp);
       temp = field;
       accflags = value_as_long (value_struct_elt (&temp, NULL, "accflags",
                                                  NULL, "structure"));
@@ -513,7 +513,7 @@ java_link_class_type (struct type *type, struct value *clas)
       /* Get method name. */
       temp = method;
       temp = value_struct_elt (&temp, NULL, "name", NULL, "structure");
-      mname = get_java_utf8_name (&objfile->type_obstack, temp);
+      mname = get_java_utf8_name (&objfile->objfile_obstack, temp);
       if (strcmp (mname, "<init>") == 0)
        mname = unqualified_name;
 
@@ -538,7 +538,7 @@ java_link_class_type (struct type *type, struct value *clas)
            {                   /* Found an existing method with the same name. */
              int l;
              if (mname != unqualified_name)
-               obstack_free (&objfile->type_obstack, mname);
+               obstack_free (&objfile->objfile_obstack, mname);
              mname = fn_fieldlists[j].name;
              fn_fieldlists[j].length++;
              k = i - k;        /* Index of new slot. */
index ae1ea7d6cd676592211f919de64d332dd947d990..a5b4d5b9782c0a7097594faa3ada21b2a2816eb8 100644 (file)
@@ -1637,7 +1637,7 @@ parse_type (int fd, union aux_ext *ax, unsigned int aux_index, int *bs,
          else if (TYPE_TAG_NAME (tp) == NULL
                   || strcmp (TYPE_TAG_NAME (tp), name) != 0)
            TYPE_TAG_NAME (tp) = obsavestring (name, strlen (name),
-                                           &current_objfile->type_obstack);
+                                           &current_objfile->objfile_obstack);
        }
     }
 
@@ -1673,7 +1673,7 @@ parse_type (int fd, union aux_ext *ax, unsigned int aux_index, int *bs,
          if (TYPE_NAME (tp) == NULL
              || strcmp (TYPE_NAME (tp), name) != 0)
            TYPE_NAME (tp) = obsavestring (name, strlen (name),
-                                          &current_objfile->type_obstack);
+                                          &current_objfile->objfile_obstack);
        }
     }
   if (t->bt == btTypedef)
@@ -1697,11 +1697,11 @@ parse_type (int fd, union aux_ext *ax, unsigned int aux_index, int *bs,
       TYPE_FIELDS (tp) = ((struct field *)
                          TYPE_ALLOC (tp, 2 * sizeof (struct field)));
       TYPE_FIELD_NAME (tp, 0) = obsavestring ("Low", strlen ("Low"),
-                                           &current_objfile->type_obstack);
+                                           &current_objfile->objfile_obstack);
       TYPE_FIELD_BITPOS (tp, 0) = AUX_GET_DNLOW (bigend, ax);
       ax++;
       TYPE_FIELD_NAME (tp, 1) = obsavestring ("High", strlen ("High"),
-                                           &current_objfile->type_obstack);
+                                           &current_objfile->objfile_obstack);
       TYPE_FIELD_BITPOS (tp, 1) = AUX_GET_DNHIGH (bigend, ax);
       ax++;
     }
index fab1c99bf8b0eaeb67b9886ba2feaa6006d83f5d..dd18e73862590014a22fdd379190f32c1d067ad2 100644 (file)
@@ -1,7 +1,7 @@
 /* GDB routines for manipulating objfiles.
 
    Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-   2001, 2002, 2003 Free Software Foundation, Inc.
+   2001, 2002, 2003, 2004 Free Software Foundation, Inc.
 
    Contributed by Cygnus Support, using pieces from other GDB modules.
 
@@ -169,7 +169,7 @@ allocate_objfile (bfd *abfd, int flags)
                                  xfree);
       obstack_specify_allocation (&objfile->symbol_obstack, 0, 0, xmalloc,
                                  xfree);
-      obstack_specify_allocation (&objfile->type_obstack, 0, 0, xmalloc,
+      obstack_specify_allocation (&objfile->objfile_obstack, 0, 0, xmalloc,
                                  xfree);
 
       terminate_minimal_symbol_table (objfile);
@@ -433,7 +433,7 @@ free_objfile (struct objfile *objfile)
     htab_delete (objfile->demangled_names_hash);
   obstack_free (&objfile->psymbol_obstack, 0);
   obstack_free (&objfile->symbol_obstack, 0);
-  obstack_free (&objfile->type_obstack, 0);
+  obstack_free (&objfile->objfile_obstack, 0);
   xmfree (objfile->md, objfile);
   objfile = NULL;
 }
index aeb5892b38142eda4808bc9f9911f8d1e9bd0e12..62f239ca9945cab530f766d1fa92ee3ccaf6c7ba 100644 (file)
@@ -1,7 +1,7 @@
 /* Definitions for symbol file management in GDB.
 
    Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-   2001, 2002, 2003 Free Software Foundation, Inc.
+   2001, 2002, 2003, 2004 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -281,12 +281,22 @@ struct objfile
 
     long mtime;
 
+    /* Obstack to hold objects that should be freed when we load a new symbol
+       table from this object file. */
+
+    /* Note ezannoni 2004-02-05: this obstack will become the only
+       obstack per objfile instead of having 3 separate ones with the
+       same lifetime.  I am in the process of gradually migrating the
+       old obstacks to this one, so that it can be used more
+       freely. */
+
+    struct obstack objfile_obstack; 
+
     /* Obstacks to hold objects that should be freed when we load a new symbol
        table from this object file. */
 
     struct obstack psymbol_obstack;    /* Partial symbols */
     struct obstack symbol_obstack;     /* Full symbols */
-    struct obstack type_obstack;       /* Types */
 
     /* A byte cache where we can stash arbitrary "chunks" of bytes that
        will not change. */
@@ -509,7 +519,7 @@ extern struct objfile *symfile_objfile;
 
 extern struct objfile *rt_common_objfile;
 
-/* When we need to allocate a new type, we need to know which type_obstack
+/* When we need to allocate a new type, we need to know which objfile_obstack
    to allocate the type on, since there is one for each objfile.  The places
    where types are allocated are deeply buried in function call hierarchies
    which know nothing about objfiles, so rather than trying to pass a
index b7444c64cc21b690326df367ff12b93893d6e103..15dc8a3eeba2ba90d26af9eb12fb745be46b8839 100644 (file)
@@ -1,6 +1,6 @@
 /* Handle SunOS shared libraries for GDB, the GNU Debugger.
    Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000,
-   2001
+   2001, 2004
    Free Software Foundation, Inc.
 
    This file is part of GDB.
@@ -149,7 +149,7 @@ allocate_rt_common_objfile (void)
                              xfree);
   obstack_specify_allocation (&objfile->symbol_obstack, 0, 0, xmalloc,
                              xfree);
-  obstack_specify_allocation (&objfile->type_obstack, 0, 0, xmalloc,
+  obstack_specify_allocation (&objfile->objfile_obstack, 0, 0, xmalloc,
                              xfree);
   objfile->name = mstrsave (objfile->md, "rt_common");
 
index 2a7580310672f8c1102e9dcaac538b694cb784d2..3a670a40ce9a73359e03c28a2f715d533281cfcd 100644 (file)
@@ -1251,7 +1251,7 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type,
       SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
       if (TYPE_TAG_NAME (SYMBOL_TYPE (sym)) == 0)
        TYPE_TAG_NAME (SYMBOL_TYPE (sym))
-         = obconcat (&objfile->type_obstack, "", "", DEPRECATED_SYMBOL_NAME (sym));
+         = obconcat (&objfile->objfile_obstack, "", "", DEPRECATED_SYMBOL_NAME (sym));
       add_symbol_to_list (sym, &file_symbols);
 
       if (synonym)
@@ -1265,7 +1265,7 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type,
          SYMBOL_DOMAIN (typedef_sym) = VAR_DOMAIN;
          if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
            TYPE_NAME (SYMBOL_TYPE (sym))
-             = obconcat (&objfile->type_obstack, "", "", DEPRECATED_SYMBOL_NAME (sym));
+             = obconcat (&objfile->objfile_obstack, "", "", DEPRECATED_SYMBOL_NAME (sym));
          add_symbol_to_list (typedef_sym, &file_symbols);
        }
       break;
@@ -1527,7 +1527,7 @@ again:
                return error_type (pp, objfile);
            }
          to = type_name =
-           (char *) obstack_alloc (&objfile->type_obstack, p - *pp + 1);
+           (char *) obstack_alloc (&objfile->objfile_obstack, p - *pp + 1);
 
          /* Copy the name.  */
          from = *pp + 1;
@@ -1554,7 +1554,7 @@ again:
                  && (TYPE_CODE (SYMBOL_TYPE (sym)) == code)
                  && strcmp (DEPRECATED_SYMBOL_NAME (sym), type_name) == 0)
                {
-                 obstack_free (&objfile->type_obstack, type_name);
+                 obstack_free (&objfile->objfile_obstack, type_name);
                  type = SYMBOL_TYPE (sym);
                  if (typenums[0] != -1)
                    *dbx_lookup_type (typenums) = type;
@@ -2511,11 +2511,11 @@ read_member_functions (struct field_info *fip, char **pp, struct type *type,
              make_cleanup (xfree, destr_fnlist);
              memset (destr_fnlist, 0, sizeof (struct next_fnfieldlist));
              destr_fnlist->fn_fieldlist.name
-               = obconcat (&objfile->type_obstack, "", "~",
+               = obconcat (&objfile->objfile_obstack, "", "~",
                            new_fnlist->fn_fieldlist.name);
 
              destr_fnlist->fn_fieldlist.fn_fields = (struct fn_field *)
-               obstack_alloc (&objfile->type_obstack,
+               obstack_alloc (&objfile->objfile_obstack,
                               sizeof (struct fn_field) * has_destructor);
              memset (destr_fnlist->fn_fieldlist.fn_fields, 0,
                  sizeof (struct fn_field) * has_destructor);
@@ -2576,11 +2576,11 @@ read_member_functions (struct field_info *fip, char **pp, struct type *type,
              if (ret)
                new_fnlist->fn_fieldlist.name
                  = obsavestring (dem_opname, strlen (dem_opname),
-                                 &objfile->type_obstack);
+                                 &objfile->objfile_obstack);
            }
 
          new_fnlist->fn_fieldlist.fn_fields = (struct fn_field *)
-           obstack_alloc (&objfile->type_obstack,
+           obstack_alloc (&objfile->objfile_obstack,
                           sizeof (struct fn_field) * length);
          memset (new_fnlist->fn_fieldlist.fn_fields, 0,
                  sizeof (struct fn_field) * length);
@@ -2649,7 +2649,7 @@ read_cpp_abbrev (struct field_info *fip, char **pp, struct type *type,
                  name = "";
          }
          fip->list->field.name =
-           obconcat (&objfile->type_obstack, vptr_name, name, "");
+           obconcat (&objfile->objfile_obstack, vptr_name, name, "");
          break;
 
        case 'b':               /* $vb -- a virtual bsomethingorother */
@@ -2662,13 +2662,13 @@ read_cpp_abbrev (struct field_info *fip, char **pp, struct type *type,
              name = "FOO";
            }
          fip->list->field.name =
-           obconcat (&objfile->type_obstack, vb_name, name, "");
+           obconcat (&objfile->objfile_obstack, vb_name, name, "");
          break;
 
        default:
          invalid_cpp_abbrev_complaint (*pp);
          fip->list->field.name =
-           obconcat (&objfile->type_obstack,
+           obconcat (&objfile->objfile_obstack,
                      "INVALID_CPLUSPLUS_ABBREV", "", "");
          break;
        }
@@ -2714,7 +2714,7 @@ read_one_struct_field (struct field_info *fip, char **pp, char *p,
                       struct type *type, struct objfile *objfile)
 {
   fip->list->field.name =
-    obsavestring (*pp, p - *pp, &objfile->type_obstack);
+    obsavestring (*pp, p - *pp, &objfile->objfile_obstack);
   *pp = p + 1;
 
   /* This means we have a visibility for a field coming. */
index 076fc456d184cde1a3d51c26fe9f87672e488832..1aa5ff76b3b2f53f0887205d79242094350a2b46 100644 (file)
@@ -1913,7 +1913,7 @@ reread_symbols (void)
                }
              obstack_free (&objfile->psymbol_obstack, 0);
              obstack_free (&objfile->symbol_obstack, 0);
-             obstack_free (&objfile->type_obstack, 0);
+             obstack_free (&objfile->objfile_obstack, 0);
              objfile->sections = NULL;
              objfile->symtabs = NULL;
              objfile->psymtabs = NULL;
@@ -1943,7 +1943,7 @@ reread_symbols (void)
                                          xmalloc, xfree);
              obstack_specify_allocation (&objfile->symbol_obstack, 0, 0,
                                          xmalloc, xfree);
-             obstack_specify_allocation (&objfile->type_obstack, 0, 0,
+             obstack_specify_allocation (&objfile->objfile_obstack, 0, 0,
                                          xmalloc, xfree);
              if (build_objfile_section_table (objfile))
                {
index 76b3507193e5130252fc1e823d4b53ebe2980dd1..10274d045952712226971b182cda9dbb4feb7332 100644 (file)
@@ -1,7 +1,7 @@
 /* Do various things to symbol tables (other than lookup), for GDB.
 
    Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
-   1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003 Free Software
+   1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004 Free Software
    Foundation, Inc.
 
    This file is part of GDB.
@@ -239,7 +239,7 @@ print_objfile_statistics (void)
     printf_filtered ("  Total memory used for symbol obstack: %d\n",
                     obstack_memory_used (&objfile->symbol_obstack));
     printf_filtered ("  Total memory used for type obstack: %d\n",
-                    obstack_memory_used (&objfile->type_obstack));
+                    obstack_memory_used (&objfile->objfile_obstack));
   }
   immediate_quit--;
 }