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.
This commit is contained in:
parent
2a8854a783
commit
b99607ea3c
14 changed files with 110 additions and 74 deletions
|
@ -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.
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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. */
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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 *);
|
||||
|
|
22
gdb/hpread.c
22
gdb/hpread.c
|
@ -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);
|
||||
|
|
|
@ -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. */
|
||||
|
|
|
@ -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),
|
||||
¤t_objfile->type_obstack);
|
||||
¤t_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),
|
||||
¤t_objfile->type_obstack);
|
||||
¤t_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"),
|
||||
¤t_objfile->type_obstack);
|
||||
¤t_objfile->objfile_obstack);
|
||||
TYPE_FIELD_BITPOS (tp, 0) = AUX_GET_DNLOW (bigend, ax);
|
||||
ax++;
|
||||
TYPE_FIELD_NAME (tp, 1) = obsavestring ("High", strlen ("High"),
|
||||
¤t_objfile->type_obstack);
|
||||
¤t_objfile->objfile_obstack);
|
||||
TYPE_FIELD_BITPOS (tp, 1) = AUX_GET_DNHIGH (bigend, ax);
|
||||
ax++;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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");
|
||||
|
||||
|
|
|
@ -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. */
|
||||
|
|
|
@ -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))
|
||||
{
|
||||
|
|
|
@ -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--;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue