Remove unused and incorrect macro TYPE_FN_FIELDS.
[external/binutils.git] / gdb / gdbtypes.h
1
2 /* Internal type definitions for GDB.
3
4    Copyright (C) 1992-2014 Free Software Foundation, Inc.
5
6    Contributed by Cygnus Support, using pieces from other GDB modules.
7
8    This file is part of GDB.
9
10    This program is free software; you can redistribute it and/or modify
11    it under the terms of the GNU General Public License as published by
12    the Free Software Foundation; either version 3 of the License, or
13    (at your option) any later version.
14
15    This program is distributed in the hope that it will be useful,
16    but WITHOUT ANY WARRANTY; without even the implied warranty of
17    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18    GNU General Public License for more details.
19
20    You should have received a copy of the GNU General Public License
21    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
22
23 #if !defined (GDBTYPES_H)
24 #define GDBTYPES_H 1
25
26 /* * \page gdbtypes GDB Types
27
28    GDB represents all the different kinds of types in programming
29    languages using a common representation defined in gdbtypes.h.
30
31    The main data structure is main_type; it consists of a code (such
32    as TYPE_CODE_ENUM for enumeration types), a number of
33    generally-useful fields such as the printable name, and finally a
34    field type_specific that is a union of info specific to particular
35    languages or other special cases (such as calling convention).
36
37    The available type codes are defined in enum type_code.  The enum
38    includes codes both for types that are common across a variety
39    of languages, and for types that are language-specific.
40
41    Most accesses to type fields go through macros such as TYPE_CODE
42    and TYPE_FN_FIELD_CONST.  These are written such that they can be
43    used as both rvalues and lvalues.
44  */
45
46 #include "hashtab.h"
47
48 /* Forward declarations for prototypes.  */
49 struct field;
50 struct block;
51 struct value_print_options;
52 struct language_defn;
53
54 /* These declarations are DWARF-specific as some of the gdbtypes.h data types
55    are already DWARF-specific.  */
56
57 /* * Offset relative to the start of its containing CU (compilation
58    unit).  */
59 typedef struct
60 {
61   unsigned int cu_off;
62 } cu_offset;
63
64 /* * Offset relative to the start of its .debug_info or .debug_types
65    section.  */
66
67 typedef struct
68 {
69   unsigned int sect_off;
70 } sect_offset;
71
72 /* Some macros for char-based bitfields.  */
73
74 #define B_SET(a,x)      ((a)[(x)>>3] |= (1 << ((x)&7)))
75 #define B_CLR(a,x)      ((a)[(x)>>3] &= ~(1 << ((x)&7)))
76 #define B_TST(a,x)      ((a)[(x)>>3] & (1 << ((x)&7)))
77 #define B_TYPE          unsigned char
78 #define B_BYTES(x)      ( 1 + ((x)>>3) )
79 #define B_CLRALL(a,x)   memset ((a), 0, B_BYTES(x))
80
81 /* * Different kinds of data types are distinguished by the `code'
82    field.  */
83
84 enum type_code
85   {
86     TYPE_CODE_BITSTRING = -1,   /**< Deprecated  */
87     TYPE_CODE_UNDEF = 0,        /**< Not used; catches errors */
88     TYPE_CODE_PTR,              /**< Pointer type */
89
90     /* * Array type with lower & upper bounds.
91
92        Regardless of the language, GDB represents multidimensional
93        array types the way C does: as arrays of arrays.  So an
94        instance of a GDB array type T can always be seen as a series
95        of instances of TYPE_TARGET_TYPE (T) laid out sequentially in
96        memory.
97
98        Row-major languages like C lay out multi-dimensional arrays so
99        that incrementing the rightmost index in a subscripting
100        expression results in the smallest change in the address of the
101        element referred to.  Column-major languages like Fortran lay
102        them out so that incrementing the leftmost index results in the
103        smallest change.
104
105        This means that, in column-major languages, working our way
106        from type to target type corresponds to working through indices
107        from right to left, not left to right.  */
108     TYPE_CODE_ARRAY,
109
110     TYPE_CODE_STRUCT,           /**< C struct or Pascal record */
111     TYPE_CODE_UNION,            /**< C union or Pascal variant part */
112     TYPE_CODE_ENUM,             /**< Enumeration type */
113     TYPE_CODE_FLAGS,            /**< Bit flags type */
114     TYPE_CODE_FUNC,             /**< Function type */
115     TYPE_CODE_INT,              /**< Integer type */
116
117     /* * Floating type.  This is *NOT* a complex type.  Beware, there
118        are parts of GDB which bogusly assume that TYPE_CODE_FLT can
119        mean complex.  */
120     TYPE_CODE_FLT,
121
122     /* * Void type.  The length field specifies the length (probably
123        always one) which is used in pointer arithmetic involving
124        pointers to this type, but actually dereferencing such a
125        pointer is invalid; a void type has no length and no actual
126        representation in memory or registers.  A pointer to a void
127        type is a generic pointer.  */
128     TYPE_CODE_VOID,
129
130     TYPE_CODE_SET,              /**< Pascal sets */
131     TYPE_CODE_RANGE,            /**< Range (integers within spec'd bounds).  */
132
133     /* * A string type which is like an array of character but prints
134        differently (at least for (the deleted) CHILL).  It does not
135        contain a length field as Pascal strings (for many Pascals,
136        anyway) do; if we want to deal with such strings, we should use
137        a new type code.  */
138     TYPE_CODE_STRING,
139
140     /* * Unknown type.  The length field is valid if we were able to
141        deduce that much about the type, or 0 if we don't even know
142        that.  */
143     TYPE_CODE_ERROR,
144
145     /* C++ */
146     TYPE_CODE_METHOD,           /**< Method type */
147
148     /* * Pointer-to-member-function type.  This describes how to access a
149        particular member function of a class (possibly a virtual
150        member function).  The representation may vary between different
151        C++ ABIs.  */
152     TYPE_CODE_METHODPTR,
153
154     /* * Pointer-to-member type.  This is the offset within a class to
155        some particular data member.  The only currently supported
156        representation uses an unbiased offset, with -1 representing
157        NULL; this is used by the Itanium C++ ABI (used by GCC on all
158        platforms).  */
159     TYPE_CODE_MEMBERPTR,
160
161     TYPE_CODE_REF,              /**< C++ Reference types */
162
163     TYPE_CODE_CHAR,             /**< *real* character type */
164
165     /* * Boolean type.  0 is false, 1 is true, and other values are
166        non-boolean (e.g. FORTRAN "logical" used as unsigned int).  */
167     TYPE_CODE_BOOL,
168
169     /* Fortran */
170     TYPE_CODE_COMPLEX,          /**< Complex float */
171
172     TYPE_CODE_TYPEDEF,
173
174     TYPE_CODE_NAMESPACE,        /**< C++ namespace.  */
175
176     TYPE_CODE_DECFLOAT,         /**< Decimal floating point.  */
177
178     TYPE_CODE_MODULE,           /**< Fortran module.  */
179
180     /* * Internal function type.  */
181     TYPE_CODE_INTERNAL_FUNCTION
182   };
183
184 /* * For now allow source to use TYPE_CODE_CLASS for C++ classes, as
185    an alias for TYPE_CODE_STRUCT.  This is for DWARF, which has a
186    distinct "class" attribute.  Perhaps we should actually have a
187    separate TYPE_CODE so that we can print "class" or "struct"
188    depending on what the debug info said.  It's not clear we should
189    bother.  */
190
191 #define TYPE_CODE_CLASS TYPE_CODE_STRUCT
192
193 /* * Some constants representing each bit field in the main_type.  See
194    the bit-field-specific macros, below, for documentation of each
195    constant in this enum.  These enum values are only used with
196    init_type.  Note that the values are chosen not to conflict with
197    type_instance_flag_value; this lets init_type error-check its
198    input.  */
199
200 enum type_flag_value
201 {
202   TYPE_FLAG_UNSIGNED = (1 << 8),
203   TYPE_FLAG_NOSIGN = (1 << 9),
204   TYPE_FLAG_STUB = (1 << 10),
205   TYPE_FLAG_TARGET_STUB = (1 << 11),
206   TYPE_FLAG_STATIC = (1 << 12),
207   TYPE_FLAG_PROTOTYPED = (1 << 13),
208   TYPE_FLAG_INCOMPLETE = (1 << 14),
209   TYPE_FLAG_VARARGS = (1 << 15),
210   TYPE_FLAG_VECTOR = (1 << 16),
211   TYPE_FLAG_FIXED_INSTANCE = (1 << 17),
212   TYPE_FLAG_STUB_SUPPORTED = (1 << 18),
213   TYPE_FLAG_GNU_IFUNC = (1 << 19),
214
215   /* * Used for error-checking.  */
216   TYPE_FLAG_MIN = TYPE_FLAG_UNSIGNED
217 };
218
219 /* * Some bits for the type's instance_flags word.  See the macros
220    below for documentation on each bit.  Note that if you add a value
221    here, you must update the enum type_flag_value as well.  */
222
223 enum type_instance_flag_value
224 {
225   TYPE_INSTANCE_FLAG_CONST = (1 << 0),
226   TYPE_INSTANCE_FLAG_VOLATILE = (1 << 1),
227   TYPE_INSTANCE_FLAG_CODE_SPACE = (1 << 2),
228   TYPE_INSTANCE_FLAG_DATA_SPACE = (1 << 3),
229   TYPE_INSTANCE_FLAG_ADDRESS_CLASS_1 = (1 << 4),
230   TYPE_INSTANCE_FLAG_ADDRESS_CLASS_2 = (1 << 5),
231   TYPE_INSTANCE_FLAG_NOTTEXT = (1 << 6),
232   TYPE_INSTANCE_FLAG_RESTRICT = (1 << 7)
233 };
234
235 /* * Unsigned integer type.  If this is not set for a TYPE_CODE_INT,
236    the type is signed (unless TYPE_FLAG_NOSIGN (below) is set).  */
237
238 #define TYPE_UNSIGNED(t)        (TYPE_MAIN_TYPE (t)->flag_unsigned)
239
240 /* * No sign for this type.  In C++, "char", "signed char", and
241    "unsigned char" are distinct types; so we need an extra flag to
242    indicate the absence of a sign!  */
243
244 #define TYPE_NOSIGN(t)          (TYPE_MAIN_TYPE (t)->flag_nosign)
245
246 /* * This appears in a type's flags word if it is a stub type (e.g.,
247    if someone referenced a type that wasn't defined in a source file
248    via (struct sir_not_appearing_in_this_film *)).  */
249
250 #define TYPE_STUB(t)            (TYPE_MAIN_TYPE (t)->flag_stub)
251
252 /* * The target type of this type is a stub type, and this type needs
253    to be updated if it gets un-stubbed in check_typedef.  Used for
254    arrays and ranges, in which TYPE_LENGTH of the array/range gets set
255    based on the TYPE_LENGTH of the target type.  Also, set for
256    TYPE_CODE_TYPEDEF.  */
257
258 #define TYPE_TARGET_STUB(t)     (TYPE_MAIN_TYPE (t)->flag_target_stub)
259
260 /* * Static type.  If this is set, the corresponding type had 
261    a static modifier.
262    Note: This may be unnecessary, since static data members
263    are indicated by other means (bitpos == -1).  */
264
265 #define TYPE_STATIC(t)          (TYPE_MAIN_TYPE (t)->flag_static)
266
267 /* * This is a function type which appears to have a prototype.  We
268    need this for function calls in order to tell us if it's necessary
269    to coerce the args, or to just do the standard conversions.  This
270    is used with a short field.  */
271
272 #define TYPE_PROTOTYPED(t)      (TYPE_MAIN_TYPE (t)->flag_prototyped)
273
274 /* * This flag is used to indicate that processing for this type
275    is incomplete.
276
277    (Mostly intended for HP platforms, where class methods, for
278    instance, can be encountered before their classes in the debug
279    info; the incomplete type has to be marked so that the class and
280    the method can be assigned correct types.)  */
281
282 #define TYPE_INCOMPLETE(t)      (TYPE_MAIN_TYPE (t)->flag_incomplete)
283
284 /* * FIXME drow/2002-06-03:  Only used for methods, but applies as well
285    to functions.  */
286
287 #define TYPE_VARARGS(t)         (TYPE_MAIN_TYPE (t)->flag_varargs)
288
289 /* * Identify a vector type.  Gcc is handling this by adding an extra
290    attribute to the array type.  We slurp that in as a new flag of a
291    type.  This is used only in dwarf2read.c.  */
292 #define TYPE_VECTOR(t)          (TYPE_MAIN_TYPE (t)->flag_vector)
293
294 /* * The debugging formats (especially STABS) do not contain enough
295    information to represent all Ada types---especially those whose
296    size depends on dynamic quantities.  Therefore, the GNAT Ada
297    compiler includes extra information in the form of additional type
298    definitions connected by naming conventions.  This flag indicates
299    that the type is an ordinary (unencoded) GDB type that has been
300    created from the necessary run-time information, and does not need
301    further interpretation.  Optionally marks ordinary, fixed-size GDB
302    type.  */
303
304 #define TYPE_FIXED_INSTANCE(t) (TYPE_MAIN_TYPE (t)->flag_fixed_instance)
305
306 /* * This debug target supports TYPE_STUB(t).  In the unsupported case
307    we have to rely on NFIELDS to be zero etc., see TYPE_IS_OPAQUE().
308    TYPE_STUB(t) with !TYPE_STUB_SUPPORTED(t) may exist if we only
309    guessed the TYPE_STUB(t) value (see dwarfread.c).  */
310
311 #define TYPE_STUB_SUPPORTED(t)   (TYPE_MAIN_TYPE (t)->flag_stub_supported)
312
313 /* * Not textual.  By default, GDB treats all single byte integers as
314    characters (or elements of strings) unless this flag is set.  */
315
316 #define TYPE_NOTTEXT(t) (TYPE_INSTANCE_FLAGS (t) & TYPE_INSTANCE_FLAG_NOTTEXT)
317
318 /* * Used only for TYPE_CODE_FUNC where it specifies the real function
319    address is returned by this function call.  TYPE_TARGET_TYPE
320    determines the final returned function type to be presented to
321    user.  */
322
323 #define TYPE_GNU_IFUNC(t)       (TYPE_MAIN_TYPE (t)->flag_gnu_ifunc)
324
325 /* * Type owner.  If TYPE_OBJFILE_OWNED is true, the type is owned by
326    the objfile retrieved as TYPE_OBJFILE.  Otherweise, the type is
327    owned by an architecture; TYPE_OBJFILE is NULL in this case.  */
328
329 #define TYPE_OBJFILE_OWNED(t) (TYPE_MAIN_TYPE (t)->flag_objfile_owned)
330 #define TYPE_OWNER(t) TYPE_MAIN_TYPE(t)->owner
331 #define TYPE_OBJFILE(t) (TYPE_OBJFILE_OWNED(t)? TYPE_OWNER(t).objfile : NULL)
332
333 /* * True if this type was declared using the "class" keyword.  This is
334    only valid for C++ structure and enum types.  If false, a structure
335    was declared as a "struct"; if true it was declared "class".  For
336    enum types, this is true when "enum class" or "enum struct" was
337    used to declare the type..  */
338
339 #define TYPE_DECLARED_CLASS(t) (TYPE_MAIN_TYPE (t)->flag_declared_class)
340
341 /* * True if this type is a "flag" enum.  A flag enum is one where all
342    the values are pairwise disjoint when "and"ed together.  This
343    affects how enum values are printed.  */
344
345 #define TYPE_FLAG_ENUM(t) (TYPE_MAIN_TYPE (t)->flag_flag_enum)
346
347 /* * Constant type.  If this is set, the corresponding type has a
348    const modifier.  */
349
350 #define TYPE_CONST(t) (TYPE_INSTANCE_FLAGS (t) & TYPE_INSTANCE_FLAG_CONST)
351
352 /* * Volatile type.  If this is set, the corresponding type has a
353    volatile modifier.  */
354
355 #define TYPE_VOLATILE(t) \
356   (TYPE_INSTANCE_FLAGS (t) & TYPE_INSTANCE_FLAG_VOLATILE)
357
358 /* * Restrict type.  If this is set, the corresponding type has a
359    restrict modifier.  */
360
361 #define TYPE_RESTRICT(t) \
362   (TYPE_INSTANCE_FLAGS (t) & TYPE_INSTANCE_FLAG_RESTRICT)
363
364 /* * Instruction-space delimited type.  This is for Harvard architectures
365    which have separate instruction and data address spaces (and perhaps
366    others).
367
368    GDB usually defines a flat address space that is a superset of the
369    architecture's two (or more) address spaces, but this is an extension
370    of the architecture's model.
371
372    If TYPE_FLAG_INST is set, an object of the corresponding type
373    resides in instruction memory, even if its address (in the extended
374    flat address space) does not reflect this.
375
376    Similarly, if TYPE_FLAG_DATA is set, then an object of the 
377    corresponding type resides in the data memory space, even if
378    this is not indicated by its (flat address space) address.
379
380    If neither flag is set, the default space for functions / methods
381    is instruction space, and for data objects is data memory.  */
382
383 #define TYPE_CODE_SPACE(t) \
384   (TYPE_INSTANCE_FLAGS (t) & TYPE_INSTANCE_FLAG_CODE_SPACE)
385
386 #define TYPE_DATA_SPACE(t) \
387   (TYPE_INSTANCE_FLAGS (t) & TYPE_INSTANCE_FLAG_DATA_SPACE)
388
389 /* * Address class flags.  Some environments provide for pointers
390    whose size is different from that of a normal pointer or address
391    types where the bits are interpreted differently than normal
392    addresses.  The TYPE_FLAG_ADDRESS_CLASS_n flags may be used in
393    target specific ways to represent these different types of address
394    classes.  */
395
396 #define TYPE_ADDRESS_CLASS_1(t) (TYPE_INSTANCE_FLAGS(t) \
397                                  & TYPE_INSTANCE_FLAG_ADDRESS_CLASS_1)
398 #define TYPE_ADDRESS_CLASS_2(t) (TYPE_INSTANCE_FLAGS(t) \
399                                  & TYPE_INSTANCE_FLAG_ADDRESS_CLASS_2)
400 #define TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL \
401   (TYPE_INSTANCE_FLAG_ADDRESS_CLASS_1 | TYPE_INSTANCE_FLAG_ADDRESS_CLASS_2)
402 #define TYPE_ADDRESS_CLASS_ALL(t) (TYPE_INSTANCE_FLAGS(t) \
403                                    & TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
404
405 /* * Used to store a dynamic property.  */
406
407 struct dynamic_prop
408 {
409   /* Determine which field of the union dynamic_prop.data is used.  */
410   enum
411   {
412     PROP_UNDEFINED, /* Not defined.  */
413     PROP_CONST,     /* Constant.  */
414     PROP_LOCEXPR,   /* Location expression.  */
415     PROP_LOCLIST    /* Location list.  */
416   } kind;
417
418   /* Storage for dynamic or static value.  */
419   union data
420   {
421     /* Storage for constant property.  */
422
423     LONGEST const_val;
424
425     /* Storage for dynamic property.  */
426
427     void *baton;
428   } data;
429 };
430
431
432 /* * Determine which field of the union main_type.fields[x].loc is
433    used.  */
434
435 enum field_loc_kind
436   {
437     FIELD_LOC_KIND_BITPOS,      /**< bitpos */
438     FIELD_LOC_KIND_ENUMVAL,     /**< enumval */
439     FIELD_LOC_KIND_PHYSADDR,    /**< physaddr */
440     FIELD_LOC_KIND_PHYSNAME,    /**< physname */
441     FIELD_LOC_KIND_DWARF_BLOCK  /**< dwarf_block */
442   };
443
444 /* * A discriminant to determine which field in the
445    main_type.type_specific union is being used, if any.
446
447    For types such as TYPE_CODE_FLT or TYPE_CODE_FUNC, the use of this
448    discriminant is really redundant, as we know from the type code
449    which field is going to be used.  As such, it would be possible to
450    reduce the size of this enum in order to save a bit or two for
451    other fields of struct main_type.  But, since we still have extra
452    room , and for the sake of clarity and consistency, we treat all fields
453    of the union the same way.  */
454
455 enum type_specific_kind
456 {
457   TYPE_SPECIFIC_NONE,
458   TYPE_SPECIFIC_CPLUS_STUFF,
459   TYPE_SPECIFIC_GNAT_STUFF,
460   TYPE_SPECIFIC_FLOATFORMAT,
461   TYPE_SPECIFIC_FUNC
462 };
463
464 /* * Main structure representing a type in GDB.
465
466    This structure is space-critical.  Its layout has been tweaked to
467    reduce the space used.  */
468
469 struct main_type
470 {
471   /* * Code for kind of type.  */
472
473   ENUM_BITFIELD(type_code) code : 8;
474
475   /* * Flags about this type.  These fields appear at this location
476      because they packs nicely here.  See the TYPE_* macros for
477      documentation about these fields.  */
478
479   unsigned int flag_unsigned : 1;
480   unsigned int flag_nosign : 1;
481   unsigned int flag_stub : 1;
482   unsigned int flag_target_stub : 1;
483   unsigned int flag_static : 1;
484   unsigned int flag_prototyped : 1;
485   unsigned int flag_incomplete : 1;
486   unsigned int flag_varargs : 1;
487   unsigned int flag_vector : 1;
488   unsigned int flag_stub_supported : 1;
489   unsigned int flag_gnu_ifunc : 1;
490   unsigned int flag_fixed_instance : 1;
491   unsigned int flag_objfile_owned : 1;
492
493   /* * True if this type was declared with "class" rather than
494      "struct".  */
495
496   unsigned int flag_declared_class : 1;
497
498   /* * True if this is an enum type with disjoint values.  This
499      affects how the enum is printed.  */
500
501   unsigned int flag_flag_enum : 1;
502
503   /* * A discriminant telling us which field of the type_specific
504      union is being used for this type, if any.  */
505
506   ENUM_BITFIELD(type_specific_kind) type_specific_field : 3;
507
508   /* * Number of fields described for this type.  This field appears
509      at this location because it packs nicely here.  */
510
511   short nfields;
512
513   /* * Field number of the virtual function table pointer in
514      VPTR_BASETYPE.  If -1, we were unable to find the virtual
515      function table pointer in initial symbol reading, and
516      get_vptr_fieldno should be called to find it if possible.
517      get_vptr_fieldno will update this field if possible.  Otherwise
518      the value is left at -1.
519
520      Unused if this type does not have virtual functions.
521
522      This field appears at this location because it packs nicely here.  */
523
524   short vptr_fieldno;
525
526   /* * Name of this type, or NULL if none.
527
528      This is used for printing only, except by poorly designed C++
529      code.  For looking up a name, look for a symbol in the
530      VAR_DOMAIN.  This is generally allocated in the objfile's
531      obstack.  However coffread.c uses malloc.  */
532
533   const char *name;
534
535   /* * Tag name for this type, or NULL if none.  This means that the
536      name of the type consists of a keyword followed by the tag name.
537      Which keyword is determined by the type code ("struct" for
538      TYPE_CODE_STRUCT, etc.).  As far as I know C/C++ are the only
539      languages with this feature.
540
541      This is used for printing only, except by poorly designed C++ code.
542      For looking up a name, look for a symbol in the STRUCT_DOMAIN.
543      One more legitimate use is that if TYPE_FLAG_STUB is set, this is
544      the name to use to look for definitions in other files.  */
545
546   const char *tag_name;
547
548   /* * Every type is now associated with a particular objfile, and the
549      type is allocated on the objfile_obstack for that objfile.  One
550      problem however, is that there are times when gdb allocates new
551      types while it is not in the process of reading symbols from a
552      particular objfile.  Fortunately, these happen when the type
553      being created is a derived type of an existing type, such as in
554      lookup_pointer_type().  So we can just allocate the new type
555      using the same objfile as the existing type, but to do this we
556      need a backpointer to the objfile from the existing type.  Yes
557      this is somewhat ugly, but without major overhaul of the internal
558      type system, it can't be avoided for now.  */
559
560   union type_owner
561     {
562       struct objfile *objfile;
563       struct gdbarch *gdbarch;
564     } owner;
565
566   /* * For a pointer type, describes the type of object pointed to.
567      - For an array type, describes the type of the elements.
568      - For a function or method type, describes the type of the return value.
569      - For a range type, describes the type of the full range.
570      - For a complex type, describes the type of each coordinate.
571      - For a special record or union type encoding a dynamic-sized type
572      in GNAT, a memoized pointer to a corresponding static version of
573      the type.
574      - Unused otherwise.  */
575
576   struct type *target_type;
577
578   /* * For structure and union types, a description of each field.
579      For set and pascal array types, there is one "field",
580      whose type is the domain type of the set or array.
581      For range types, there are two "fields",
582      the minimum and maximum values (both inclusive).
583      For enum types, each possible value is described by one "field".
584      For a function or method type, a "field" for each parameter.
585      For C++ classes, there is one field for each base class (if it is
586      a derived class) plus one field for each class data member.  Member
587      functions are recorded elsewhere.
588
589      Using a pointer to a separate array of fields
590      allows all types to have the same size, which is useful
591      because we can allocate the space for a type before
592      we know what to put in it.  */
593
594   union 
595   {
596     struct field
597     {
598       union field_location
599       {
600         /* * Position of this field, counting in bits from start of
601            containing structure.  For gdbarch_bits_big_endian=1
602            targets, it is the bit offset to the MSB.  For
603            gdbarch_bits_big_endian=0 targets, it is the bit offset to
604            the LSB.  */
605
606         int bitpos;
607
608         /* * Enum value.  */
609         LONGEST enumval;
610
611         /* * For a static field, if TYPE_FIELD_STATIC_HAS_ADDR then
612            physaddr is the location (in the target) of the static
613            field.  Otherwise, physname is the mangled label of the
614            static field.  */
615
616         CORE_ADDR physaddr;
617         const char *physname;
618
619         /* * The field location can be computed by evaluating the
620            following DWARF block.  Its DATA is allocated on
621            objfile_obstack - no CU load is needed to access it.  */
622
623         struct dwarf2_locexpr_baton *dwarf_block;
624       }
625       loc;
626
627       /* * For a function or member type, this is 1 if the argument is
628          marked artificial.  Artificial arguments should not be shown
629          to the user.  For TYPE_CODE_RANGE it is set if the specific
630          bound is not defined.  */
631       unsigned int artificial : 1;
632
633       /* * Discriminant for union field_location.  */
634       ENUM_BITFIELD(field_loc_kind) loc_kind : 3;
635
636       /* * Size of this field, in bits, or zero if not packed.
637          If non-zero in an array type, indicates the element size in
638          bits (used only in Ada at the moment).
639          For an unpacked field, the field's type's length
640          says how many bytes the field occupies.  */
641
642       unsigned int bitsize : 28;
643
644       /* * In a struct or union type, type of this field.
645          - In a function or member type, type of this argument.
646          - In an array type, the domain-type of the array.  */
647
648       struct type *type;
649
650       /* * Name of field, value or argument.
651          NULL for range bounds, array domains, and member function
652          arguments.  */
653
654       const char *name;
655     } *fields;
656
657     /* * Union member used for range types.  */
658
659     struct range_bounds
660     {
661       /* * Low bound of range.  */
662
663       struct dynamic_prop low;
664
665       /* * High bound of range.  */
666
667       struct dynamic_prop high;
668
669       /* True if HIGH range bound contains the number of elements in the
670          subrange. This affects how the final hight bound is computed.  */
671
672       int flag_upper_bound_is_count : 1;
673
674       /* True if LOW or/and HIGH are resolved into a static bound from
675          a dynamic one.  */
676
677       int flag_bound_evaluated : 1;
678     } *bounds;
679
680   } flds_bnds;
681
682   /* * For types with virtual functions (TYPE_CODE_STRUCT),
683      VPTR_BASETYPE is the base class which defined the virtual
684      function table pointer.
685
686      For types that are pointer to member types (TYPE_CODE_METHODPTR,
687      TYPE_CODE_MEMBERPTR), VPTR_BASETYPE is the type that this pointer
688      is a member of.
689
690      For method types (TYPE_CODE_METHOD), VPTR_BASETYPE is the aggregate
691      type that contains the method.
692
693      Unused otherwise.  */
694
695   struct type *vptr_basetype;
696
697   /* * Slot to point to additional language-specific fields of this
698      type.  */
699
700   union type_specific
701   {
702     /* * CPLUS_STUFF is for TYPE_CODE_STRUCT.  It is initialized to
703        point to cplus_struct_default, a default static instance of a
704        struct cplus_struct_type.  */
705
706     struct cplus_struct_type *cplus_stuff;
707
708     /* * GNAT_STUFF is for types for which the GNAT Ada compiler
709        provides additional information.  */
710
711     struct gnat_aux_type *gnat_stuff;
712
713     /* * FLOATFORMAT is for TYPE_CODE_FLT.  It is a pointer to two
714        floatformat objects that describe the floating-point value
715        that resides within the type.  The first is for big endian
716        targets and the second is for little endian targets.  */
717
718     const struct floatformat **floatformat;
719
720     /* * For TYPE_CODE_FUNC types,  */
721
722     struct func_type *func_stuff;
723   } type_specific;
724 };
725
726 /* * A ``struct type'' describes a particular instance of a type, with
727    some particular qualification.  */
728
729 struct type
730 {
731   /* * Type that is a pointer to this type.
732      NULL if no such pointer-to type is known yet.
733      The debugger may add the address of such a type
734      if it has to construct one later.  */
735
736   struct type *pointer_type;
737
738   /* * C++: also need a reference type.  */
739
740   struct type *reference_type;
741
742   /* * Variant chain.  This points to a type that differs from this
743      one only in qualifiers and length.  Currently, the possible
744      qualifiers are const, volatile, code-space, data-space, and
745      address class.  The length may differ only when one of the
746      address class flags are set.  The variants are linked in a
747      circular ring and share MAIN_TYPE.  */
748
749   struct type *chain;
750
751   /* * Flags specific to this instance of the type, indicating where
752      on the ring we are.
753
754      For TYPE_CODE_TYPEDEF the flags of the typedef type should be
755      binary or-ed with the target type, with a special case for
756      address class and space class.  For example if this typedef does
757      not specify any new qualifiers, TYPE_INSTANCE_FLAGS is 0 and the
758      instance flags are completely inherited from the target type.  No
759      qualifiers can be cleared by the typedef.  See also
760      check_typedef.  */
761   int instance_flags;
762
763   /* * Length of storage for a value of this type.  This is what
764      sizeof(type) would return; use it for address arithmetic, memory
765      reads and writes, etc.  This size includes padding.  For example,
766      an i386 extended-precision floating point value really only
767      occupies ten bytes, but most ABI's declare its size to be 12
768      bytes, to preserve alignment.  A `struct type' representing such
769      a floating-point type would have a `length' value of 12, even
770      though the last two bytes are unused.
771
772      There's a bit of a host/target mess here, if you're concerned
773      about machines whose bytes aren't eight bits long, or who don't
774      have byte-addressed memory.  Various places pass this to memcpy
775      and such, meaning it must be in units of host bytes.  Various
776      other places expect they can calculate addresses by adding it
777      and such, meaning it must be in units of target bytes.  For
778      some DSP targets, in which HOST_CHAR_BIT will (presumably) be 8
779      and TARGET_CHAR_BIT will be (say) 32, this is a problem.
780
781      One fix would be to make this field in bits (requiring that it
782      always be a multiple of HOST_CHAR_BIT and TARGET_CHAR_BIT) ---
783      the other choice would be to make it consistently in units of
784      HOST_CHAR_BIT.  However, this would still fail to address
785      machines based on a ternary or decimal representation.  */
786   
787   unsigned length;
788
789   /* * Core type, shared by a group of qualified types.  */
790
791   struct main_type *main_type;
792 };
793
794 #define NULL_TYPE ((struct type *) 0)
795
796 /* * C++ language-specific information for TYPE_CODE_STRUCT and
797    TYPE_CODE_UNION nodes.  */
798
799 struct cplus_struct_type
800   {
801     /* * Number of base classes this type derives from.  The
802        baseclasses are stored in the first N_BASECLASSES fields
803        (i.e. the `fields' field of the struct type).  I think only the
804        `type' field of such a field has any meaning.  */
805
806     short n_baseclasses;
807
808     /* * Number of methods with unique names.  All overloaded methods
809        with the same name count only once.  */
810
811     short nfn_fields;
812
813     /* * Number of template arguments.  */
814
815     unsigned short n_template_arguments;
816
817     /* * One if this struct is a dynamic class, as defined by the
818        Itanium C++ ABI: if it requires a virtual table pointer,
819        because it or any of its base classes have one or more virtual
820        member functions or virtual base classes.  Minus one if not
821        dynamic.  Zero if not yet computed.  */
822
823     int is_dynamic : 2;
824
825     /* * Non-zero if this type came from a Java CU.  */
826
827     unsigned int is_java : 1;
828
829     /* * For derived classes, the number of base classes is given by
830        n_baseclasses and virtual_field_bits is a bit vector containing
831        one bit per base class.  If the base class is virtual, the
832        corresponding bit will be set.
833        I.E, given:
834
835        class A{};
836        class B{};
837        class C : public B, public virtual A {};
838
839        B is a baseclass of C; A is a virtual baseclass for C.
840        This is a C++ 2.0 language feature.  */
841
842     B_TYPE *virtual_field_bits;
843
844     /* * For classes with private fields, the number of fields is
845        given by nfields and private_field_bits is a bit vector
846        containing one bit per field.
847
848        If the field is private, the corresponding bit will be set.  */
849
850     B_TYPE *private_field_bits;
851
852     /* * For classes with protected fields, the number of fields is
853        given by nfields and protected_field_bits is a bit vector
854        containing one bit per field.
855
856        If the field is private, the corresponding bit will be set.  */
857
858     B_TYPE *protected_field_bits;
859
860     /* * For classes with fields to be ignored, either this is
861        optimized out or this field has length 0.  */
862
863     B_TYPE *ignore_field_bits;
864
865     /* * For classes, structures, and unions, a description of each
866        field, which consists of an overloaded name, followed by the
867        types of arguments that the method expects, and then the name
868        after it has been renamed to make it distinct.
869
870        fn_fieldlists points to an array of nfn_fields of these.  */
871
872     struct fn_fieldlist
873       {
874
875         /* * The overloaded name.
876            This is generally allocated in the objfile's obstack.
877            However stabsread.c sometimes uses malloc.  */
878
879         const char *name;
880
881         /* * The number of methods with this name.  */
882
883         int length;
884
885         /* * The list of methods.  */
886
887         struct fn_field
888           {
889
890             /* * If is_stub is clear, this is the mangled name which
891                we can look up to find the address of the method
892                (FIXME: it would be cleaner to have a pointer to the
893                struct symbol here instead).
894
895                If is_stub is set, this is the portion of the mangled
896                name which specifies the arguments.  For example, "ii",
897                if there are two int arguments, or "" if there are no
898                arguments.  See gdb_mangle_name for the conversion from
899                this format to the one used if is_stub is clear.  */
900
901             const char *physname;
902
903             /* * The function type for the method.
904                
905                (This comment used to say "The return value of the
906                method", but that's wrong.  The function type is
907                expected here, i.e. something with TYPE_CODE_FUNC, and
908                *not* the return-value type).  */
909
910             struct type *type;
911
912             /* * For virtual functions.
913                First baseclass that defines this virtual function.  */
914
915             struct type *fcontext;
916
917             /* Attributes.  */
918
919             unsigned int is_const:1;
920             unsigned int is_volatile:1;
921             unsigned int is_private:1;
922             unsigned int is_protected:1;
923             unsigned int is_public:1;
924             unsigned int is_abstract:1;
925             unsigned int is_static:1;
926             unsigned int is_final:1;
927             unsigned int is_synchronized:1;
928             unsigned int is_native:1;
929             unsigned int is_artificial:1;
930
931             /* * A stub method only has some fields valid (but they
932                are enough to reconstruct the rest of the fields).  */
933
934             unsigned int is_stub:1;
935
936             /* * True if this function is a constructor, false
937                otherwise.  */
938
939             unsigned int is_constructor : 1;
940
941             /* * Unused.  */
942
943             unsigned int dummy:3;
944
945             /* * Index into that baseclass's virtual function table,
946                minus 2; else if static: VOFFSET_STATIC; else: 0.  */
947
948             unsigned int voffset:16;
949
950 #define VOFFSET_STATIC 1
951
952           }
953          *fn_fields;
954
955       }
956      *fn_fieldlists;
957
958     /* * typedefs defined inside this class.  typedef_field points to
959        an array of typedef_field_count elements.  */
960
961     struct typedef_field
962       {
963         /* * Unqualified name to be prefixed by owning class qualified
964            name.  */
965
966         const char *name;
967
968         /* * Type this typedef named NAME represents.  */
969
970         struct type *type;
971       }
972     *typedef_field;
973     unsigned typedef_field_count;
974
975     /* * The template arguments.  This is an array with
976        N_TEMPLATE_ARGUMENTS elements.  This is NULL for non-template
977        classes.  */
978
979     struct symbol **template_arguments;
980   };
981
982 /* * Struct used to store conversion rankings.  */
983
984 struct rank
985   {
986     short rank;
987
988     /* * When two conversions are of the same type and therefore have
989        the same rank, subrank is used to differentiate the two.
990
991        Eg: Two derived-class-pointer to base-class-pointer conversions
992        would both have base pointer conversion rank, but the
993        conversion with the shorter distance to the ancestor is
994        preferable.  'subrank' would be used to reflect that.  */
995
996     short subrank;
997   };
998
999 /* * Struct used for ranking a function for overload resolution.  */
1000
1001 struct badness_vector
1002   {
1003     int length;
1004     struct rank *rank;
1005   };
1006
1007 /* * GNAT Ada-specific information for various Ada types.  */
1008
1009 struct gnat_aux_type
1010   {
1011     /* * Parallel type used to encode information about dynamic types
1012        used in Ada (such as variant records, variable-size array,
1013        etc).  */
1014     struct type* descriptive_type;
1015   };
1016
1017 /* * For TYPE_CODE_FUNC types.  */
1018
1019 struct func_type
1020   {
1021     /* * The calling convention for targets supporting multiple ABIs.
1022        Right now this is only fetched from the Dwarf-2
1023        DW_AT_calling_convention attribute.  */
1024
1025     unsigned calling_convention;
1026
1027     /* * Only those DW_TAG_GNU_call_site's in this function that have
1028        DW_AT_GNU_tail_call set are linked in this list.  Function
1029        without its tail call list complete
1030        (DW_AT_GNU_all_tail_call_sites or its superset
1031        DW_AT_GNU_all_call_sites) has TAIL_CALL_LIST NULL, even if some
1032        DW_TAG_GNU_call_site's exist in such function. */
1033
1034     struct call_site *tail_call_list;
1035   };
1036
1037 /* struct call_site_parameter can be referenced in callees by several ways.  */
1038
1039 enum call_site_parameter_kind
1040 {
1041   /* * Use field call_site_parameter.u.dwarf_reg.  */
1042   CALL_SITE_PARAMETER_DWARF_REG,
1043
1044   /* * Use field call_site_parameter.u.fb_offset.  */
1045   CALL_SITE_PARAMETER_FB_OFFSET,
1046
1047   /* * Use field call_site_parameter.u.param_offset.  */
1048   CALL_SITE_PARAMETER_PARAM_OFFSET
1049 };
1050
1051 /* * A place where a function gets called from, represented by
1052    DW_TAG_GNU_call_site.  It can be looked up from
1053    symtab->call_site_htab.  */
1054
1055 struct call_site
1056   {
1057     /* * Address of the first instruction after this call.  It must be
1058        the first field as we overload core_addr_hash and core_addr_eq
1059        for it.  */
1060
1061     CORE_ADDR pc;
1062
1063     /* * List successor with head in FUNC_TYPE.TAIL_CALL_LIST.  */
1064
1065     struct call_site *tail_call_next;
1066
1067     /* * Describe DW_AT_GNU_call_site_target.  Missing attribute uses
1068        FIELD_LOC_KIND_DWARF_BLOCK with FIELD_DWARF_BLOCK == NULL.  */
1069
1070     struct
1071       {
1072         union field_location loc;
1073
1074         /* * Discriminant for union field_location.  */
1075
1076         ENUM_BITFIELD(field_loc_kind) loc_kind : 3;
1077       }
1078     target;
1079
1080     /* * Size of the PARAMETER array.  */
1081
1082     unsigned parameter_count;
1083
1084     /* * CU of the function where the call is located.  It gets used
1085        for DWARF blocks execution in the parameter array below.  */
1086
1087     struct dwarf2_per_cu_data *per_cu;
1088
1089     /* * Describe DW_TAG_GNU_call_site's DW_TAG_formal_parameter.  */
1090
1091     struct call_site_parameter
1092       {
1093         ENUM_BITFIELD (call_site_parameter_kind) kind : 2;
1094
1095         union call_site_parameter_u
1096           {
1097             /* * DW_TAG_formal_parameter's DW_AT_location's DW_OP_regX
1098                as DWARF register number, for register passed
1099                parameters.  */
1100
1101             int dwarf_reg;
1102
1103             /* * Offset from the callee's frame base, for stack passed
1104                parameters.  This equals offset from the caller's stack
1105                pointer.  */
1106
1107             CORE_ADDR fb_offset;
1108
1109             /* * Offset relative to the start of this PER_CU to
1110                DW_TAG_formal_parameter which is referenced by both
1111                caller and the callee.  */
1112
1113             cu_offset param_offset;
1114           }
1115         u;
1116
1117         /* * DW_TAG_formal_parameter's DW_AT_GNU_call_site_value.  It
1118            is never NULL.  */
1119
1120         const gdb_byte *value;
1121         size_t value_size;
1122
1123         /* * DW_TAG_formal_parameter's DW_AT_GNU_call_site_data_value.
1124            It may be NULL if not provided by DWARF.  */
1125
1126         const gdb_byte *data_value;
1127         size_t data_value_size;
1128       }
1129     parameter[1];
1130   };
1131
1132 /* * The default value of TYPE_CPLUS_SPECIFIC(T) points to this shared
1133    static structure.  */
1134
1135 extern const struct cplus_struct_type cplus_struct_default;
1136
1137 extern void allocate_cplus_struct_type (struct type *);
1138
1139 #define INIT_CPLUS_SPECIFIC(type) \
1140   (TYPE_SPECIFIC_FIELD (type) = TYPE_SPECIFIC_CPLUS_STUFF, \
1141    TYPE_RAW_CPLUS_SPECIFIC (type) = (struct cplus_struct_type*) \
1142    &cplus_struct_default)
1143
1144 #define ALLOCATE_CPLUS_STRUCT_TYPE(type) allocate_cplus_struct_type (type)
1145
1146 #define HAVE_CPLUS_STRUCT(type) \
1147   (TYPE_SPECIFIC_FIELD (type) == TYPE_SPECIFIC_CPLUS_STUFF \
1148    && TYPE_RAW_CPLUS_SPECIFIC (type) !=  &cplus_struct_default)
1149
1150 extern const struct gnat_aux_type gnat_aux_default;
1151
1152 extern void allocate_gnat_aux_type (struct type *);
1153
1154 #define INIT_GNAT_SPECIFIC(type) \
1155   (TYPE_SPECIFIC_FIELD (type) = TYPE_SPECIFIC_GNAT_STUFF, \
1156    TYPE_GNAT_SPECIFIC (type) = (struct gnat_aux_type *) &gnat_aux_default)
1157 #define ALLOCATE_GNAT_AUX_TYPE(type) allocate_gnat_aux_type (type)
1158 /* * A macro that returns non-zero if the type-specific data should be
1159    read as "gnat-stuff".  */
1160 #define HAVE_GNAT_AUX_INFO(type) \
1161   (TYPE_SPECIFIC_FIELD (type) == TYPE_SPECIFIC_GNAT_STUFF)
1162
1163 #define INIT_FUNC_SPECIFIC(type)                                               \
1164   (TYPE_SPECIFIC_FIELD (type) = TYPE_SPECIFIC_FUNC,                            \
1165    TYPE_MAIN_TYPE (type)->type_specific.func_stuff                             \
1166      = TYPE_ZALLOC (type,                                                      \
1167                     sizeof (*TYPE_MAIN_TYPE (type)->type_specific.func_stuff)))
1168
1169 #define TYPE_INSTANCE_FLAGS(thistype) (thistype)->instance_flags
1170 #define TYPE_MAIN_TYPE(thistype) (thistype)->main_type
1171 #define TYPE_NAME(thistype) TYPE_MAIN_TYPE(thistype)->name
1172 #define TYPE_TAG_NAME(type) TYPE_MAIN_TYPE(type)->tag_name
1173 #define TYPE_TARGET_TYPE(thistype) TYPE_MAIN_TYPE(thistype)->target_type
1174 #define TYPE_POINTER_TYPE(thistype) (thistype)->pointer_type
1175 #define TYPE_REFERENCE_TYPE(thistype) (thistype)->reference_type
1176 #define TYPE_CHAIN(thistype) (thistype)->chain
1177 /* * Note that if thistype is a TYPEDEF type, you have to call check_typedef.
1178    But check_typedef does set the TYPE_LENGTH of the TYPEDEF type,
1179    so you only have to call check_typedef once.  Since allocate_value
1180    calls check_typedef, TYPE_LENGTH (VALUE_TYPE (X)) is safe.  */
1181 #define TYPE_LENGTH(thistype) (thistype)->length
1182 /* * Note that TYPE_CODE can be TYPE_CODE_TYPEDEF, so if you want the real
1183    type, you need to do TYPE_CODE (check_type (this_type)).  */
1184 #define TYPE_CODE(thistype) TYPE_MAIN_TYPE(thistype)->code
1185 #define TYPE_NFIELDS(thistype) TYPE_MAIN_TYPE(thistype)->nfields
1186 #define TYPE_FIELDS(thistype) TYPE_MAIN_TYPE(thistype)->flds_bnds.fields
1187
1188 #define TYPE_INDEX_TYPE(type) TYPE_FIELD_TYPE (type, 0)
1189 #define TYPE_RANGE_DATA(thistype) TYPE_MAIN_TYPE(thistype)->flds_bnds.bounds
1190 #define TYPE_LOW_BOUND(range_type) \
1191   TYPE_RANGE_DATA(range_type)->low.data.const_val
1192 #define TYPE_HIGH_BOUND(range_type) \
1193   TYPE_RANGE_DATA(range_type)->high.data.const_val
1194 #define TYPE_LOW_BOUND_UNDEFINED(range_type) \
1195   (TYPE_RANGE_DATA(range_type)->low.kind == PROP_UNDEFINED)
1196 #define TYPE_HIGH_BOUND_UNDEFINED(range_type) \
1197   (TYPE_RANGE_DATA(range_type)->high.kind == PROP_UNDEFINED)
1198 #define TYPE_HIGH_BOUND_KIND(range_type) \
1199   TYPE_RANGE_DATA(range_type)->high.kind
1200 #define TYPE_LOW_BOUND_KIND(range_type) \
1201   TYPE_RANGE_DATA(range_type)->low.kind
1202
1203 /* Moto-specific stuff for FORTRAN arrays.  */
1204
1205 #define TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED(arraytype) \
1206    TYPE_HIGH_BOUND_UNDEFINED(TYPE_INDEX_TYPE(arraytype))
1207 #define TYPE_ARRAY_LOWER_BOUND_IS_UNDEFINED(arraytype) \
1208    TYPE_LOW_BOUND_UNDEFINED(TYPE_INDEX_TYPE(arraytype))
1209
1210 #define TYPE_ARRAY_UPPER_BOUND_VALUE(arraytype) \
1211    (TYPE_HIGH_BOUND(TYPE_INDEX_TYPE((arraytype))))
1212
1213 #define TYPE_ARRAY_LOWER_BOUND_VALUE(arraytype) \
1214    (TYPE_LOW_BOUND(TYPE_INDEX_TYPE((arraytype))))
1215
1216 /* C++ */
1217
1218 #define TYPE_VPTR_BASETYPE(thistype) TYPE_MAIN_TYPE(thistype)->vptr_basetype
1219 #define TYPE_DOMAIN_TYPE(thistype) TYPE_MAIN_TYPE(thistype)->vptr_basetype
1220 #define TYPE_VPTR_FIELDNO(thistype) TYPE_MAIN_TYPE(thistype)->vptr_fieldno
1221 #define TYPE_NFN_FIELDS(thistype) TYPE_CPLUS_SPECIFIC(thistype)->nfn_fields
1222 #define TYPE_SPECIFIC_FIELD(thistype) \
1223   TYPE_MAIN_TYPE(thistype)->type_specific_field
1224 #define TYPE_TYPE_SPECIFIC(thistype) TYPE_MAIN_TYPE(thistype)->type_specific
1225 /* We need this tap-dance with the TYPE_RAW_SPECIFIC because of the case
1226    where we're trying to print an Ada array using the C language.
1227    In that case, there is no "cplus_stuff", but the C language assumes
1228    that there is.  What we do, in that case, is pretend that there is
1229    an implicit one which is the default cplus stuff.  */
1230 #define TYPE_CPLUS_SPECIFIC(thistype) \
1231    (!HAVE_CPLUS_STRUCT(thistype) \
1232     ? (struct cplus_struct_type*)&cplus_struct_default \
1233     : TYPE_RAW_CPLUS_SPECIFIC(thistype))
1234 #define TYPE_RAW_CPLUS_SPECIFIC(thistype) TYPE_MAIN_TYPE(thistype)->type_specific.cplus_stuff
1235 #define TYPE_FLOATFORMAT(thistype) TYPE_MAIN_TYPE(thistype)->type_specific.floatformat
1236 #define TYPE_GNAT_SPECIFIC(thistype) TYPE_MAIN_TYPE(thistype)->type_specific.gnat_stuff
1237 #define TYPE_DESCRIPTIVE_TYPE(thistype) TYPE_GNAT_SPECIFIC(thistype)->descriptive_type
1238 #define TYPE_CALLING_CONVENTION(thistype) TYPE_MAIN_TYPE(thistype)->type_specific.func_stuff->calling_convention
1239 #define TYPE_TAIL_CALL_LIST(thistype) TYPE_MAIN_TYPE(thistype)->type_specific.func_stuff->tail_call_list
1240 #define TYPE_BASECLASS(thistype,index) TYPE_FIELD_TYPE(thistype, index)
1241 #define TYPE_N_BASECLASSES(thistype) TYPE_CPLUS_SPECIFIC(thistype)->n_baseclasses
1242 #define TYPE_BASECLASS_NAME(thistype,index) TYPE_FIELD_NAME(thistype, index)
1243 #define TYPE_BASECLASS_BITPOS(thistype,index) TYPE_FIELD_BITPOS(thistype,index)
1244 #define BASETYPE_VIA_PUBLIC(thistype, index) \
1245   ((!TYPE_FIELD_PRIVATE(thistype, index)) && (!TYPE_FIELD_PROTECTED(thistype, index)))
1246 #define TYPE_CPLUS_DYNAMIC(thistype) TYPE_CPLUS_SPECIFIC (thistype)->is_dynamic
1247 #define TYPE_CPLUS_REALLY_JAVA(thistype) TYPE_CPLUS_SPECIFIC (thistype)->is_java
1248
1249 #define BASETYPE_VIA_VIRTUAL(thistype, index) \
1250   (TYPE_CPLUS_SPECIFIC(thistype)->virtual_field_bits == NULL ? 0 \
1251     : B_TST(TYPE_CPLUS_SPECIFIC(thistype)->virtual_field_bits, (index)))
1252
1253 #define FIELD_TYPE(thisfld) ((thisfld).type)
1254 #define FIELD_NAME(thisfld) ((thisfld).name)
1255 #define FIELD_LOC_KIND(thisfld) ((thisfld).loc_kind)
1256 #define FIELD_BITPOS_LVAL(thisfld) ((thisfld).loc.bitpos)
1257 #define FIELD_BITPOS(thisfld) (FIELD_BITPOS_LVAL (thisfld) + 0)
1258 #define FIELD_ENUMVAL_LVAL(thisfld) ((thisfld).loc.enumval)
1259 #define FIELD_ENUMVAL(thisfld) (FIELD_ENUMVAL_LVAL (thisfld) + 0)
1260 #define FIELD_STATIC_PHYSNAME(thisfld) ((thisfld).loc.physname)
1261 #define FIELD_STATIC_PHYSADDR(thisfld) ((thisfld).loc.physaddr)
1262 #define FIELD_DWARF_BLOCK(thisfld) ((thisfld).loc.dwarf_block)
1263 #define SET_FIELD_BITPOS(thisfld, bitpos)                       \
1264   (FIELD_LOC_KIND (thisfld) = FIELD_LOC_KIND_BITPOS,            \
1265    FIELD_BITPOS_LVAL (thisfld) = (bitpos))
1266 #define SET_FIELD_ENUMVAL(thisfld, enumval)                     \
1267   (FIELD_LOC_KIND (thisfld) = FIELD_LOC_KIND_ENUMVAL,           \
1268    FIELD_ENUMVAL_LVAL (thisfld) = (enumval))
1269 #define SET_FIELD_PHYSNAME(thisfld, name)                       \
1270   (FIELD_LOC_KIND (thisfld) = FIELD_LOC_KIND_PHYSNAME,          \
1271    FIELD_STATIC_PHYSNAME (thisfld) = (name))
1272 #define SET_FIELD_PHYSADDR(thisfld, addr)                       \
1273   (FIELD_LOC_KIND (thisfld) = FIELD_LOC_KIND_PHYSADDR,          \
1274    FIELD_STATIC_PHYSADDR (thisfld) = (addr))
1275 #define SET_FIELD_DWARF_BLOCK(thisfld, addr)                    \
1276   (FIELD_LOC_KIND (thisfld) = FIELD_LOC_KIND_DWARF_BLOCK,       \
1277    FIELD_DWARF_BLOCK (thisfld) = (addr))
1278 #define FIELD_ARTIFICIAL(thisfld) ((thisfld).artificial)
1279 #define FIELD_BITSIZE(thisfld) ((thisfld).bitsize)
1280
1281 #define TYPE_FIELD(thistype, n) TYPE_MAIN_TYPE(thistype)->flds_bnds.fields[n]
1282 #define TYPE_FIELD_TYPE(thistype, n) FIELD_TYPE(TYPE_FIELD(thistype, n))
1283 #define TYPE_FIELD_NAME(thistype, n) FIELD_NAME(TYPE_FIELD(thistype, n))
1284 #define TYPE_FIELD_LOC_KIND(thistype, n) FIELD_LOC_KIND (TYPE_FIELD (thistype, n))
1285 #define TYPE_FIELD_BITPOS(thistype, n) FIELD_BITPOS (TYPE_FIELD (thistype, n))
1286 #define TYPE_FIELD_ENUMVAL(thistype, n) FIELD_ENUMVAL (TYPE_FIELD (thistype, n))
1287 #define TYPE_FIELD_STATIC_PHYSNAME(thistype, n) FIELD_STATIC_PHYSNAME (TYPE_FIELD (thistype, n))
1288 #define TYPE_FIELD_STATIC_PHYSADDR(thistype, n) FIELD_STATIC_PHYSADDR (TYPE_FIELD (thistype, n))
1289 #define TYPE_FIELD_DWARF_BLOCK(thistype, n) FIELD_DWARF_BLOCK (TYPE_FIELD (thistype, n))
1290 #define TYPE_FIELD_ARTIFICIAL(thistype, n) FIELD_ARTIFICIAL(TYPE_FIELD(thistype,n))
1291 #define TYPE_FIELD_BITSIZE(thistype, n) FIELD_BITSIZE(TYPE_FIELD(thistype,n))
1292 #define TYPE_FIELD_PACKED(thistype, n) (FIELD_BITSIZE(TYPE_FIELD(thistype,n))!=0)
1293
1294 #define TYPE_FIELD_PRIVATE_BITS(thistype) \
1295   TYPE_CPLUS_SPECIFIC(thistype)->private_field_bits
1296 #define TYPE_FIELD_PROTECTED_BITS(thistype) \
1297   TYPE_CPLUS_SPECIFIC(thistype)->protected_field_bits
1298 #define TYPE_FIELD_IGNORE_BITS(thistype) \
1299   TYPE_CPLUS_SPECIFIC(thistype)->ignore_field_bits
1300 #define TYPE_FIELD_VIRTUAL_BITS(thistype) \
1301   TYPE_CPLUS_SPECIFIC(thistype)->virtual_field_bits
1302 #define SET_TYPE_FIELD_PRIVATE(thistype, n) \
1303   B_SET (TYPE_CPLUS_SPECIFIC(thistype)->private_field_bits, (n))
1304 #define SET_TYPE_FIELD_PROTECTED(thistype, n) \
1305   B_SET (TYPE_CPLUS_SPECIFIC(thistype)->protected_field_bits, (n))
1306 #define SET_TYPE_FIELD_IGNORE(thistype, n) \
1307   B_SET (TYPE_CPLUS_SPECIFIC(thistype)->ignore_field_bits, (n))
1308 #define SET_TYPE_FIELD_VIRTUAL(thistype, n) \
1309   B_SET (TYPE_CPLUS_SPECIFIC(thistype)->virtual_field_bits, (n))
1310 #define TYPE_FIELD_PRIVATE(thistype, n) \
1311   (TYPE_CPLUS_SPECIFIC(thistype)->private_field_bits == NULL ? 0 \
1312     : B_TST(TYPE_CPLUS_SPECIFIC(thistype)->private_field_bits, (n)))
1313 #define TYPE_FIELD_PROTECTED(thistype, n) \
1314   (TYPE_CPLUS_SPECIFIC(thistype)->protected_field_bits == NULL ? 0 \
1315     : B_TST(TYPE_CPLUS_SPECIFIC(thistype)->protected_field_bits, (n)))
1316 #define TYPE_FIELD_IGNORE(thistype, n) \
1317   (TYPE_CPLUS_SPECIFIC(thistype)->ignore_field_bits == NULL ? 0 \
1318     : B_TST(TYPE_CPLUS_SPECIFIC(thistype)->ignore_field_bits, (n)))
1319 #define TYPE_FIELD_VIRTUAL(thistype, n) \
1320   (TYPE_CPLUS_SPECIFIC(thistype)->virtual_field_bits == NULL ? 0 \
1321     : B_TST(TYPE_CPLUS_SPECIFIC(thistype)->virtual_field_bits, (n)))
1322
1323 #define TYPE_FN_FIELDLISTS(thistype) TYPE_CPLUS_SPECIFIC(thistype)->fn_fieldlists
1324 #define TYPE_FN_FIELDLIST(thistype, n) TYPE_CPLUS_SPECIFIC(thistype)->fn_fieldlists[n]
1325 #define TYPE_FN_FIELDLIST1(thistype, n) TYPE_CPLUS_SPECIFIC(thistype)->fn_fieldlists[n].fn_fields
1326 #define TYPE_FN_FIELDLIST_NAME(thistype, n) TYPE_CPLUS_SPECIFIC(thistype)->fn_fieldlists[n].name
1327 #define TYPE_FN_FIELDLIST_LENGTH(thistype, n) TYPE_CPLUS_SPECIFIC(thistype)->fn_fieldlists[n].length
1328
1329 #define TYPE_N_TEMPLATE_ARGUMENTS(thistype) \
1330   TYPE_CPLUS_SPECIFIC (thistype)->n_template_arguments
1331 #define TYPE_TEMPLATE_ARGUMENTS(thistype) \
1332   TYPE_CPLUS_SPECIFIC (thistype)->template_arguments
1333 #define TYPE_TEMPLATE_ARGUMENT(thistype, n) \
1334   TYPE_CPLUS_SPECIFIC (thistype)->template_arguments[n]
1335
1336 #define TYPE_FN_FIELD(thisfn, n) (thisfn)[n]
1337 #define TYPE_FN_FIELD_PHYSNAME(thisfn, n) (thisfn)[n].physname
1338 #define TYPE_FN_FIELD_TYPE(thisfn, n) (thisfn)[n].type
1339 #define TYPE_FN_FIELD_ARGS(thisfn, n) TYPE_FIELDS ((thisfn)[n].type)
1340 #define TYPE_FN_FIELD_CONST(thisfn, n) ((thisfn)[n].is_const)
1341 #define TYPE_FN_FIELD_VOLATILE(thisfn, n) ((thisfn)[n].is_volatile)
1342 #define TYPE_FN_FIELD_PRIVATE(thisfn, n) ((thisfn)[n].is_private)
1343 #define TYPE_FN_FIELD_PROTECTED(thisfn, n) ((thisfn)[n].is_protected)
1344 #define TYPE_FN_FIELD_PUBLIC(thisfn, n) ((thisfn)[n].is_public)
1345 #define TYPE_FN_FIELD_STATIC(thisfn, n) ((thisfn)[n].is_static)
1346 #define TYPE_FN_FIELD_FINAL(thisfn, n) ((thisfn)[n].is_final)
1347 #define TYPE_FN_FIELD_SYNCHRONIZED(thisfn, n) ((thisfn)[n].is_synchronized)
1348 #define TYPE_FN_FIELD_NATIVE(thisfn, n) ((thisfn)[n].is_native)
1349 #define TYPE_FN_FIELD_ARTIFICIAL(thisfn, n) ((thisfn)[n].is_artificial)
1350 #define TYPE_FN_FIELD_ABSTRACT(thisfn, n) ((thisfn)[n].is_abstract)
1351 #define TYPE_FN_FIELD_STUB(thisfn, n) ((thisfn)[n].is_stub)
1352 #define TYPE_FN_FIELD_CONSTRUCTOR(thisfn, n) ((thisfn)[n].is_constructor)
1353 #define TYPE_FN_FIELD_FCONTEXT(thisfn, n) ((thisfn)[n].fcontext)
1354 #define TYPE_FN_FIELD_VOFFSET(thisfn, n) ((thisfn)[n].voffset-2)
1355 #define TYPE_FN_FIELD_VIRTUAL_P(thisfn, n) ((thisfn)[n].voffset > 1)
1356 #define TYPE_FN_FIELD_STATIC_P(thisfn, n) ((thisfn)[n].voffset == VOFFSET_STATIC)
1357
1358 #define TYPE_TYPEDEF_FIELD_ARRAY(thistype) \
1359   TYPE_CPLUS_SPECIFIC (thistype)->typedef_field
1360 #define TYPE_TYPEDEF_FIELD(thistype, n) \
1361   TYPE_CPLUS_SPECIFIC (thistype)->typedef_field[n]
1362 #define TYPE_TYPEDEF_FIELD_NAME(thistype, n) \
1363   TYPE_TYPEDEF_FIELD (thistype, n).name
1364 #define TYPE_TYPEDEF_FIELD_TYPE(thistype, n) \
1365   TYPE_TYPEDEF_FIELD (thistype, n).type
1366 #define TYPE_TYPEDEF_FIELD_COUNT(thistype) \
1367   TYPE_CPLUS_SPECIFIC (thistype)->typedef_field_count
1368
1369 #define TYPE_IS_OPAQUE(thistype) \
1370   (((TYPE_CODE (thistype) == TYPE_CODE_STRUCT) \
1371     || (TYPE_CODE (thistype) == TYPE_CODE_UNION)) \
1372    && (TYPE_NFIELDS (thistype) == 0) \
1373    && (!HAVE_CPLUS_STRUCT (thistype) \
1374        || TYPE_NFN_FIELDS (thistype) == 0) \
1375    && (TYPE_STUB (thistype) || !TYPE_STUB_SUPPORTED (thistype)))
1376
1377 /* * A helper macro that returns the name of a type or "unnamed type"
1378    if the type has no name.  */
1379
1380 #define TYPE_SAFE_NAME(type) \
1381   (TYPE_NAME (type) ? TYPE_NAME (type) : _("<unnamed type>"))
1382
1383 /* * A helper macro that returns the name of an error type.  If the
1384    type has a name, it is used; otherwise, a default is used.  */
1385
1386 #define TYPE_ERROR_NAME(type) \
1387   (TYPE_NAME (type) ? TYPE_NAME (type) : _("<error type>"))
1388
1389 struct builtin_type
1390 {
1391   /* Integral types.  */
1392
1393   /* Implicit size/sign (based on the architecture's ABI).  */
1394   struct type *builtin_void;
1395   struct type *builtin_char;
1396   struct type *builtin_short;
1397   struct type *builtin_int;
1398   struct type *builtin_long;
1399   struct type *builtin_signed_char;
1400   struct type *builtin_unsigned_char;
1401   struct type *builtin_unsigned_short;
1402   struct type *builtin_unsigned_int;
1403   struct type *builtin_unsigned_long;
1404   struct type *builtin_float;
1405   struct type *builtin_double;
1406   struct type *builtin_long_double;
1407   struct type *builtin_complex;
1408   struct type *builtin_double_complex;
1409   struct type *builtin_string;
1410   struct type *builtin_bool;
1411   struct type *builtin_long_long;
1412   struct type *builtin_unsigned_long_long;
1413   struct type *builtin_decfloat;
1414   struct type *builtin_decdouble;
1415   struct type *builtin_declong;
1416
1417   /* "True" character types.
1418       We use these for the '/c' print format, because c_char is just a
1419       one-byte integral type, which languages less laid back than C
1420       will print as ... well, a one-byte integral type.  */
1421   struct type *builtin_true_char;
1422   struct type *builtin_true_unsigned_char;
1423
1424   /* Explicit sizes - see C9X <intypes.h> for naming scheme.  The "int0"
1425      is for when an architecture needs to describe a register that has
1426      no size.  */
1427   struct type *builtin_int0;
1428   struct type *builtin_int8;
1429   struct type *builtin_uint8;
1430   struct type *builtin_int16;
1431   struct type *builtin_uint16;
1432   struct type *builtin_int32;
1433   struct type *builtin_uint32;
1434   struct type *builtin_int64;
1435   struct type *builtin_uint64;
1436   struct type *builtin_int128;
1437   struct type *builtin_uint128;
1438
1439   /* Wide character types.  */
1440   struct type *builtin_char16;
1441   struct type *builtin_char32;
1442
1443   /* Pointer types.  */
1444
1445   /* * `pointer to data' type.  Some target platforms use an implicitly
1446      {sign,zero} -extended 32-bit ABI pointer on a 64-bit ISA.  */
1447   struct type *builtin_data_ptr;
1448
1449   /* * `pointer to function (returning void)' type.  Harvard
1450      architectures mean that ABI function and code pointers are not
1451      interconvertible.  Similarly, since ANSI, C standards have
1452      explicitly said that pointers to functions and pointers to data
1453      are not interconvertible --- that is, you can't cast a function
1454      pointer to void * and back, and expect to get the same value.
1455      However, all function pointer types are interconvertible, so void
1456      (*) () can server as a generic function pointer.  */
1457
1458   struct type *builtin_func_ptr;
1459
1460   /* * `function returning pointer to function (returning void)' type.
1461      The final void return type is not significant for it.  */
1462
1463   struct type *builtin_func_func;
1464
1465   /* Special-purpose types.  */
1466
1467   /* * This type is used to represent a GDB internal function.  */
1468
1469   struct type *internal_fn;
1470 };
1471
1472 /* * Return the type table for the specified architecture.  */
1473
1474 extern const struct builtin_type *builtin_type (struct gdbarch *gdbarch);
1475
1476 /* * Per-objfile types used by symbol readers.  */
1477
1478 struct objfile_type
1479 {
1480   /* Basic types based on the objfile architecture.  */
1481   struct type *builtin_void;
1482   struct type *builtin_char;
1483   struct type *builtin_short;
1484   struct type *builtin_int;
1485   struct type *builtin_long;
1486   struct type *builtin_long_long;
1487   struct type *builtin_signed_char;
1488   struct type *builtin_unsigned_char;
1489   struct type *builtin_unsigned_short;
1490   struct type *builtin_unsigned_int;
1491   struct type *builtin_unsigned_long;
1492   struct type *builtin_unsigned_long_long;
1493   struct type *builtin_float;
1494   struct type *builtin_double;
1495   struct type *builtin_long_double;
1496
1497   /* * This type is used to represent symbol addresses.  */
1498   struct type *builtin_core_addr;
1499
1500   /* * This type represents a type that was unrecognized in symbol
1501      read-in.  */
1502   struct type *builtin_error;
1503
1504   /* * Types used for symbols with no debug information.  */
1505   struct type *nodebug_text_symbol;
1506   struct type *nodebug_text_gnu_ifunc_symbol;
1507   struct type *nodebug_got_plt_symbol;
1508   struct type *nodebug_data_symbol;
1509   struct type *nodebug_unknown_symbol;
1510   struct type *nodebug_tls_symbol;
1511 };
1512
1513 /* * Return the type table for the specified objfile.  */
1514
1515 extern const struct objfile_type *objfile_type (struct objfile *objfile);
1516  
1517 /* Explicit floating-point formats.  See "floatformat.h".  */
1518 extern const struct floatformat *floatformats_ieee_half[BFD_ENDIAN_UNKNOWN];
1519 extern const struct floatformat *floatformats_ieee_single[BFD_ENDIAN_UNKNOWN];
1520 extern const struct floatformat *floatformats_ieee_double[BFD_ENDIAN_UNKNOWN];
1521 extern const struct floatformat *floatformats_ieee_double_littlebyte_bigword[BFD_ENDIAN_UNKNOWN];
1522 extern const struct floatformat *floatformats_i387_ext[BFD_ENDIAN_UNKNOWN];
1523 extern const struct floatformat *floatformats_m68881_ext[BFD_ENDIAN_UNKNOWN];
1524 extern const struct floatformat *floatformats_arm_ext[BFD_ENDIAN_UNKNOWN];
1525 extern const struct floatformat *floatformats_ia64_spill[BFD_ENDIAN_UNKNOWN];
1526 extern const struct floatformat *floatformats_ia64_quad[BFD_ENDIAN_UNKNOWN];
1527 extern const struct floatformat *floatformats_vax_f[BFD_ENDIAN_UNKNOWN];
1528 extern const struct floatformat *floatformats_vax_d[BFD_ENDIAN_UNKNOWN];
1529 extern const struct floatformat *floatformats_ibm_long_double[BFD_ENDIAN_UNKNOWN];
1530
1531
1532 /* * Allocate space for storing data associated with a particular
1533    type.  We ensure that the space is allocated using the same
1534    mechanism that was used to allocate the space for the type
1535    structure itself.  I.e.  if the type is on an objfile's
1536    objfile_obstack, then the space for data associated with that type
1537    will also be allocated on the objfile_obstack.  If the type is not
1538    associated with any particular objfile (such as builtin types),
1539    then the data space will be allocated with xmalloc, the same as for
1540    the type structure.  */
1541
1542 #define TYPE_ALLOC(t,size)  \
1543    (TYPE_OBJFILE_OWNED (t) \
1544     ? obstack_alloc (&TYPE_OBJFILE (t) -> objfile_obstack, size) \
1545     : xmalloc (size))
1546
1547 #define TYPE_ZALLOC(t,size)  \
1548    (TYPE_OBJFILE_OWNED (t) \
1549     ? memset (obstack_alloc (&TYPE_OBJFILE (t)->objfile_obstack, size),  \
1550               0, size)  \
1551     : xzalloc (size))
1552
1553 /* Use alloc_type to allocate a type owned by an objfile.  Use
1554    alloc_type_arch to allocate a type owned by an architecture.  Use
1555    alloc_type_copy to allocate a type with the same owner as a
1556    pre-existing template type, no matter whether objfile or
1557    gdbarch.  */
1558 extern struct type *alloc_type (struct objfile *);
1559 extern struct type *alloc_type_arch (struct gdbarch *);
1560 extern struct type *alloc_type_copy (const struct type *);
1561
1562 /* * Return the type's architecture.  For types owned by an
1563    architecture, that architecture is returned.  For types owned by an
1564    objfile, that objfile's architecture is returned.  */
1565
1566 extern struct gdbarch *get_type_arch (const struct type *);
1567
1568 /* * This returns the target type (or NULL) of TYPE, also skipping
1569    past typedefs.  */
1570
1571 extern struct type *get_target_type (struct type *type);
1572
1573 /* * Helper function to construct objfile-owned types.  */
1574
1575 extern struct type *init_type (enum type_code, int, int, const char *,
1576                                struct objfile *);
1577
1578 /* Helper functions to construct architecture-owned types.  */
1579 extern struct type *arch_type (struct gdbarch *, enum type_code, int, char *);
1580 extern struct type *arch_integer_type (struct gdbarch *, int, int, char *);
1581 extern struct type *arch_character_type (struct gdbarch *, int, int, char *);
1582 extern struct type *arch_boolean_type (struct gdbarch *, int, int, char *);
1583 extern struct type *arch_float_type (struct gdbarch *, int, char *,
1584                                      const struct floatformat **);
1585 extern struct type *arch_complex_type (struct gdbarch *, char *,
1586                                        struct type *);
1587
1588 /* Helper functions to construct a struct or record type.  An
1589    initially empty type is created using arch_composite_type().
1590    Fields are then added using append_composite_type_field*().  A union
1591    type has its size set to the largest field.  A struct type has each
1592    field packed against the previous.  */
1593
1594 extern struct type *arch_composite_type (struct gdbarch *gdbarch,
1595                                          char *name, enum type_code code);
1596 extern void append_composite_type_field (struct type *t, char *name,
1597                                          struct type *field);
1598 extern void append_composite_type_field_aligned (struct type *t,
1599                                                  char *name,
1600                                                  struct type *field,
1601                                                  int alignment);
1602 struct field *append_composite_type_field_raw (struct type *t, char *name,
1603                                                struct type *field);
1604
1605 /* Helper functions to construct a bit flags type.  An initially empty
1606    type is created using arch_flag_type().  Flags are then added using
1607    append_flag_type_flag().  */
1608 extern struct type *arch_flags_type (struct gdbarch *gdbarch,
1609                                      char *name, int length);
1610 extern void append_flags_type_flag (struct type *type, int bitpos, char *name);
1611
1612 extern void make_vector_type (struct type *array_type);
1613 extern struct type *init_vector_type (struct type *elt_type, int n);
1614
1615 extern struct type *lookup_reference_type (struct type *);
1616
1617 extern struct type *make_reference_type (struct type *, struct type **);
1618
1619 extern struct type *make_cv_type (int, int, struct type *, struct type **);
1620
1621 extern struct type *make_restrict_type (struct type *);
1622
1623 extern void replace_type (struct type *, struct type *);
1624
1625 extern int address_space_name_to_int (struct gdbarch *, char *);
1626
1627 extern const char *address_space_int_to_name (struct gdbarch *, int);
1628
1629 extern struct type *make_type_with_address_space (struct type *type, 
1630                                                   int space_identifier);
1631
1632 extern struct type *lookup_memberptr_type (struct type *, struct type *);
1633
1634 extern struct type *lookup_methodptr_type (struct type *);
1635
1636 extern void smash_to_method_type (struct type *type, struct type *domain,
1637                                   struct type *to_type, struct field *args,
1638                                   int nargs, int varargs);
1639
1640 extern void smash_to_memberptr_type (struct type *, struct type *,
1641                                      struct type *);
1642
1643 extern void smash_to_methodptr_type (struct type *, struct type *);
1644
1645 extern struct type *allocate_stub_method (struct type *);
1646
1647 extern const char *type_name_no_tag (const struct type *);
1648
1649 extern const char *type_name_no_tag_or_error (struct type *type);
1650
1651 extern struct type *lookup_struct_elt_type (struct type *, const char *, int);
1652
1653 extern struct type *make_pointer_type (struct type *, struct type **);
1654
1655 extern struct type *lookup_pointer_type (struct type *);
1656
1657 extern struct type *make_function_type (struct type *, struct type **);
1658
1659 extern struct type *lookup_function_type (struct type *);
1660
1661 extern struct type *lookup_function_type_with_arguments (struct type *,
1662                                                          int,
1663                                                          struct type **);
1664
1665 extern struct type *create_static_range_type (struct type *, struct type *,
1666                                               LONGEST, LONGEST);
1667
1668
1669 extern struct type *create_array_type_with_stride
1670   (struct type *, struct type *, struct type *, unsigned int);
1671
1672 extern struct type *create_range_type (struct type *, struct type *,
1673                                        const struct dynamic_prop *,
1674                                        const struct dynamic_prop *);
1675
1676 extern struct type *create_array_type (struct type *, struct type *,
1677                                        struct type *);
1678
1679 extern struct type *lookup_array_range_type (struct type *, LONGEST, LONGEST);
1680
1681 extern struct type *create_string_type (struct type *, struct type *,
1682                                         struct type *);
1683 extern struct type *lookup_string_range_type (struct type *, LONGEST, LONGEST);
1684
1685 extern struct type *create_set_type (struct type *, struct type *);
1686
1687 extern struct type *lookup_unsigned_typename (const struct language_defn *,
1688                                               struct gdbarch *, const char *);
1689
1690 extern struct type *lookup_signed_typename (const struct language_defn *,
1691                                             struct gdbarch *, const char *);
1692
1693 extern void get_unsigned_type_max (struct type *, ULONGEST *);
1694
1695 extern void get_signed_type_minmax (struct type *, LONGEST *, LONGEST *);
1696
1697 /* * Resolve all dynamic values of a type e.g. array bounds to static values.
1698    ADDR specifies the location of the variable the type is bound to.
1699    If TYPE has no dynamic properties return TYPE; otherwise a new type with
1700    static properties is returned.  */
1701 extern struct type *resolve_dynamic_type (struct type *type, CORE_ADDR addr);
1702
1703 /* * Predicate if the type has dynamic values, which are not resolved yet.  */
1704 extern int is_dynamic_type (struct type *type);
1705
1706 extern struct type *check_typedef (struct type *);
1707
1708 #define CHECK_TYPEDEF(TYPE)                     \
1709   do {                                          \
1710     (TYPE) = check_typedef (TYPE);              \
1711   } while (0)
1712
1713 extern void check_stub_method_group (struct type *, int);
1714
1715 extern char *gdb_mangle_name (struct type *, int, int);
1716
1717 extern struct type *lookup_typename (const struct language_defn *,
1718                                      struct gdbarch *, const char *,
1719                                      const struct block *, int);
1720
1721 extern struct type *lookup_template_type (char *, struct type *,
1722                                           const struct block *);
1723
1724 extern int get_vptr_fieldno (struct type *, struct type **);
1725
1726 extern int get_discrete_bounds (struct type *, LONGEST *, LONGEST *);
1727
1728 extern int get_array_bounds (struct type *type, LONGEST *low_bound,
1729                              LONGEST *high_bound);
1730
1731 extern int class_types_same_p (const struct type *, const struct type *);
1732
1733 extern int is_ancestor (struct type *, struct type *);
1734
1735 extern int is_public_ancestor (struct type *, struct type *);
1736
1737 extern int is_unique_ancestor (struct type *, struct value *);
1738
1739 /* Overload resolution */
1740
1741 #define LENGTH_MATCH(bv) ((bv)->rank[0])
1742
1743 /* * Badness if parameter list length doesn't match arg list length.  */
1744 extern const struct rank LENGTH_MISMATCH_BADNESS;
1745
1746 /* * Dummy badness value for nonexistent parameter positions.  */
1747 extern const struct rank TOO_FEW_PARAMS_BADNESS;
1748 /* * Badness if no conversion among types.  */
1749 extern const struct rank INCOMPATIBLE_TYPE_BADNESS;
1750
1751 /* * Badness of an exact match.  */
1752 extern const struct rank EXACT_MATCH_BADNESS;
1753
1754 /* * Badness of integral promotion.  */
1755 extern const struct rank INTEGER_PROMOTION_BADNESS;
1756 /* * Badness of floating promotion.  */
1757 extern const struct rank FLOAT_PROMOTION_BADNESS;
1758 /* * Badness of converting a derived class pointer
1759    to a base class pointer.  */
1760 extern const struct rank BASE_PTR_CONVERSION_BADNESS;
1761 /* * Badness of integral conversion.  */
1762 extern const struct rank INTEGER_CONVERSION_BADNESS;
1763 /* * Badness of floating conversion.  */
1764 extern const struct rank FLOAT_CONVERSION_BADNESS;
1765 /* * Badness of integer<->floating conversions.  */
1766 extern const struct rank INT_FLOAT_CONVERSION_BADNESS;
1767 /* * Badness of conversion of pointer to void pointer.  */
1768 extern const struct rank VOID_PTR_CONVERSION_BADNESS;
1769 /* * Badness of conversion to boolean.  */
1770 extern const struct rank BOOL_CONVERSION_BADNESS;
1771 /* * Badness of converting derived to base class.  */
1772 extern const struct rank BASE_CONVERSION_BADNESS;
1773 /* * Badness of converting from non-reference to reference.  */
1774 extern const struct rank REFERENCE_CONVERSION_BADNESS;
1775 /* * Badness of converting integer 0 to NULL pointer.  */
1776 extern const struct rank NULL_POINTER_CONVERSION;
1777
1778 /* Non-standard conversions allowed by the debugger */
1779
1780 /* * Converting a pointer to an int is usually OK.  */
1781 extern const struct rank NS_POINTER_CONVERSION_BADNESS;
1782
1783 /* * Badness of converting a (non-zero) integer constant
1784    to a pointer.  */
1785 extern const struct rank NS_INTEGER_POINTER_CONVERSION_BADNESS;
1786
1787 extern struct rank sum_ranks (struct rank a, struct rank b);
1788 extern int compare_ranks (struct rank a, struct rank b);
1789
1790 extern int compare_badness (struct badness_vector *, struct badness_vector *);
1791
1792 extern struct badness_vector *rank_function (struct type **, int,
1793                                              struct value **, int);
1794
1795 extern struct rank rank_one_type (struct type *, struct type *,
1796                                   struct value *);
1797
1798 extern void recursive_dump_type (struct type *, int);
1799
1800 extern int field_is_static (struct field *);
1801
1802 /* printcmd.c */
1803
1804 extern void print_scalar_formatted (const void *, struct type *,
1805                                     const struct value_print_options *,
1806                                     int, struct ui_file *);
1807
1808 extern int can_dereference (struct type *);
1809
1810 extern int is_integral_type (struct type *);
1811
1812 extern int is_scalar_type_recursive (struct type *);
1813
1814 extern void maintenance_print_type (char *, int);
1815
1816 extern htab_t create_copied_types_hash (struct objfile *objfile);
1817
1818 extern struct type *copy_type_recursive (struct objfile *objfile,
1819                                          struct type *type,
1820                                          htab_t copied_types);
1821
1822 extern struct type *copy_type (const struct type *type);
1823
1824 extern int types_equal (struct type *, struct type *);
1825
1826 extern int types_deeply_equal (struct type *, struct type *);
1827
1828 #endif /* GDBTYPES_H */