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