* Makefile.am: Use a temporary file to build chew.
[deliverable/binutils-gdb.git] / gdb / gdbtypes.h
index 3d8fbca073ef4cd915a80b7c3998a034f4eb136a..4fb970e0edbeb7b14a2cf86a060c288c3ed2ce35 100644 (file)
@@ -82,7 +82,27 @@ enum type_code
   {
     TYPE_CODE_UNDEF,           /* Not used; catches errors */
     TYPE_CODE_PTR,             /* Pointer type */
-    TYPE_CODE_ARRAY,           /* Array type with lower & upper bounds. */
+
+    /* Array type with lower & upper bounds.
+
+       Regardless of the language, GDB represents multidimensional
+       array types the way C does: as arrays of arrays.  So an
+       instance of a GDB array type T can always be seen as a series
+       of instances of TYPE_TARGET_TYPE (T) laid out sequentially in
+       memory.
+
+       Row-major languages like C lay out multi-dimensional arrays so
+       that incrementing the rightmost index in a subscripting
+       expression results in the smallest change in the address of the
+       element referred to.  Column-major languages like Fortran lay
+       them out so that incrementing the leftmost index results in the
+       smallest change.
+
+       This means that, in column-major languages, working our way
+       from type to target type corresponds to working through indices
+       from right to left, not left to right.  */
+    TYPE_CODE_ARRAY,
+
     TYPE_CODE_STRUCT,          /* C struct or Pascal record */
     TYPE_CODE_UNION,           /* C union or Pascal variant part */
     TYPE_CODE_ENUM,            /* Enumeration type */
@@ -273,6 +293,17 @@ enum type_code
 #define TYPE_ADDRESS_CLASS_ALL(t) (TYPE_INSTANCE_FLAGS(t) \
                                   & TYPE_FLAG_ADDRESS_CLASS_ALL)
 
+/* The debugging formats (especially STABS) do not contain enough information
+   to represent all Ada types---especially those whose size depends on
+   dynamic quantities.  Therefore, the GNAT Ada compiler includes
+   extra information in the form of additional type definitions
+   connected by naming conventions.  This flag indicates that the 
+   type is an ordinary (unencoded) GDB type that has been created from 
+   the necessary run-time information, and does not need further 
+   interpretation. Optionally marks ordinary, fixed-size GDB type. */
+
+#define TYPE_FLAG_FIXED_INSTANCE (1 << 15)
+
 /*  Array bound type.  */
 enum array_bound_type
 {
@@ -946,29 +977,10 @@ struct builtin_type
 
   /* Integral types.  */
 
-  /* Explicit sizes.  These are assumed to be 2's complement and in
-     the architecture's byte order.  The "int0" is for when an ISA
-     needs to describe a register that has no size.  The naming schema
-     is based on C9X <intypes.h>.  */
-  /* FIXME: cagney/2004-07-26: As with floating-point, there should be
-     explicit big, little and little-byte-big-word endian types that
-     exist outside of the architecture vector.  */
-  struct type *builtin_int0;
-  struct type *builtin_int8;
-  struct type *builtin_uint8;
-  struct type *builtin_int16;
-  struct type *builtin_uint16;
-  struct type *builtin_int32;
-  struct type *builtin_uint32;
-  struct type *builtin_int64;
-  struct type *builtin_uint64;
-  struct type *builtin_int128;
-  struct type *builtin_uint128;
-
   /* We use this for the '/c' print format, because c_char is just a
      one-byte integral type, which languages less laid back than C
      will print as ... well, a one-byte integral type.  */
-  struct type *true_char;
+  struct type *builtin_true_char;
 
   /* Implicit size/sign (based on the the architecture's ABI).  */
   struct type *builtin_void;
@@ -1060,17 +1072,27 @@ extern struct type *builtin_type_v8hi;
 extern struct type *builtin_type_v4hi;
 extern struct type *builtin_type_v2si;
 
-/* Type for 64 bit vectors. */
+/* Types for 64 bit vectors. */
+extern struct type *builtin_type_v2_float;
+extern struct type *builtin_type_v2_int32;
+extern struct type *builtin_type_v4_int16;
+extern struct type *builtin_type_v8_int8;
 extern struct type *builtin_type_vec64;
-extern struct type *builtin_type_vec64i;
 
-/* Type for 128 bit vectors. */
+/* Types for 128 bit vectors. */
+extern struct type *builtin_type_v2_double;
+extern struct type *builtin_type_v4_float;
+extern struct type *builtin_type_v2_int64;
+extern struct type *builtin_type_v4_int32;
+extern struct type *builtin_type_v8_int16;
+extern struct type *builtin_type_v16_int8;
 extern struct type *builtin_type_vec128;
-extern struct type *builtin_type_vec128i;
 
 /* Explicit floating-point formats.  See "floatformat.h".  */
+extern struct type *builtin_type_ieee_single[BFD_ENDIAN_UNKNOWN];
 extern struct type *builtin_type_ieee_single_big;
 extern struct type *builtin_type_ieee_single_little;
+extern struct type *builtin_type_ieee_double[BFD_ENDIAN_UNKNOWN];
 extern struct type *builtin_type_ieee_double_big;
 extern struct type *builtin_type_ieee_double_little;
 extern struct type *builtin_type_ieee_double_littlebyte_bigword;
@@ -1079,10 +1101,13 @@ extern struct type *builtin_type_m68881_ext;
 extern struct type *builtin_type_i960_ext;
 extern struct type *builtin_type_m88110_ext;
 extern struct type *builtin_type_m88110_harris_ext;
+extern struct type *builtin_type_arm_ext[BFD_ENDIAN_UNKNOWN];
 extern struct type *builtin_type_arm_ext_big;
 extern struct type *builtin_type_arm_ext_littlebyte_bigword;
+extern struct type *builtin_type_ia64_spill[BFD_ENDIAN_UNKNOWN];
 extern struct type *builtin_type_ia64_spill_big;
 extern struct type *builtin_type_ia64_spill_little;
+extern struct type *builtin_type_ia64_quad[BFD_ENDIAN_UNKNOWN];
 extern struct type *builtin_type_ia64_quad_big;
 extern struct type *builtin_type_ia64_quad_little;
 
@@ -1223,8 +1248,6 @@ extern struct type *check_typedef (struct type *);
 
 extern void check_stub_method_group (struct type *, int);
 
-extern struct type *lookup_primitive_typename (char *);
-
 extern char *gdb_mangle_name (struct type *, int, int);
 
 extern struct type *lookup_typename (char *, struct block *, int);
@@ -1332,7 +1355,7 @@ extern void recursive_dump_type (struct type *, int);
 
 /* printcmd.c */
 
-extern void print_scalar_formatted (void *, struct type *, int, int,
+extern void print_scalar_formatted (const void *, struct type *, int, int,
                                    struct ui_file *);
 
 extern int can_dereference (struct type *);
This page took 0.025055 seconds and 4 git commands to generate.