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