extern void _initialize_stabsread (void);
+struct nextfield
+{
+ struct nextfield *next;
+
+ /* This is the raw visibility from the stab. It is not checked
+ for being one of the visibilities we recognize, so code which
+ examines this field better be able to deal. */
+ int visibility;
+
+ struct field field;
+};
+
+struct next_fnfieldlist
+{
+ struct next_fnfieldlist *next;
+ struct fn_fieldlist fn_fieldlist;
+};
+
/* The routines that read and process a complete stabs for a C struct or
C++ class pass lists of data member fields and lists of member function
fields in an instance of a field_info structure, as defined below.
struct field_info
{
- struct nextfield
- {
- struct nextfield *next;
-
- /* This is the raw visibility from the stab. It is not checked
- for being one of the visibilities we recognize, so code which
- examines this field better be able to deal. */
- int visibility;
-
- struct field field;
- }
- *list;
- struct next_fnfieldlist
- {
- struct next_fnfieldlist *next;
- struct fn_fieldlist fn_fieldlist;
- }
- *fnlist;
+ struct nextfield *list;
+ struct next_fnfieldlist *fnlist;
};
static void
if (old_len == 0)
{
type_vector_length = INITIAL_TYPE_VECTOR_LENGTH;
- type_vector = (struct type **)
- xmalloc (type_vector_length * sizeof (struct type *));
+ type_vector = XNEWVEC (struct type *, type_vector_length);
}
while (index >= type_vector_length)
{
while (**pp && **pp != '#')
{
struct type *arg_type = read_type (pp, objfile);
- struct type_list *new = alloca (sizeof (*new));
- new->type = arg_type;
- new->next = arg_types;
- arg_types = new;
+ struct type_list *newobj = XALLOCA (struct type_list);
+ newobj->type = arg_type;
+ newobj->next = arg_types;
+ arg_types = newobj;
num_args++;
}
if (**pp == '#')
look_ahead_type = NULL;
length = 0;
- new_fnlist = (struct next_fnfieldlist *)
- xmalloc (sizeof (struct next_fnfieldlist));
+ new_fnlist = XCNEW (struct next_fnfieldlist);
make_cleanup (xfree, new_fnlist);
- memset (new_fnlist, 0, sizeof (struct next_fnfieldlist));
if ((*pp)[0] == 'o' && (*pp)[1] == 'p' && is_cplus_marker ((*pp)[2]))
{
do
{
- new_sublist =
- (struct next_fnfield *) xmalloc (sizeof (struct next_fnfield));
+ new_sublist = XCNEW (struct next_fnfield);
make_cleanup (xfree, new_sublist);
- memset (new_sublist, 0, sizeof (struct next_fnfield));
/* Check for and handle cretinous dbx symbol name continuation! */
if (look_ahead_type == NULL)
/* Create a new fn_fieldlist for the destructors. */
- destr_fnlist = (struct next_fnfieldlist *)
- xmalloc (sizeof (struct next_fnfieldlist));
+ destr_fnlist = XCNEW (struct next_fnfieldlist);
make_cleanup (xfree, destr_fnlist);
- memset (destr_fnlist, 0, sizeof (struct next_fnfieldlist));
+
destr_fnlist->fn_fieldlist.name
= obconcat (&objfile->objfile_obstack, "~",
new_fnlist->fn_fieldlist.name, (char *) NULL);
- destr_fnlist->fn_fieldlist.fn_fields = (struct fn_field *)
- obstack_alloc (&objfile->objfile_obstack,
- sizeof (struct fn_field) * has_destructor);
+ destr_fnlist->fn_fieldlist.fn_fields =
+ XOBNEWVEC (&objfile->objfile_obstack,
+ struct fn_field, has_destructor);
memset (destr_fnlist->fn_fieldlist.fn_fields, 0,
sizeof (struct fn_field) * has_destructor);
tmp_sublist = sublist;
struct objfile *objfile)
{
char *p;
- struct nextfield *new;
+ struct nextfield *newobj;
/* We better set p right now, in case there are no fields at all... */
{
STABS_CONTINUE (pp, objfile);
/* Get space to record the next field's data. */
- new = (struct nextfield *) xmalloc (sizeof (struct nextfield));
- make_cleanup (xfree, new);
- memset (new, 0, sizeof (struct nextfield));
- new->next = fip->list;
- fip->list = new;
+ newobj = XCNEW (struct nextfield);
+ make_cleanup (xfree, newobj);
+
+ newobj->next = fip->list;
+ fip->list = newobj;
/* Get the field name. */
p = *pp;
struct objfile *objfile)
{
int i;
- struct nextfield *new;
+ struct nextfield *newobj;
if (**pp != '!')
{
for (i = 0; i < TYPE_N_BASECLASSES (type); i++)
{
- new = (struct nextfield *) xmalloc (sizeof (struct nextfield));
- make_cleanup (xfree, new);
- memset (new, 0, sizeof (struct nextfield));
- new->next = fip->list;
- fip->list = new;
- FIELD_BITSIZE (new->field) = 0; /* This should be an unpacked
+ newobj = XCNEW (struct nextfield);
+ make_cleanup (xfree, newobj);
+
+ newobj->next = fip->list;
+ fip->list = newobj;
+ FIELD_BITSIZE (newobj->field) = 0; /* This should be an unpacked
field! */
STABS_CONTINUE (pp, objfile);
}
++(*pp);
- new->visibility = *(*pp)++;
- switch (new->visibility)
+ newobj->visibility = *(*pp)++;
+ switch (newobj->visibility)
{
case VISIBILITY_PRIVATE:
case VISIBILITY_PROTECTED:
{
complaint (&symfile_complaints,
_("Unknown visibility `%c' for baseclass"),
- new->visibility);
- new->visibility = VISIBILITY_PUBLIC;
+ newobj->visibility);
+ newobj->visibility = VISIBILITY_PUBLIC;
}
}
corresponding to this baseclass. Always zero in the absence of
multiple inheritance. */
- SET_FIELD_BITPOS (new->field, read_huge_number (pp, ',', &nbits, 0));
+ SET_FIELD_BITPOS (newobj->field, read_huge_number (pp, ',', &nbits, 0));
if (nbits != 0)
return 0;
}
base class. Read it, and remember it's type name as this
field's name. */
- new->field.type = read_type (pp, objfile);
- new->field.name = type_name_no_tag (new->field.type);
+ newobj->field.type = read_type (pp, objfile);
+ newobj->field.name = type_name_no_tag (newobj->field.type);
/* Skip trailing ';' and bump count of number of fields seen. */
if (**pp == ';')
*varargsp = 0;
}
- rval = (struct field *) xmalloc (n * sizeof (struct field));
- memset (rval, 0, n * sizeof (struct field));
+ rval = XCNEWVEC (struct field, n);
for (i = 0; i < n; i++)
rval[i].type = types[i];
*nargsp = n;
symbol for the common block name for later fixup. */
int i;
struct symbol *sym;
- struct pending *new = 0;
+ struct pending *newobj = 0;
struct pending *next;
int j;
next = next->next)
{
for (j = 0; j < next->nsyms; j++)
- add_symbol_to_list (next->symbol[j], &new);
+ add_symbol_to_list (next->symbol[j], &newobj);
}
/* Copy however much of COMMON_BLOCK we need. If COMMON_BLOCK is
if (common_block != NULL)
for (j = common_block_i; j < common_block->nsyms; j++)
- add_symbol_to_list (common_block->symbol[j], &new);
+ add_symbol_to_list (common_block->symbol[j], &newobj);
- SYMBOL_TYPE (sym) = (struct type *) new;
+ SYMBOL_TYPE (sym) = (struct type *) newobj;
/* Should we be putting local_symbols back to what it was?
Does it matter? */
struct pending *ppt;
int i;
/* Name of the type, without "struct" or "union". */
- const char *typename = TYPE_TAG_NAME (*type);
+ const char *type_name = TYPE_TAG_NAME (*type);
- if (typename == NULL)
+ if (type_name == NULL)
{
complaint (&symfile_complaints, _("need a type name"));
break;
&& (TYPE_INSTANCE_FLAGS (*type) ==
TYPE_INSTANCE_FLAGS (SYMBOL_TYPE (sym)))
&& strcmp (SYMBOL_LINKAGE_NAME (sym),
- typename) == 0)
+ type_name) == 0)
replace_type (*type, SYMBOL_TYPE (sym));
}
}
undef_types_allocated = 20;
undef_types_length = 0;
- undef_types = (struct type **)
- xmalloc (undef_types_allocated * sizeof (struct type *));
+ undef_types = XNEWVEC (struct type *, undef_types_allocated);
noname_undefs_allocated = 20;
noname_undefs_length = 0;
- noname_undefs = (struct nat *)
- xmalloc (noname_undefs_allocated * sizeof (struct nat));
+ noname_undefs = XNEWVEC (struct nat, noname_undefs_allocated);
stab_register_index = register_symbol_register_impl (LOC_REGISTER,
&stab_register_funcs);