OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gdb-7.1/] [gdb/] [gdbtypes.h] - Blame information for rev 853

Go to most recent revision | Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.