/* XML target description support for GDB.
- Copyright (C) 2006
- Free Software Foundation, Inc.
+ Copyright (C) 2006, 2008, 2009 Free Software Foundation, Inc.
Contributed by CodeSourcery.
for (i = 0; i < TYPE_NFIELDS (data->current_union); i++)
if (TYPE_VECTOR (TYPE_FIELD_TYPE (data->current_union, i)))
{
- TYPE_FLAGS (data->current_union) |= TYPE_FLAG_VECTOR;
+ TYPE_VECTOR (data->current_union) = 1;
break;
}
}
gdb_xml_error (parser, _("Vector \"%s\" references undefined type \"%s\""),
id, field_type_id);
- /* A vector is just an array plus a special flag. */
- range_type = create_range_type (NULL, builtin_type_int, 0, count - 1);
- type = create_array_type (NULL, field_type, range_type);
+ type = init_vector_type (field_type, count);
TYPE_NAME (type) = xstrdup (id);
- TYPE_FLAGS (type) |= TYPE_FLAG_VECTOR;
-
tdesc_record_type (data->current_feature, type);
}
#endif /* HAVE_LIBEXPAT */
\f
-/* Close FILE. */
-
-static void
-do_cleanup_fclose (void *file)
-{
- fclose (file);
-}
-
/* Open FILENAME, read all its text into memory, close it, and return
the text. If something goes wrong, return NULL and warn. */
if (dirname && *dirname)
{
- char *fullname = concat (dirname, "/", filename, NULL);
+ char *fullname = concat (dirname, "/", filename, (char *) NULL);
if (fullname == NULL)
nomem (0);
file = fopen (fullname, FOPEN_RT);
if (file == NULL)
return NULL;
- back_to = make_cleanup (do_cleanup_fclose, file);
+ back_to = make_cleanup_fclose (file);
/* Read in the whole file, one chunk at a time. */
len = 4096;