2001-11-14 Michael Snyder <msnyder@redhat.com>

Add address space identifiers to expression language for types.
	* c-exp.y (space_identifier, cv_with_space_id,
	const_or_volatile_or_space_identifier_noopt,
	const_or_volatile_or_space_identifier): New terminals.
	(ptype): Accept const_or_volatile_or_space_identifier.
	(typebase): Accept const_or_volatile_or_space_identifier.
	* c-typeprint.c (c_type_print_cv_qualifier): Rename to
	c_type_print_modifier.  Handle address space modified types.
	* gdbtypes.h (TYPE_FLAG_CODE_SPACE, TYPE_FLAG_DATA_SPACE):
	New type flags.
	(struct type): Add new field as_type for addr-space qualified types.
	(TYPE_AS_TYPE): New macro, retrieves the chain of types that are
	identical to this one except for address-space qualification.
	* gdbtypes.c (alloc_type): Initialize new field 'as_type'.
	(address_space_name_to_int): New function.
	(address_space_int_to_name): New function.
	(make_type_with_address_space): New function.
	(make_cv_type): Handle as_type field of new struct type object.
	* parse.c (check_type_stack_depth): New function.
	(push_type_address_space): New function.
	(follow_types): Handle types with address-space qualifier.
	* parser-defs.h (enum type_pieces): Add enum tp_space_identifier.
This commit is contained in:
Michael Snyder 2001-11-15 01:55:59 +00:00
parent 73d074b4e2
commit 47663de598
7 changed files with 242 additions and 46 deletions

View file

@ -90,7 +90,8 @@ enum type_pieces
tp_array,
tp_function,
tp_const,
tp_volatile
tp_volatile,
tp_space_identifier
};
/* The stack can contain either an enum type_pieces or an int. */
union type_stack_elt
@ -141,6 +142,8 @@ extern void push_type (enum type_pieces);
extern void push_type_int (int);
extern void push_type_address_space (char *);
extern enum type_pieces pop_type (void);
extern int pop_type_int (void);