X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fgdbtypes.h;h=8b340a32bca002d1b578c5d4e9aed083896b26c2;hb=46212e0bb5c0c74454045ef9410f80f1c9b44ddd;hp=3b4edea21e4b9682faf285d1d3059e318f3a1fc4;hpb=836bf45453d96e2e4020982e1a44e22498d766fa;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h index 3b4edea21e..8b340a32bc 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) \ @@ -1482,6 +1478,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 *); @@ -1520,16 +1518,20 @@ extern struct type *make_function_type (struct type *, struct type **); extern struct type *lookup_function_type (struct type *); +extern struct type *lookup_function_type_with_arguments (struct type *, + int, + struct type **); + extern struct type *create_range_type (struct type *, struct type *, LONGEST, 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 *); @@ -1555,7 +1557,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 **); @@ -1602,8 +1604,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. */ @@ -1615,6 +1617,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); @@ -1653,4 +1658,6 @@ 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 *); + #endif /* GDBTYPES_H */