| Index: gdb/gdbtypes.h
|
| diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h
|
| index 17bfbc55b31dae69d80d980aa06befecd6b4f830..c7bef5fdd83e4babc889874ffea082fe769f4acc 100644
|
| --- a/gdb/gdbtypes.h
|
| +++ b/gdb/gdbtypes.h
|
| @@ -1,6 +1,6 @@
|
| /* Internal type definitions for GDB.
|
|
|
| - Copyright (C) 1992-2004, 2006-2012 Free Software Foundation, Inc.
|
| + Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
|
|
| Contributed by Cygnus Support, using pieces from other GDB modules.
|
|
|
| @@ -58,7 +58,8 @@ typedef struct
|
|
|
| enum type_code
|
| {
|
| - TYPE_CODE_UNDEF, /* Not used; catches errors */
|
| + TYPE_CODE_BITSTRING = -1, /* Deprecated */
|
| + TYPE_CODE_UNDEF = 0, /* Not used; catches errors */
|
| TYPE_CODE_PTR, /* Pointer type */
|
|
|
| /* Array type with lower & upper bounds.
|
| @@ -109,10 +110,6 @@ enum type_code
|
| a new type code. */
|
| TYPE_CODE_STRING,
|
|
|
| - /* String of bits; like TYPE_CODE_SET but prints differently (at
|
| - least for (the deleted) CHILL). */
|
| - TYPE_CODE_BITSTRING,
|
| -
|
| /* Unknown type. The length field is valid if we were able to
|
| deduce that much about the type, or 0 if we don't even know that. */
|
| TYPE_CODE_ERROR,
|
| @@ -172,18 +169,18 @@ enum type_code
|
|
|
| enum type_flag_value
|
| {
|
| - TYPE_FLAG_UNSIGNED = (1 << 7),
|
| - TYPE_FLAG_NOSIGN = (1 << 8),
|
| - TYPE_FLAG_STUB = (1 << 9),
|
| - TYPE_FLAG_TARGET_STUB = (1 << 10),
|
| - TYPE_FLAG_STATIC = (1 << 11),
|
| - TYPE_FLAG_PROTOTYPED = (1 << 12),
|
| - TYPE_FLAG_INCOMPLETE = (1 << 13),
|
| - TYPE_FLAG_VARARGS = (1 << 14),
|
| - TYPE_FLAG_VECTOR = (1 << 15),
|
| - TYPE_FLAG_FIXED_INSTANCE = (1 << 16),
|
| - TYPE_FLAG_STUB_SUPPORTED = (1 << 17),
|
| - TYPE_FLAG_GNU_IFUNC = (1 << 18),
|
| + TYPE_FLAG_UNSIGNED = (1 << 8),
|
| + TYPE_FLAG_NOSIGN = (1 << 9),
|
| + TYPE_FLAG_STUB = (1 << 10),
|
| + TYPE_FLAG_TARGET_STUB = (1 << 11),
|
| + TYPE_FLAG_STATIC = (1 << 12),
|
| + TYPE_FLAG_PROTOTYPED = (1 << 13),
|
| + TYPE_FLAG_INCOMPLETE = (1 << 14),
|
| + TYPE_FLAG_VARARGS = (1 << 15),
|
| + TYPE_FLAG_VECTOR = (1 << 16),
|
| + TYPE_FLAG_FIXED_INSTANCE = (1 << 17),
|
| + TYPE_FLAG_STUB_SUPPORTED = (1 << 18),
|
| + TYPE_FLAG_GNU_IFUNC = (1 << 19),
|
|
|
| /* Used for error-checking. */
|
| TYPE_FLAG_MIN = TYPE_FLAG_UNSIGNED
|
| @@ -201,6 +198,7 @@ enum type_instance_flag_value
|
| TYPE_INSTANCE_FLAG_ADDRESS_CLASS_1 = (1 << 4),
|
| TYPE_INSTANCE_FLAG_ADDRESS_CLASS_2 = (1 << 5),
|
| TYPE_INSTANCE_FLAG_NOTTEXT = (1 << 6),
|
| + TYPE_INSTANCE_FLAG_RESTRICT = (1 << 7)
|
| };
|
|
|
| /* Unsigned integer type. If this is not set for a TYPE_CODE_INT, the
|
| @@ -322,6 +320,12 @@ enum type_instance_flag_value
|
| #define TYPE_VOLATILE(t) \
|
| (TYPE_INSTANCE_FLAGS (t) & TYPE_INSTANCE_FLAG_VOLATILE)
|
|
|
| +/* Restrict type. If this is set, the corresponding type has a
|
| + restrict modifier. */
|
| +
|
| +#define TYPE_RESTRICT(t) \
|
| + (TYPE_INSTANCE_FLAGS (t) & TYPE_INSTANCE_FLAG_RESTRICT)
|
| +
|
| /* Instruction-space delimited type. This is for Harvard architectures
|
| which have separate instruction and data address spaces (and perhaps
|
| others).
|
| @@ -840,8 +844,12 @@ struct cplus_struct_type
|
| to reconstruct the rest of the fields). */
|
| unsigned int is_stub:1;
|
|
|
| + /* True if this function is a constructor, false
|
| + otherwise. */
|
| + unsigned int is_constructor : 1;
|
| +
|
| /* Unused. */
|
| - unsigned int dummy:4;
|
| + unsigned int dummy:3;
|
|
|
| /* Index into that baseclass's virtual function table,
|
| minus 2; else if static: VOFFSET_STATIC; else: 0. */
|
| @@ -856,15 +864,6 @@ struct cplus_struct_type
|
| }
|
| *fn_fieldlists;
|
|
|
| - /* Pointer to information about enclosing scope, if this is a
|
| - local type. If it is not a local type, this is NULL. */
|
| - struct local_type_info
|
| - {
|
| - char *file;
|
| - int line;
|
| - }
|
| - *localtype_ptr;
|
| -
|
| /* typedefs defined inside this class. TYPEDEF_FIELD points to an array of
|
| TYPEDEF_FIELD_COUNT elements. */
|
| struct typedef_field
|
| @@ -1224,15 +1223,12 @@ extern void allocate_gnat_aux_type (struct type *);
|
| #define TYPE_FN_FIELD_ARTIFICIAL(thisfn, n) ((thisfn)[n].is_artificial)
|
| #define TYPE_FN_FIELD_ABSTRACT(thisfn, n) ((thisfn)[n].is_abstract)
|
| #define TYPE_FN_FIELD_STUB(thisfn, n) ((thisfn)[n].is_stub)
|
| +#define TYPE_FN_FIELD_CONSTRUCTOR(thisfn, n) ((thisfn)[n].is_constructor)
|
| #define TYPE_FN_FIELD_FCONTEXT(thisfn, n) ((thisfn)[n].fcontext)
|
| #define TYPE_FN_FIELD_VOFFSET(thisfn, n) ((thisfn)[n].voffset-2)
|
| #define TYPE_FN_FIELD_VIRTUAL_P(thisfn, n) ((thisfn)[n].voffset > 1)
|
| #define TYPE_FN_FIELD_STATIC_P(thisfn, n) ((thisfn)[n].voffset == VOFFSET_STATIC)
|
|
|
| -#define TYPE_LOCALTYPE_PTR(thistype) (TYPE_CPLUS_SPECIFIC(thistype)->localtype_ptr)
|
| -#define TYPE_LOCALTYPE_FILE(thistype) (TYPE_CPLUS_SPECIFIC(thistype)->localtype_ptr->file)
|
| -#define TYPE_LOCALTYPE_LINE(thistype) (TYPE_CPLUS_SPECIFIC(thistype)->localtype_ptr->line)
|
| -
|
| #define TYPE_TYPEDEF_FIELD_ARRAY(thistype) \
|
| TYPE_CPLUS_SPECIFIC (thistype)->typedef_field
|
| #define TYPE_TYPEDEF_FIELD(thistype, n) \
|
| @@ -1435,8 +1431,12 @@ extern struct type *alloc_type_copy (const struct type *);
|
| objfile's architecture is returned. */
|
| extern struct gdbarch *get_type_arch (const struct type *);
|
|
|
| +/* This returns the target type (or NULL) of TYPE, also skipping
|
| + past typedefs. */
|
| +extern struct type *get_target_type (struct type *type);
|
| +
|
| /* Helper function to construct objfile-owned types. */
|
| -extern struct type *init_type (enum type_code, int, int, char *,
|
| +extern struct type *init_type (enum type_code, int, int, const char *,
|
| struct objfile *);
|
|
|
| /* Helper functions to construct architecture-owned types. */
|
| @@ -1482,6 +1482,8 @@ extern struct type *make_reference_type (struct type *, struct type **);
|
|
|
| extern struct type *make_cv_type (int, int, struct type *, struct type **);
|
|
|
| +extern struct type *make_restrict_type (struct type *);
|
| +
|
| extern void replace_type (struct type *, struct type *);
|
|
|
| extern int address_space_name_to_int (struct gdbarch *, char *);
|
| @@ -1510,7 +1512,7 @@ extern const char *type_name_no_tag (const struct type *);
|
|
|
| extern const char *type_name_no_tag_or_error (struct type *type);
|
|
|
| -extern struct type *lookup_struct_elt_type (struct type *, char *, int);
|
| +extern struct type *lookup_struct_elt_type (struct type *, const char *, int);
|
|
|
| extern struct type *make_pointer_type (struct type *, struct type **);
|
|
|
| @@ -1529,11 +1531,11 @@ extern struct type *create_range_type (struct type *, struct type *, LONGEST,
|
|
|
| extern struct type *create_array_type (struct type *, struct type *,
|
| struct type *);
|
| -extern struct type *lookup_array_range_type (struct type *, int, int);
|
| +extern struct type *lookup_array_range_type (struct type *, LONGEST, LONGEST);
|
|
|
| extern struct type *create_string_type (struct type *, struct type *,
|
| struct type *);
|
| -extern struct type *lookup_string_range_type (struct type *, int, int);
|
| +extern struct type *lookup_string_range_type (struct type *, LONGEST, LONGEST);
|
|
|
| extern struct type *create_set_type (struct type *, struct type *);
|
|
|
| @@ -1559,7 +1561,7 @@ extern struct type *lookup_typename (const struct language_defn *,
|
| const struct block *, int);
|
|
|
| extern struct type *lookup_template_type (char *, struct type *,
|
| - struct block *);
|
| + const struct block *);
|
|
|
| extern int get_vptr_fieldno (struct type *, struct type **);
|
|
|
| @@ -1606,8 +1608,8 @@ extern const struct rank FLOAT_CONVERSION_BADNESS;
|
| extern const struct rank INT_FLOAT_CONVERSION_BADNESS;
|
| /* Badness of conversion of pointer to void pointer. */
|
| extern const struct rank VOID_PTR_CONVERSION_BADNESS;
|
| -/* Badness of conversion of pointer to boolean. */
|
| -extern const struct rank BOOL_PTR_CONVERSION_BADNESS;
|
| +/* Badness of conversion to boolean. */
|
| +extern const struct rank BOOL_CONVERSION_BADNESS;
|
| /* Badness of converting derived to base class. */
|
| extern const struct rank BASE_CONVERSION_BADNESS;
|
| /* Badness of converting from non-reference to reference. */
|
| @@ -1619,6 +1621,9 @@ extern const struct rank NULL_POINTER_CONVERSION;
|
| /* Converting a pointer to an int is usually OK. */
|
| extern const struct rank NS_POINTER_CONVERSION_BADNESS;
|
|
|
| +/* Badness of converting a (non-zero) integer constant
|
| + to a pointer. */
|
| +extern const struct rank NS_INTEGER_POINTER_CONVERSION_BADNESS;
|
|
|
| extern struct rank sum_ranks (struct rank a, struct rank b);
|
| extern int compare_ranks (struct rank a, struct rank b);
|
| @@ -1657,4 +1662,8 @@ extern struct type *copy_type_recursive (struct objfile *objfile,
|
|
|
| extern struct type *copy_type (const struct type *type);
|
|
|
| +extern int types_equal (struct type *, struct type *);
|
| +
|
| +extern int types_deeply_equal (struct type *, struct type *);
|
| +
|
| #endif /* GDBTYPES_H */
|
|
|