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

Subversion Repositories or1k

[/] [or1k/] [trunk/] [gdb-5.3/] [gdb/] [gdbtypes.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1181 sfurman
/* Internal type definitions for GDB.
2
   Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
3
   Free Software Foundation, Inc.
4
   Contributed by Cygnus Support, using pieces from other GDB modules.
5
 
6
   This file is part of GDB.
7
 
8
   This program is free software; you can redistribute it and/or modify
9
   it under the terms of the GNU General Public License as published by
10
   the Free Software Foundation; either version 2 of the License, or
11
   (at your option) any later version.
12
 
13
   This program is distributed in the hope that it will be useful,
14
   but WITHOUT ANY WARRANTY; without even the implied warranty of
15
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
   GNU General Public License for more details.
17
 
18
   You should have received a copy of the GNU General Public License
19
   along with this program; if not, write to the Free Software
20
   Foundation, Inc., 59 Temple Place - Suite 330,
21
   Boston, MA 02111-1307, USA.  */
22
 
23
#if !defined (GDBTYPES_H)
24
#define GDBTYPES_H 1
25
 
26
/* Forward declarations for prototypes.  */
27
struct block;
28
 
29
/* Codes for `fundamental types'.  This is a monstrosity based on the
30
   bogus notion that there are certain compiler-independent
31
   `fundamental types'.  None of these is well-defined (how big is
32
   FT_SHORT?  Does it depend on the language?  How does the
33
   language-specific code know which type to correlate to FT_SHORT?)  */
34
 
35
#define FT_VOID                 0
36
#define FT_BOOLEAN              1
37
#define FT_CHAR                 2       /* we use this for not-unsigned C/C++ chars */
38
#define FT_SIGNED_CHAR          3       /* we use this for C++ signed chars */
39
#define FT_UNSIGNED_CHAR        4       /* we use this for C/C++ unsigned chars */
40
#define FT_SHORT                5
41
#define FT_SIGNED_SHORT         6
42
#define FT_UNSIGNED_SHORT       7
43
#define FT_INTEGER              8
44
#define FT_SIGNED_INTEGER       9
45
#define FT_UNSIGNED_INTEGER     10
46
#define FT_LONG                 11
47
#define FT_SIGNED_LONG          12
48
#define FT_UNSIGNED_LONG        13
49
#define FT_LONG_LONG            14
50
#define FT_SIGNED_LONG_LONG     15
51
#define FT_UNSIGNED_LONG_LONG   16
52
#define FT_FLOAT                17
53
#define FT_DBL_PREC_FLOAT       18
54
#define FT_EXT_PREC_FLOAT       19
55
#define FT_COMPLEX              20
56
#define FT_DBL_PREC_COMPLEX     21
57
#define FT_EXT_PREC_COMPLEX     22
58
#define FT_STRING               23
59
#define FT_FIXED_DECIMAL        24
60
#define FT_FLOAT_DECIMAL        25
61
#define FT_BYTE                 26
62
#define FT_UNSIGNED_BYTE        27
63
#define FT_TEMPLATE_ARG         28
64
 
65
#define FT_NUM_MEMBERS          29      /* Highest FT_* above, plus one. */
66
 
67
/* Some macros for char-based bitfields.  */
68
 
69
#define B_SET(a,x)      ((a)[(x)>>3] |= (1 << ((x)&7)))
70
#define B_CLR(a,x)      ((a)[(x)>>3] &= ~(1 << ((x)&7)))
71
#define B_TST(a,x)      ((a)[(x)>>3] & (1 << ((x)&7)))
72
#define B_TYPE          unsigned char
73
#define B_BYTES(x)      ( 1 + ((x)>>3) )
74
#define B_CLRALL(a,x)   memset ((a), 0, B_BYTES(x))
75
 
76
/* Different kinds of data types are distinguished by the `code' field.  */
77
 
78
enum type_code
79
  {
80
    TYPE_CODE_UNDEF,            /* Not used; catches errors */
81
    TYPE_CODE_PTR,              /* Pointer type */
82
    TYPE_CODE_ARRAY,            /* Array type with lower & upper bounds. */
83
    TYPE_CODE_STRUCT,           /* C struct or Pascal record */
84
    TYPE_CODE_UNION,            /* C union or Pascal variant part */
85
    TYPE_CODE_ENUM,             /* Enumeration type */
86
    TYPE_CODE_FUNC,             /* Function type */
87
    TYPE_CODE_INT,              /* Integer type */
88
 
89
    /* Floating type.  This is *NOT* a complex type.  Beware, there are parts
90
       of GDB which bogusly assume that TYPE_CODE_FLT can mean complex.  */
91
    TYPE_CODE_FLT,
92
 
93
    /* Void type.  The length field specifies the length (probably always
94
       one) which is used in pointer arithmetic involving pointers to
95
       this type, but actually dereferencing such a pointer is invalid;
96
       a void type has no length and no actual representation in memory
97
       or registers.  A pointer to a void type is a generic pointer.  */
98
    TYPE_CODE_VOID,
99
 
100
    TYPE_CODE_SET,              /* Pascal sets */
101
    TYPE_CODE_RANGE,            /* Range (integers within spec'd bounds) */
102
 
103
    /* A string type which is like an array of character but prints
104
       differently (at least for (OBSOLETE) CHILL (OBSOLETE)).  It
105
       does not contain a length field as Pascal strings (for many
106
       Pascals, anyway) do; if we want to deal with such strings, we
107
       should use a new type code.  */
108
    TYPE_CODE_STRING,
109
 
110
    /* String of bits; like TYPE_CODE_SET but prints differently (at
111
       least for (OBSOLETE) CHILL (OBSOLETE)).  */
112
    TYPE_CODE_BITSTRING,
113
 
114
    /* Unknown type.  The length field is valid if we were able to
115
       deduce that much about the type, or 0 if we don't even know that.  */
116
    TYPE_CODE_ERROR,
117
 
118
    /* C++ */
119
    TYPE_CODE_MEMBER,           /* Member type */
120
    TYPE_CODE_METHOD,           /* Method type */
121
    TYPE_CODE_REF,              /* C++ Reference types */
122
 
123
    TYPE_CODE_CHAR,             /* *real* character type */
124
 
125
    /* Boolean type.  0 is false, 1 is true, and other values are non-boolean
126
       (e.g. FORTRAN "logical" used as unsigned int).  */
127
    TYPE_CODE_BOOL,
128
 
129
    /* Fortran */
130
    TYPE_CODE_COMPLEX,          /* Complex float */
131
 
132
    TYPE_CODE_TYPEDEF,
133
    TYPE_CODE_TEMPLATE,         /* C++ template */
134
    TYPE_CODE_TEMPLATE_ARG      /* C++ template arg */
135
 
136
  };
137
 
138
/* For now allow source to use TYPE_CODE_CLASS for C++ classes, as an
139
   alias for TYPE_CODE_STRUCT.  This is for DWARF, which has a distinct
140
   "class" attribute.  Perhaps we should actually have a separate TYPE_CODE
141
   so that we can print "class" or "struct" depending on what the debug
142
   info said.  It's not clear we should bother.  */
143
 
144
#define TYPE_CODE_CLASS TYPE_CODE_STRUCT
145
 
146
/* Some bits for the type's flags word, and macros to test them. */
147
 
148
/* Unsigned integer type.  If this is not set for a TYPE_CODE_INT, the
149
   type is signed (unless TYPE_FLAG_NOSIGN (below) is set). */
150
 
151
#define TYPE_FLAG_UNSIGNED      (1 << 0)
152
#define TYPE_UNSIGNED(t)        (TYPE_FLAGS (t) & TYPE_FLAG_UNSIGNED)
153
 
154
/* No sign for this type.  In C++, "char", "signed char", and "unsigned
155
   char" are distinct types; so we need an extra flag to indicate the
156
   absence of a sign! */
157
 
158
#define TYPE_FLAG_NOSIGN        (1 << 1)
159
#define TYPE_NOSIGN(t)          (TYPE_FLAGS (t) & TYPE_FLAG_NOSIGN)
160
 
161
/* This appears in a type's flags word if it is a stub type (e.g., if
162
   someone referenced a type that wasn't defined in a source file
163
   via (struct sir_not_appearing_in_this_film *)).  */
164
 
165
#define TYPE_FLAG_STUB          (1 << 2)
166
#define TYPE_STUB(t)            (TYPE_FLAGS (t) & TYPE_FLAG_STUB)
167
 
168
/* The target type of this type is a stub type, and this type needs to
169
   be updated if it gets un-stubbed in check_typedef.
170
   Used for arrays and ranges, in which TYPE_LENGTH of the array/range
171
   gets set based on the TYPE_LENGTH of the target type.
172
   Also, set for TYPE_CODE_TYPEDEF. */
173
 
174
#define TYPE_FLAG_TARGET_STUB   (1 << 3)
175
#define TYPE_TARGET_STUB(t)     (TYPE_FLAGS (t) & TYPE_FLAG_TARGET_STUB)
176
 
177
/* Static type.  If this is set, the corresponding type had
178
 * a static modifier.
179
 * Note: This may be unnecessary, since static data members
180
 * are indicated by other means (bitpos == -1)
181
 */
182
 
183
#define TYPE_FLAG_STATIC        (1 << 4)
184
#define TYPE_STATIC(t)          (TYPE_FLAGS (t) & TYPE_FLAG_STATIC)
185
 
186
/* Constant type.  If this is set, the corresponding type has a
187
 * const modifier.
188
 */
189
 
190
#define TYPE_FLAG_CONST         (1 << 5)
191
#define TYPE_CONST(t)           (TYPE_INSTANCE_FLAGS (t) & TYPE_FLAG_CONST)
192
 
193
/* Volatile type.  If this is set, the corresponding type has a
194
 * volatile modifier.
195
 */
196
 
197
#define TYPE_FLAG_VOLATILE      (1 << 6)
198
#define TYPE_VOLATILE(t)        (TYPE_INSTANCE_FLAGS (t) & TYPE_FLAG_VOLATILE)
199
 
200
 
201
/* This is a function type which appears to have a prototype.  We need this
202
   for function calls in order to tell us if it's necessary to coerce the args,
203
   or to just do the standard conversions.  This is used with a short field. */
204
 
205
#define TYPE_FLAG_PROTOTYPED    (1 << 7)
206
#define TYPE_PROTOTYPED(t)      (TYPE_FLAGS (t) & TYPE_FLAG_PROTOTYPED)
207
 
208
/* This flag is used to indicate that processing for this type
209
   is incomplete.
210
 
211
   (Mostly intended for HP platforms, where class methods, for
212
   instance, can be encountered before their classes in the debug
213
   info; the incomplete type has to be marked so that the class and
214
   the method can be assigned correct types.) */
215
 
216
#define TYPE_FLAG_INCOMPLETE    (1 << 8)
217
#define TYPE_INCOMPLETE(t)      (TYPE_FLAGS (t) & TYPE_FLAG_INCOMPLETE)
218
 
219
/* Instruction-space delimited type.  This is for Harvard architectures
220
   which have separate instruction and data address spaces (and perhaps
221
   others).
222
 
223
   GDB usually defines a flat address space that is a superset of the
224
   architecture's two (or more) address spaces, but this is an extension
225
   of the architecture's model.
226
 
227
   If TYPE_FLAG_INST is set, an object of the corresponding type
228
   resides in instruction memory, even if its address (in the extended
229
   flat address space) does not reflect this.
230
 
231
   Similarly, if TYPE_FLAG_DATA is set, then an object of the
232
   corresponding type resides in the data memory space, even if
233
   this is not indicated by its (flat address space) address.
234
 
235
   If neither flag is set, the default space for functions / methods
236
   is instruction space, and for data objects is data memory.  */
237
 
238
#define TYPE_FLAG_CODE_SPACE    (1 << 9)
239
#define TYPE_CODE_SPACE(t)      (TYPE_INSTANCE_FLAGS (t) & TYPE_FLAG_CODE_SPACE)
240
 
241
#define TYPE_FLAG_DATA_SPACE    (1 << 10)
242
#define TYPE_DATA_SPACE(t)      (TYPE_INSTANCE_FLAGS (t) & TYPE_FLAG_DATA_SPACE)
243
 
244
/* FIXME drow/2002-06-03:  Only used for methods, but applies as well
245
   to functions.  */
246
 
247
#define TYPE_FLAG_VARARGS       (1 << 11)
248
#define TYPE_VARARGS(t)         (TYPE_FLAGS (t) & TYPE_FLAG_VARARGS)
249
 
250
/* Identify a vector type.  Gcc is handling this by adding an extra
251
   attribute to the array type.  We slurp that in as a new flag of a
252
   type.  This is used only in dwarf2read.c.  */
253
#define TYPE_FLAG_VECTOR        (1 << 12)
254
#define TYPE_VECTOR(t)          (TYPE_FLAGS (t) & TYPE_FLAG_VECTOR)
255
 
256
struct main_type
257
{
258
  /* Code for kind of type */
259
 
260
  enum type_code code;
261
 
262
  /* Name of this type, or NULL if none.
263
 
264
     This is used for printing only, except by poorly designed C++ code.
265
     For looking up a name, look for a symbol in the VAR_NAMESPACE.  */
266
 
267
  char *name;
268
 
269
  /* Tag name for this type, or NULL if none.  This means that the
270
     name of the type consists of a keyword followed by the tag name.
271
     Which keyword is determined by the type code ("struct" for
272
     TYPE_CODE_STRUCT, etc.).  As far as I know C/C++ are the only languages
273
     with this feature.
274
 
275
     This is used for printing only, except by poorly designed C++ code.
276
     For looking up a name, look for a symbol in the STRUCT_NAMESPACE.
277
     One more legitimate use is that if TYPE_FLAG_STUB is set, this is
278
     the name to use to look for definitions in other files.  */
279
 
280
  char *tag_name;
281
 
282
  /* Length of storage for a value of this type.  This is what
283
     sizeof(type) would return; use it for address arithmetic,
284
     memory reads and writes, etc.  This size includes padding.  For
285
     example, an i386 extended-precision floating point value really
286
     only occupies ten bytes, but most ABI's declare its size to be
287
     12 bytes, to preserve alignment.  A `struct type' representing
288
     such a floating-point type would have a `length' value of 12,
289
     even though the last two bytes are unused.
290
 
291
     There's a bit of a host/target mess here, if you're concerned
292
     about machines whose bytes aren't eight bits long, or who don't
293
     have byte-addressed memory.  Various places pass this to memcpy
294
     and such, meaning it must be in units of host bytes.  Various
295
     other places expect they can calculate addresses by adding it
296
     and such, meaning it must be in units of target bytes.  For
297
     some DSP targets, in which HOST_CHAR_BIT will (presumably) be 8
298
     and TARGET_CHAR_BIT will be (say) 32, this is a problem.
299
 
300
     One fix would be to make this field in bits (requiring that it
301
     always be a multiple of HOST_CHAR_BIT and TARGET_CHAR_BIT) ---
302
     the other choice would be to make it consistently in units of
303
     HOST_CHAR_BIT.  However, this would still fail to address
304
     machines based on a ternary or decimal representation.  */
305
 
306
  unsigned length;
307
 
308
  /* FIXME, these should probably be restricted to a Fortran-specific
309
     field in some fashion.  */
310
#define BOUND_CANNOT_BE_DETERMINED   5
311
#define BOUND_BY_REF_ON_STACK        4
312
#define BOUND_BY_VALUE_ON_STACK      3
313
#define BOUND_BY_REF_IN_REG          2
314
#define BOUND_BY_VALUE_IN_REG        1
315
#define BOUND_SIMPLE                 0
316
  int upper_bound_type;
317
  int lower_bound_type;
318
 
319
  /* Every type is now associated with a particular objfile, and the
320
     type is allocated on the type_obstack for that objfile.  One problem
321
     however, is that there are times when gdb allocates new types while
322
     it is not in the process of reading symbols from a particular objfile.
323
     Fortunately, these happen when the type being created is a derived
324
     type of an existing type, such as in lookup_pointer_type().  So
325
     we can just allocate the new type using the same objfile as the
326
     existing type, but to do this we need a backpointer to the objfile
327
     from the existing type.  Yes this is somewhat ugly, but without
328
     major overhaul of the internal type system, it can't be avoided
329
     for now. */
330
 
331
  struct objfile *objfile;
332
 
333
  /* For a pointer type, describes the type of object pointed to.
334
     For an array type, describes the type of the elements.
335
     For a function or method type, describes the type of the return value.
336
     For a range type, describes the type of the full range.
337
     For a complex type, describes the type of each coordinate.
338
     Unused otherwise.  */
339
 
340
  struct type *target_type;
341
 
342
  /* Flags about this type.  */
343
 
344
  int flags;
345
 
346
  /* Number of fields described for this type */
347
 
348
  short nfields;
349
 
350
  /* For structure and union types, a description of each field.
351
     For set and pascal array types, there is one "field",
352
     whose type is the domain type of the set or array.
353
     For range types, there are two "fields",
354
     the minimum and maximum values (both inclusive).
355
     For enum types, each possible value is described by one "field".
356
     For a function or method type, a "field" for each parameter.
357
     For C++ classes, there is one field for each base class (if it is
358
     a derived class) plus one field for each class data member.  Member
359
     functions are recorded elsewhere.
360
 
361
     Using a pointer to a separate array of fields
362
     allows all types to have the same size, which is useful
363
     because we can allocate the space for a type before
364
     we know what to put in it.  */
365
 
366
  struct field
367
  {
368
    union field_location
369
    {
370
      /* Position of this field, counting in bits from start of
371
         containing structure.
372
         For BITS_BIG_ENDIAN=1 targets, it is the bit offset to the MSB.
373
         For BITS_BIG_ENDIAN=0 targets, it is the bit offset to the LSB.
374
         For a range bound or enum value, this is the value itself. */
375
 
376
      int bitpos;
377
 
378
      /* For a static field, if TYPE_FIELD_STATIC_HAS_ADDR then physaddr
379
         is the location (in the target) of the static field.
380
         Otherwise, physname is the mangled label of the static field. */
381
 
382
      CORE_ADDR physaddr;
383
      char *physname;
384
 
385
      /* For a function or member type, this is 1 if the argument is marked
386
         artificial.  Artificial arguments should not be shown to the
387
         user.  */
388
      int artificial;
389
    }
390
    loc;
391
 
392
    /* Size of this field, in bits, or zero if not packed.
393
       For an unpacked field, the field's type's length
394
       says how many bytes the field occupies.
395
       A value of -1 or -2 indicates a static field;  -1 means the location
396
       is specified by the label loc.physname;  -2 means that loc.physaddr
397
       specifies the actual address. */
398
 
399
    int bitsize;
400
 
401
    /* In a struct or union type, type of this field.
402
       In a function or member type, type of this argument.
403
       In an array type, the domain-type of the array.  */
404
 
405
    struct type *type;
406
 
407
    /* Name of field, value or argument.
408
       NULL for range bounds, array domains, and member function
409
       arguments.  */
410
 
411
    char *name;
412
 
413
  } *fields;
414
 
415
  /* For types with virtual functions (TYPE_CODE_STRUCT), VPTR_BASETYPE
416
     is the base class which defined the virtual function table pointer.
417
 
418
     For types that are pointer to member types (TYPE_CODE_MEMBER),
419
     VPTR_BASETYPE is the type that this pointer is a member of.
420
 
421
     For method types (TYPE_CODE_METHOD), VPTR_BASETYPE is the aggregate
422
     type that contains the method.
423
 
424
     Unused otherwise.  */
425
 
426
  struct type *vptr_basetype;
427
 
428
  /* Field number of the virtual function table pointer in
429
     VPTR_BASETYPE.  If -1, we were unable to find the virtual
430
     function table pointer in initial symbol reading, and
431
     fill_in_vptr_fieldno should be called to find it if possible.
432
 
433
     Unused if this type does not have virtual functions.  */
434
 
435
  int vptr_fieldno;
436
 
437
  /* Slot to point to additional language-specific fields of this type.  */
438
 
439
  union type_specific
440
  {
441
    /* CPLUS_STUFF is for TYPE_CODE_STRUCT.  It is initialized to point to
442
       cplus_struct_default, a default static instance of a struct
443
       cplus_struct_type. */
444
 
445
    struct cplus_struct_type *cplus_stuff;
446
 
447
    /* FLOATFORMAT is for TYPE_CODE_FLT.  It is a pointer to the
448
       floatformat object that describes the floating-point value
449
       that resides within the type.  */
450
 
451
    const struct floatformat *floatformat;
452
  } type_specific;
453
};
454
 
455
/* A ``struct type'' describes a particular instance of a type, with
456
   some particular qualification.  */
457
struct type
458
{
459
  /* Type that is a pointer to this type.
460
     NULL if no such pointer-to type is known yet.
461
     The debugger may add the address of such a type
462
     if it has to construct one later.  */
463
 
464
  struct type *pointer_type;
465
 
466
  /* C++: also need a reference type.  */
467
 
468
  struct type *reference_type;
469
 
470
  /* Variant chain.  This points to a type that differs from this one only
471
     in qualifiers.  Currently, the possible qualifiers are const, volatile,
472
     code-space, and data-space.  The variants are linked in a circular
473
     ring and share MAIN_TYPE.  */
474
  struct type *chain;
475
 
476
  /* Flags specific to this instance of the type, indicating where
477
     on the ring we are.  */
478
  int instance_flags;
479
 
480
  /* Core type, shared by a group of qualified types.  */
481
  struct main_type *main_type;
482
};
483
 
484
#define NULL_TYPE ((struct type *) 0)
485
 
486
/* C++ language-specific information for TYPE_CODE_STRUCT and TYPE_CODE_UNION
487
   nodes.  */
488
 
489
struct cplus_struct_type
490
  {
491
    /* Number of base classes this type derives from.  The baseclasses are
492
       stored in the first N_BASECLASSES fields (i.e. the `fields' field of
493
       the struct type).  I think only the `type' field of such a field has
494
       any meaning.  */
495
 
496
    short n_baseclasses;
497
 
498
    /* Number of methods with unique names.  All overloaded methods with
499
       the same name count only once. */
500
 
501
    short nfn_fields;
502
 
503
    /* Number of methods described for this type, not including the
504
       methods that it derives from.  */
505
 
506
    short nfn_fields_total;
507
 
508
    /* The "declared_type" field contains a code saying how the
509
       user really declared this type, e.g., "class s", "union s",
510
       "struct s".
511
       The 3 above things come out from the C++ compiler looking like classes,
512
       but we keep track of the real declaration so we can give
513
       the correct information on "ptype". (Note: TEMPLATE may not
514
       belong in this list...)  */
515
 
516
#define DECLARED_TYPE_CLASS 0
517
#define DECLARED_TYPE_UNION 1
518
#define DECLARED_TYPE_STRUCT 2
519
#define DECLARED_TYPE_TEMPLATE 3
520
    short declared_type;        /* One of the above codes */
521
 
522
    /* For derived classes, the number of base classes is given by n_baseclasses
523
       and virtual_field_bits is a bit vector containing one bit per base class.
524
       If the base class is virtual, the corresponding bit will be set.
525
       I.E, given:
526
 
527
       class A{};
528
       class B{};
529
       class C : public B, public virtual A {};
530
 
531
       B is a baseclass of C; A is a virtual baseclass for C.
532
       This is a C++ 2.0 language feature. */
533
 
534
    B_TYPE *virtual_field_bits;
535
 
536
    /* For classes with private fields, the number of fields is given by
537
       nfields and private_field_bits is a bit vector containing one bit
538
       per field.
539
       If the field is private, the corresponding bit will be set. */
540
 
541
    B_TYPE *private_field_bits;
542
 
543
    /* For classes with protected fields, the number of fields is given by
544
       nfields and protected_field_bits is a bit vector containing one bit
545
       per field.
546
       If the field is private, the corresponding bit will be set. */
547
 
548
    B_TYPE *protected_field_bits;
549
 
550
    /* for classes with fields to be ignored, either this is optimized out
551
       or this field has length 0 */
552
 
553
    B_TYPE *ignore_field_bits;
554
 
555
    /* For classes, structures, and unions, a description of each field,
556
       which consists of an overloaded name, followed by the types of
557
       arguments that the method expects, and then the name after it
558
       has been renamed to make it distinct.
559
 
560
       fn_fieldlists points to an array of nfn_fields of these. */
561
 
562
    struct fn_fieldlist
563
      {
564
 
565
        /* The overloaded name.  */
566
 
567
        char *name;
568
 
569
        /* The number of methods with this name.  */
570
 
571
        int length;
572
 
573
        /* The list of methods.  */
574
 
575
        struct fn_field
576
          {
577
 
578
            /* If is_stub is clear, this is the mangled name which we can
579
               look up to find the address of the method (FIXME: it would
580
               be cleaner to have a pointer to the struct symbol here
581
               instead).  */
582
 
583
            /* If is_stub is set, this is the portion of the mangled
584
               name which specifies the arguments.  For example, "ii",
585
               if there are two int arguments, or "" if there are no
586
               arguments.  See gdb_mangle_name for the conversion from this
587
               format to the one used if is_stub is clear.  */
588
 
589
            char *physname;
590
 
591
            /* The function type for the method.
592
               (This comment used to say "The return value of the method",
593
               but that's wrong. The function type
594
               is expected here, i.e. something with TYPE_CODE_FUNC,
595
               and *not* the return-value type). */
596
 
597
            struct type *type;
598
 
599
            /* For virtual functions.
600
               First baseclass that defines this virtual function.   */
601
 
602
            struct type *fcontext;
603
 
604
            /* Attributes. */
605
 
606
            unsigned int is_const:1;
607
            unsigned int is_volatile:1;
608
            unsigned int is_private:1;
609
            unsigned int is_protected:1;
610
            unsigned int is_public:1;
611
            unsigned int is_abstract:1;
612
            unsigned int is_static:1;
613
            unsigned int is_final:1;
614
            unsigned int is_synchronized:1;
615
            unsigned int is_native:1;
616
            unsigned int is_artificial:1;
617
 
618
            /* A stub method only has some fields valid (but they are enough
619
               to reconstruct the rest of the fields).  */
620
            unsigned int is_stub:1;
621
 
622
            /* C++ method that is inlined */
623
            unsigned int is_inlined:1;
624
 
625
            /* Unused.  */
626
            unsigned int dummy:3;
627
 
628
            /* Index into that baseclass's virtual function table,
629
               minus 2; else if static: VOFFSET_STATIC; else: 0.  */
630
 
631
            unsigned int voffset:16;
632
 
633
#define VOFFSET_STATIC 1
634
 
635
          }
636
         *fn_fields;
637
 
638
      }
639
     *fn_fieldlists;
640
 
641
    /* If this "struct type" describes a template, then it
642
     * has arguments. "template_args" points to an array of
643
     * template arg descriptors, of length "ntemplate_args".
644
     * The only real information in each of these template arg descriptors
645
     * is a name. "type" will typically just point to a "struct type" with
646
     * the placeholder TYPE_CODE_TEMPLATE_ARG type.
647
     */
648
    short ntemplate_args;
649
    struct template_arg
650
      {
651
        char *name;
652
        struct type *type;
653
      }
654
     *template_args;
655
 
656
    /* If this "struct type" describes a template, it has a list
657
     * of instantiations. "instantiations" is a pointer to an array
658
     * of type's, one representing each instantiation. There
659
     * are "ninstantiations" elements in this array.
660
     */
661
    short ninstantiations;
662
    struct type **instantiations;
663
 
664
    /* The following points to information relevant to the runtime model
665
     * of the compiler.
666
     * Currently being used only for HP's ANSI C++ compiler.
667
     * (This type may have to be changed/enhanced for other compilers.)
668
     *
669
     * RUNTIME_PTR is NULL if there is no runtime information (currently
670
     * this means the type was not compiled by HP aCC).
671
     *
672
     * Fields in structure pointed to:
673
     * ->HAS_VTABLE : 0 => no virtual table, 1 => vtable present
674
     *
675
     * ->PRIMARY_BASE points to the first non-virtual base class that has
676
     * a virtual table.
677
     *
678
     * ->VIRTUAL_BASE_LIST points to a list of struct type * pointers that
679
     * point to the type information for all virtual bases among this type's
680
     * ancestors.
681
     */
682
    struct runtime_info
683
      {
684
        short has_vtable;
685
        struct type *primary_base;
686
        struct type **virtual_base_list;
687
      }
688
     *runtime_ptr;
689
 
690
    /* Pointer to information about enclosing scope, if this is a
691
     * local type.  If it is not a local type, this is NULL
692
     */
693
    struct local_type_info
694
      {
695
        char *file;
696
        int line;
697
      }
698
     *localtype_ptr;
699
  };
700
 
701
/* Struct used in computing virtual base list */
702
struct vbase
703
  {
704
    struct type *vbasetype;     /* pointer to virtual base */
705
    struct vbase *next;         /* next in chain */
706
  };
707
 
708
/* Struct used for ranking a function for overload resolution */
709
struct badness_vector
710
  {
711
    int length;
712
    int *rank;
713
  };
714
 
715
/* The default value of TYPE_CPLUS_SPECIFIC(T) points to the
716
   this shared static structure. */
717
 
718
extern const struct cplus_struct_type cplus_struct_default;
719
 
720
extern void allocate_cplus_struct_type (struct type *);
721
 
722
#define INIT_CPLUS_SPECIFIC(type) \
723
  (TYPE_CPLUS_SPECIFIC(type)=(struct cplus_struct_type*)&cplus_struct_default)
724
#define ALLOCATE_CPLUS_STRUCT_TYPE(type) allocate_cplus_struct_type (type)
725
#define HAVE_CPLUS_STRUCT(type) \
726
  (TYPE_CPLUS_SPECIFIC(type) != &cplus_struct_default)
727
 
728
#define TYPE_INSTANCE_FLAGS(thistype) (thistype)->instance_flags
729
#define TYPE_MAIN_TYPE(thistype) (thistype)->main_type
730
#define TYPE_NAME(thistype) TYPE_MAIN_TYPE(thistype)->name
731
#define TYPE_TAG_NAME(type) TYPE_MAIN_TYPE(type)->tag_name
732
#define TYPE_TARGET_TYPE(thistype) TYPE_MAIN_TYPE(thistype)->target_type
733
#define TYPE_POINTER_TYPE(thistype) (thistype)->pointer_type
734
#define TYPE_REFERENCE_TYPE(thistype) (thistype)->reference_type
735
#define TYPE_CHAIN(thistype) (thistype)->chain
736
/* Note that if thistype is a TYPEDEF type, you have to call check_typedef.
737
   But check_typedef does set the TYPE_LENGTH of the TYPEDEF type,
738
   so you only have to call check_typedef once.  Since allocate_value
739
   calls check_typedef, TYPE_LENGTH (VALUE_TYPE (X)) is safe.  */
740
#define TYPE_LENGTH(thistype) TYPE_MAIN_TYPE(thistype)->length
741
#define TYPE_OBJFILE(thistype) TYPE_MAIN_TYPE(thistype)->objfile
742
#define TYPE_FLAGS(thistype) TYPE_MAIN_TYPE(thistype)->flags
743
/* Note that TYPE_CODE can be TYPE_CODE_TYPEDEF, so if you want the real
744
   type, you need to do TYPE_CODE (check_type (this_type)). */
745
#define TYPE_CODE(thistype) TYPE_MAIN_TYPE(thistype)->code
746
#define TYPE_NFIELDS(thistype) TYPE_MAIN_TYPE(thistype)->nfields
747
#define TYPE_FIELDS(thistype) TYPE_MAIN_TYPE(thistype)->fields
748
#define TYPE_TEMPLATE_ARGS(thistype) TYPE_CPLUS_SPECIFIC(thistype)->template_args
749
#define TYPE_INSTANTIATIONS(thistype) TYPE_CPLUS_SPECIFIC(thistype)->instantiations
750
 
751
#define TYPE_INDEX_TYPE(type) TYPE_FIELD_TYPE (type, 0)
752
#define TYPE_LOW_BOUND(range_type) TYPE_FIELD_BITPOS (range_type, 0)
753
#define TYPE_HIGH_BOUND(range_type) TYPE_FIELD_BITPOS (range_type, 1)
754
 
755
/* Moto-specific stuff for FORTRAN arrays */
756
 
757
#define TYPE_ARRAY_UPPER_BOUND_TYPE(thistype) \
758
        TYPE_MAIN_TYPE(thistype)->upper_bound_type
759
#define TYPE_ARRAY_LOWER_BOUND_TYPE(thistype) \
760
        TYPE_MAIN_TYPE(thistype)->lower_bound_type
761
 
762
#define TYPE_ARRAY_UPPER_BOUND_VALUE(arraytype) \
763
   (TYPE_FIELD_BITPOS((TYPE_FIELD_TYPE((arraytype),0)),1))
764
 
765
#define TYPE_ARRAY_LOWER_BOUND_VALUE(arraytype) \
766
   (TYPE_FIELD_BITPOS((TYPE_FIELD_TYPE((arraytype),0)),0))
767
 
768
/* C++ */
769
 
770
#define TYPE_VPTR_BASETYPE(thistype) TYPE_MAIN_TYPE(thistype)->vptr_basetype
771
#define TYPE_DOMAIN_TYPE(thistype) TYPE_MAIN_TYPE(thistype)->vptr_basetype
772
#define TYPE_VPTR_FIELDNO(thistype) TYPE_MAIN_TYPE(thistype)->vptr_fieldno
773
#define TYPE_FN_FIELDS(thistype) TYPE_CPLUS_SPECIFIC(thistype)->fn_fields
774
#define TYPE_NFN_FIELDS(thistype) TYPE_CPLUS_SPECIFIC(thistype)->nfn_fields
775
#define TYPE_NFN_FIELDS_TOTAL(thistype) TYPE_CPLUS_SPECIFIC(thistype)->nfn_fields_total
776
#define TYPE_NTEMPLATE_ARGS(thistype) TYPE_CPLUS_SPECIFIC(thistype)->ntemplate_args
777
#define TYPE_NINSTANTIATIONS(thistype) TYPE_CPLUS_SPECIFIC(thistype)->ninstantiations
778
#define TYPE_DECLARED_TYPE(thistype) TYPE_CPLUS_SPECIFIC(thistype)->declared_type
779
#define TYPE_TYPE_SPECIFIC(thistype) TYPE_MAIN_TYPE(thistype)->type_specific
780
#define TYPE_CPLUS_SPECIFIC(thistype) TYPE_MAIN_TYPE(thistype)->type_specific.cplus_stuff
781
#define TYPE_FLOATFORMAT(thistype) TYPE_MAIN_TYPE(thistype)->type_specific.floatformat
782
#define TYPE_BASECLASS(thistype,index) TYPE_MAIN_TYPE(thistype)->fields[index].type
783
#define TYPE_N_BASECLASSES(thistype) TYPE_CPLUS_SPECIFIC(thistype)->n_baseclasses
784
#define TYPE_BASECLASS_NAME(thistype,index) TYPE_MAIN_TYPE(thistype)->fields[index].name
785
#define TYPE_BASECLASS_BITPOS(thistype,index) TYPE_FIELD_BITPOS(thistype,index)
786
#define BASETYPE_VIA_PUBLIC(thistype, index) \
787
  ((!TYPE_FIELD_PRIVATE(thistype, index)) && (!TYPE_FIELD_PROTECTED(thistype, index)))
788
 
789
#define BASETYPE_VIA_VIRTUAL(thistype, index) \
790
  (TYPE_CPLUS_SPECIFIC(thistype)->virtual_field_bits == NULL ? 0 \
791
    : B_TST(TYPE_CPLUS_SPECIFIC(thistype)->virtual_field_bits, (index)))
792
 
793
#define FIELD_TYPE(thisfld) ((thisfld).type)
794
#define FIELD_NAME(thisfld) ((thisfld).name)
795
#define FIELD_BITPOS(thisfld) ((thisfld).loc.bitpos)
796
#define FIELD_ARTIFICIAL(thisfld) ((thisfld).loc.artificial)
797
#define FIELD_BITSIZE(thisfld) ((thisfld).bitsize)
798
#define FIELD_PHYSNAME(thisfld) ((thisfld).loc.physname)
799
#define FIELD_PHYSADDR(thisfld) ((thisfld).loc.physaddr)
800
#define SET_FIELD_PHYSNAME(thisfld, name) \
801
  ((thisfld).bitsize = -1, FIELD_PHYSNAME(thisfld) = (name))
802
#define SET_FIELD_PHYSADDR(thisfld, name) \
803
  ((thisfld).bitsize = -2, FIELD_PHYSADDR(thisfld) = (name))
804
#define TYPE_FIELD(thistype, n) TYPE_MAIN_TYPE(thistype)->fields[n]
805
#define TYPE_FIELD_TYPE(thistype, n) FIELD_TYPE(TYPE_FIELD(thistype, n))
806
#define TYPE_FIELD_NAME(thistype, n) FIELD_NAME(TYPE_FIELD(thistype, n))
807
#define TYPE_FIELD_BITPOS(thistype, n) FIELD_BITPOS(TYPE_FIELD(thistype,n))
808
#define TYPE_FIELD_ARTIFICIAL(thistype, n) FIELD_ARTIFICIAL(TYPE_FIELD(thistype,n))
809
#define TYPE_FIELD_BITSIZE(thistype, n) FIELD_BITSIZE(TYPE_FIELD(thistype,n))
810
#define TYPE_FIELD_PACKED(thistype, n) (FIELD_BITSIZE(TYPE_FIELD(thistype,n))!=0)
811
#define TYPE_TEMPLATE_ARG(thistype, n) TYPE_CPLUS_SPECIFIC(thistype)->template_args[n]
812
#define TYPE_INSTANTIATION(thistype, n) TYPE_CPLUS_SPECIFIC(thistype)->instantiations[n]
813
 
814
#define TYPE_FIELD_PRIVATE_BITS(thistype) \
815
  TYPE_CPLUS_SPECIFIC(thistype)->private_field_bits
816
#define TYPE_FIELD_PROTECTED_BITS(thistype) \
817
  TYPE_CPLUS_SPECIFIC(thistype)->protected_field_bits
818
#define TYPE_FIELD_IGNORE_BITS(thistype) \
819
  TYPE_CPLUS_SPECIFIC(thistype)->ignore_field_bits
820
#define TYPE_FIELD_VIRTUAL_BITS(thistype) \
821
  TYPE_CPLUS_SPECIFIC(thistype)->virtual_field_bits
822
#define SET_TYPE_FIELD_PRIVATE(thistype, n) \
823
  B_SET (TYPE_CPLUS_SPECIFIC(thistype)->private_field_bits, (n))
824
#define SET_TYPE_FIELD_PROTECTED(thistype, n) \
825
  B_SET (TYPE_CPLUS_SPECIFIC(thistype)->protected_field_bits, (n))
826
#define SET_TYPE_FIELD_IGNORE(thistype, n) \
827
  B_SET (TYPE_CPLUS_SPECIFIC(thistype)->ignore_field_bits, (n))
828
#define SET_TYPE_FIELD_VIRTUAL(thistype, n) \
829
  B_SET (TYPE_CPLUS_SPECIFIC(thistype)->virtual_field_bits, (n))
830
#define TYPE_FIELD_PRIVATE(thistype, n) \
831
  (TYPE_CPLUS_SPECIFIC(thistype)->private_field_bits == NULL ? 0 \
832
    : B_TST(TYPE_CPLUS_SPECIFIC(thistype)->private_field_bits, (n)))
833
#define TYPE_FIELD_PROTECTED(thistype, n) \
834
  (TYPE_CPLUS_SPECIFIC(thistype)->protected_field_bits == NULL ? 0 \
835
    : B_TST(TYPE_CPLUS_SPECIFIC(thistype)->protected_field_bits, (n)))
836
#define TYPE_FIELD_IGNORE(thistype, n) \
837
  (TYPE_CPLUS_SPECIFIC(thistype)->ignore_field_bits == NULL ? 0 \
838
    : B_TST(TYPE_CPLUS_SPECIFIC(thistype)->ignore_field_bits, (n)))
839
#define TYPE_FIELD_VIRTUAL(thistype, n) \
840
  (TYPE_CPLUS_SPECIFIC(thistype)->virtual_field_bits == NULL ? 0 \
841
    : B_TST(TYPE_CPLUS_SPECIFIC(thistype)->virtual_field_bits, (n)))
842
 
843
#define TYPE_FIELD_STATIC(thistype, n) (TYPE_MAIN_TYPE (thistype)->fields[n].bitsize < 0)
844
#define TYPE_FIELD_STATIC_HAS_ADDR(thistype, n) (TYPE_MAIN_TYPE (thistype)->fields[n].bitsize == -2)
845
#define TYPE_FIELD_STATIC_PHYSNAME(thistype, n) FIELD_PHYSNAME(TYPE_FIELD(thistype, n))
846
#define TYPE_FIELD_STATIC_PHYSADDR(thistype, n) FIELD_PHYSADDR(TYPE_FIELD(thistype, n))
847
 
848
#define TYPE_FN_FIELDLISTS(thistype) TYPE_CPLUS_SPECIFIC(thistype)->fn_fieldlists
849
#define TYPE_FN_FIELDLIST(thistype, n) TYPE_CPLUS_SPECIFIC(thistype)->fn_fieldlists[n]
850
#define TYPE_FN_FIELDLIST1(thistype, n) TYPE_CPLUS_SPECIFIC(thistype)->fn_fieldlists[n].fn_fields
851
#define TYPE_FN_FIELDLIST_NAME(thistype, n) TYPE_CPLUS_SPECIFIC(thistype)->fn_fieldlists[n].name
852
#define TYPE_FN_FIELDLIST_LENGTH(thistype, n) TYPE_CPLUS_SPECIFIC(thistype)->fn_fieldlists[n].length
853
 
854
#define TYPE_FN_FIELD(thisfn, n) (thisfn)[n]
855
#define TYPE_FN_FIELD_PHYSNAME(thisfn, n) (thisfn)[n].physname
856
#define TYPE_FN_FIELD_TYPE(thisfn, n) (thisfn)[n].type
857
#define TYPE_FN_FIELD_ARGS(thisfn, n) TYPE_FIELDS ((thisfn)[n].type)
858
#define TYPE_FN_FIELD_CONST(thisfn, n) ((thisfn)[n].is_const)
859
#define TYPE_FN_FIELD_VOLATILE(thisfn, n) ((thisfn)[n].is_volatile)
860
#define TYPE_FN_FIELD_PRIVATE(thisfn, n) ((thisfn)[n].is_private)
861
#define TYPE_FN_FIELD_PROTECTED(thisfn, n) ((thisfn)[n].is_protected)
862
#define TYPE_FN_FIELD_PUBLIC(thisfn, n) ((thisfn)[n].is_public)
863
#define TYPE_FN_FIELD_STATIC(thisfn, n) ((thisfn)[n].is_static)
864
#define TYPE_FN_FIELD_FINAL(thisfn, n) ((thisfn)[n].is_final)
865
#define TYPE_FN_FIELD_SYNCHRONIZED(thisfn, n) ((thisfn)[n].is_synchronized)
866
#define TYPE_FN_FIELD_NATIVE(thisfn, n) ((thisfn)[n].is_native)
867
#define TYPE_FN_FIELD_ARTIFICIAL(thisfn, n) ((thisfn)[n].is_artificial)
868
#define TYPE_FN_FIELD_ABSTRACT(thisfn, n) ((thisfn)[n].is_abstract)
869
#define TYPE_FN_FIELD_STUB(thisfn, n) ((thisfn)[n].is_stub)
870
#define TYPE_FN_FIELD_INLINED(thisfn, n) ((thisfn)[n].is_inlined)
871
#define TYPE_FN_FIELD_FCONTEXT(thisfn, n) ((thisfn)[n].fcontext)
872
#define TYPE_FN_FIELD_VOFFSET(thisfn, n) ((thisfn)[n].voffset-2)
873
#define TYPE_FN_FIELD_VIRTUAL_P(thisfn, n) ((thisfn)[n].voffset > 1)
874
#define TYPE_FN_FIELD_STATIC_P(thisfn, n) ((thisfn)[n].voffset == VOFFSET_STATIC)
875
 
876
#define TYPE_RUNTIME_PTR(thistype) (TYPE_CPLUS_SPECIFIC(thistype)->runtime_ptr)
877
#define TYPE_VTABLE(thistype) (TYPE_RUNTIME_PTR(thistype)->has_vtable)
878
#define TYPE_HAS_VTABLE(thistype) (TYPE_RUNTIME_PTR(thistype) && TYPE_VTABLE(thistype))
879
#define TYPE_PRIMARY_BASE(thistype) (TYPE_RUNTIME_PTR(thistype)->primary_base)
880
#define TYPE_VIRTUAL_BASE_LIST(thistype) (TYPE_RUNTIME_PTR(thistype)->virtual_base_list)
881
 
882
#define TYPE_LOCALTYPE_PTR(thistype) (TYPE_CPLUS_SPECIFIC(thistype)->localtype_ptr)
883
#define TYPE_LOCALTYPE_FILE(thistype) (TYPE_CPLUS_SPECIFIC(thistype)->localtype_ptr->file)
884
#define TYPE_LOCALTYPE_LINE(thistype) (TYPE_CPLUS_SPECIFIC(thistype)->localtype_ptr->line)
885
 
886
#define TYPE_IS_OPAQUE(thistype) (((TYPE_CODE (thistype) == TYPE_CODE_STRUCT) ||        \
887
                                   (TYPE_CODE (thistype) == TYPE_CODE_UNION))        && \
888
                                  (TYPE_NFIELDS (thistype) == 0)                     && \
889
                                  (TYPE_CPLUS_SPECIFIC (thistype) && (TYPE_NFN_FIELDS (thistype) == 0)))
890
 
891
 
892
 
893
/* Implicit sizes */
894
extern struct type *builtin_type_void;
895
extern struct type *builtin_type_char;
896
extern struct type *builtin_type_short;
897
extern struct type *builtin_type_int;
898
extern struct type *builtin_type_long;
899
extern struct type *builtin_type_signed_char;
900
extern struct type *builtin_type_unsigned_char;
901
extern struct type *builtin_type_unsigned_short;
902
extern struct type *builtin_type_unsigned_int;
903
extern struct type *builtin_type_unsigned_long;
904
extern struct type *builtin_type_float;
905
extern struct type *builtin_type_double;
906
extern struct type *builtin_type_long_double;
907
extern struct type *builtin_type_complex;
908
extern struct type *builtin_type_double_complex;
909
extern struct type *builtin_type_string;
910
extern struct type *builtin_type_bool;
911
 
912
/* Address/pointer types: */
913
/* (C) Language `pointer to data' type.  Some target platforms use an
914
   implicitly {sign,zero} -extended 32 bit C language pointer on a 64
915
   bit ISA.  */
916
extern struct type *builtin_type_void_data_ptr;
917
 
918
/* (C) Language `pointer to function returning void' type.  Since
919
   ANSI, C standards have explicitly said that pointers to functions
920
   and pointers to data are not interconvertible --- that is, you
921
   can't cast a function pointer to void * and back, and expect to get
922
   the same value.  However, all function pointer types are
923
   interconvertible, so void (*) () can server as a generic function
924
   pointer.  */
925
extern struct type *builtin_type_void_func_ptr;
926
 
927
/* The target CPU's address type.  This is the ISA address size. */
928
extern struct type *builtin_type_CORE_ADDR;
929
/* The symbol table address type.  Some object file formats have a 32
930
   bit address type even though the TARGET has a 64 bit pointer type
931
   (cf MIPS). */
932
extern struct type *builtin_type_bfd_vma;
933
 
934
/* Explicit sizes - see C9X <intypes.h> for naming scheme */
935
extern struct type *builtin_type_int8;
936
extern struct type *builtin_type_uint8;
937
extern struct type *builtin_type_int16;
938
extern struct type *builtin_type_uint16;
939
extern struct type *builtin_type_int32;
940
extern struct type *builtin_type_uint32;
941
extern struct type *builtin_type_int64;
942
extern struct type *builtin_type_uint64;
943
extern struct type *builtin_type_int128;
944
extern struct type *builtin_type_uint128;
945
 
946
/* SIMD types.  We inherit these names from GCC.  */
947
extern struct type *builtin_type_v4sf;
948
extern struct type *builtin_type_v4si;
949
extern struct type *builtin_type_v16qi;
950
extern struct type *builtin_type_v8qi;
951
extern struct type *builtin_type_v8hi;
952
extern struct type *builtin_type_v4hi;
953
extern struct type *builtin_type_v2si;
954
 
955
/* Type for 64 bit vectors. */
956
extern struct type *builtin_type_vec64;
957
extern struct type *builtin_type_vec64i;
958
 
959
/* Type for 128 bit vectors. */
960
extern struct type *builtin_type_vec128;
961
extern struct type *builtin_type_vec128i;
962
 
963
/* Explicit floating-point formats.  See "floatformat.h".  */
964
extern struct type *builtin_type_ieee_single_big;
965
extern struct type *builtin_type_ieee_single_little;
966
extern struct type *builtin_type_ieee_double_big;
967
extern struct type *builtin_type_ieee_double_little;
968
extern struct type *builtin_type_ieee_double_littlebyte_bigword;
969
extern struct type *builtin_type_i387_ext;
970
extern struct type *builtin_type_m68881_ext;
971
extern struct type *builtin_type_i960_ext;
972
extern struct type *builtin_type_m88110_ext;
973
extern struct type *builtin_type_m88110_harris_ext;
974
extern struct type *builtin_type_arm_ext_big;
975
extern struct type *builtin_type_arm_ext_littlebyte_bigword;
976
extern struct type *builtin_type_ia64_spill_big;
977
extern struct type *builtin_type_ia64_spill_little;
978
extern struct type *builtin_type_ia64_quad_big;
979
extern struct type *builtin_type_ia64_quad_little;
980
 
981
/* We use this for the '/c' print format, because builtin_type_char is
982
   just a one-byte integral type, which languages less laid back than
983
   C will print as ... well, a one-byte integral type.  */
984
extern struct type *builtin_type_true_char;
985
 
986
/* This type represents a type that was unrecognized in symbol
987
   read-in.  */
988
 
989
extern struct type *builtin_type_error;
990
 
991
extern struct type *builtin_type_long_long;
992
extern struct type *builtin_type_unsigned_long_long;
993
 
994
/* Modula-2 types */
995
 
996
extern struct type *builtin_type_m2_char;
997
extern struct type *builtin_type_m2_int;
998
extern struct type *builtin_type_m2_card;
999
extern struct type *builtin_type_m2_real;
1000
extern struct type *builtin_type_m2_bool;
1001
 
1002
/* OBSOLETE Chill types */
1003
 
1004
/* OBSOLETE extern struct type *builtin_type_chill_bool; */
1005
/* OBSOLETE extern struct type *builtin_type_chill_char; */
1006
/* OBSOLETE extern struct type *builtin_type_chill_long; */
1007
/* OBSOLETE extern struct type *builtin_type_chill_ulong; */
1008
/* OBSOLETE extern struct type *builtin_type_chill_real; */
1009
 
1010
/* Fortran (F77) types */
1011
 
1012
extern struct type *builtin_type_f_character;
1013
extern struct type *builtin_type_f_integer;
1014
extern struct type *builtin_type_f_integer_s2;
1015
extern struct type *builtin_type_f_logical;
1016
extern struct type *builtin_type_f_logical_s1;
1017
extern struct type *builtin_type_f_logical_s2;
1018
extern struct type *builtin_type_f_real;
1019
extern struct type *builtin_type_f_real_s8;
1020
extern struct type *builtin_type_f_real_s16;
1021
extern struct type *builtin_type_f_complex_s8;
1022
extern struct type *builtin_type_f_complex_s16;
1023
extern struct type *builtin_type_f_complex_s32;
1024
extern struct type *builtin_type_f_void;
1025
 
1026
/* RTTI for C++ */
1027
/* extern struct type *builtin_type_cxx_typeinfo; */
1028
 
1029
/* Maximum and minimum values of built-in types */
1030
 
1031
#define MAX_OF_TYPE(t)  \
1032
   (TYPE_UNSIGNED(t) ? UMAX_OF_SIZE(TYPE_LENGTH(t)) \
1033
    : MAX_OF_SIZE(TYPE_LENGTH(t)))
1034
 
1035
#define MIN_OF_TYPE(t)  \
1036
   (TYPE_UNSIGNED(t) ? UMIN_OF_SIZE(TYPE_LENGTH(t)) \
1037
    : MIN_OF_SIZE(TYPE_LENGTH(t)))
1038
 
1039
/* Allocate space for storing data associated with a particular type.
1040
   We ensure that the space is allocated using the same mechanism that
1041
   was used to allocate the space for the type structure itself.  I.E.
1042
   if the type is on an objfile's type_obstack, then the space for data
1043
   associated with that type will also be allocated on the type_obstack.
1044
   If the type is not associated with any particular objfile (such as
1045
   builtin types), then the data space will be allocated with xmalloc,
1046
   the same as for the type structure. */
1047
 
1048
#define TYPE_ALLOC(t,size)  \
1049
   (TYPE_OBJFILE (t) != NULL  \
1050
    ? obstack_alloc (&TYPE_OBJFILE (t) -> type_obstack, size) \
1051
    : xmalloc (size))
1052
 
1053
extern struct type *alloc_type (struct objfile *);
1054
 
1055
extern struct type *init_type (enum type_code, int, int, char *,
1056
                               struct objfile *);
1057
 
1058
/* Helper functions to construct a struct or record type.  An
1059
   initially empty type is created using init_composite_type().
1060
   Fields are then added using append_struct_type_field().  A union
1061
   type has its size set to the largest field.  A struct type has each
1062
   field packed against the previous.  */
1063
 
1064
extern struct type *init_composite_type (char *name, enum type_code code);
1065
extern void append_composite_type_field (struct type *t, char *name,
1066
                                         struct type *field);
1067
 
1068
extern struct type *lookup_reference_type (struct type *);
1069
 
1070
extern struct type *make_reference_type (struct type *, struct type **);
1071
 
1072
extern struct type *make_cv_type (int, int, struct type *, struct type **);
1073
 
1074
extern void replace_type (struct type *, struct type *);
1075
 
1076
extern int address_space_name_to_int (char *);
1077
 
1078
extern char *address_space_int_to_name (int);
1079
 
1080
extern struct type *make_type_with_address_space (struct type *type,
1081
                                                  int space_identifier);
1082
 
1083
extern struct type *lookup_member_type (struct type *, struct type *);
1084
 
1085
extern void
1086
smash_to_method_type (struct type *type, struct type *domain,
1087
                      struct type *to_type, struct field *args,
1088
                      int nargs, int varargs);
1089
 
1090
extern void
1091
smash_to_member_type (struct type *, struct type *, struct type *);
1092
 
1093
extern struct type *allocate_stub_method (struct type *);
1094
 
1095
extern char *type_name_no_tag (const struct type *);
1096
 
1097
extern struct type *lookup_struct_elt_type (struct type *, char *, int);
1098
 
1099
extern struct type *make_pointer_type (struct type *, struct type **);
1100
 
1101
extern struct type *lookup_pointer_type (struct type *);
1102
 
1103
extern struct type *make_function_type (struct type *, struct type **);
1104
 
1105
extern struct type *lookup_function_type (struct type *);
1106
 
1107
extern struct type *create_range_type (struct type *, struct type *, int,
1108
                                       int);
1109
 
1110
extern struct type *create_array_type (struct type *, struct type *,
1111
                                       struct type *);
1112
 
1113
extern struct type *create_string_type (struct type *, struct type *);
1114
 
1115
extern struct type *create_set_type (struct type *, struct type *);
1116
 
1117
/* OBSOLETE extern int chill_varying_type (struct type *); */
1118
 
1119
extern struct type *lookup_unsigned_typename (char *);
1120
 
1121
extern struct type *lookup_signed_typename (char *);
1122
 
1123
extern struct type *check_typedef (struct type *);
1124
 
1125
#define CHECK_TYPEDEF(TYPE) (TYPE) = check_typedef (TYPE)
1126
 
1127
extern void check_stub_method (struct type *, int, int);
1128
 
1129
extern struct type *lookup_primitive_typename (char *);
1130
 
1131
extern char *gdb_mangle_name (struct type *, int, int);
1132
 
1133
extern struct type *builtin_type (char **);
1134
 
1135
extern struct type *lookup_typename (char *, struct block *, int);
1136
 
1137
extern struct type *lookup_template_type (char *, struct type *,
1138
                                          struct block *);
1139
 
1140
extern struct type *lookup_fundamental_type (struct objfile *, int);
1141
 
1142
extern void fill_in_vptr_fieldno (struct type *);
1143
 
1144
extern int get_destructor_fn_field (struct type *, int *, int *);
1145
 
1146
extern int get_discrete_bounds (struct type *, LONGEST *, LONGEST *);
1147
 
1148
extern int is_ancestor (struct type *, struct type *);
1149
 
1150
extern int has_vtable (struct type *);
1151
 
1152
extern struct type *primary_base_class (struct type *);
1153
 
1154
extern struct type **virtual_base_list (struct type *);
1155
 
1156
extern int virtual_base_list_length (struct type *);
1157
extern int virtual_base_list_length_skip_primaries (struct type *);
1158
 
1159
extern int virtual_base_index (struct type *, struct type *);
1160
extern int virtual_base_index_skip_primaries (struct type *, struct type *);
1161
 
1162
 
1163
extern int class_index_in_primary_list (struct type *);
1164
 
1165
extern int count_virtual_fns (struct type *);
1166
 
1167
/* Constants for HP/Taligent ANSI C++ runtime model */
1168
 
1169
/* Where virtual function entries begin in the
1170
 * virtual table, in the non-RRBC vtable format.
1171
 * First 4 are the metavtable pointer, top offset,
1172
 * typeinfo pointer, and dup base info pointer */
1173
#define HP_ACC_VFUNC_START        4
1174
 
1175
/* (Negative) Offset where virtual base offset entries begin
1176
 * in the virtual table. Skips over metavtable pointer and
1177
 * the self-offset entry.
1178
 * NOTE: NEGATE THIS BEFORE USING! The virtual base offsets
1179
 * appear before the address point of the vtable (the slot
1180
 * pointed to by the object's vtable pointer), i.e. at lower
1181
 * addresses than the vtable pointer. */
1182
#define HP_ACC_VBASE_START        2
1183
 
1184
/* (Positive) Offset where the pointer to the typeinfo
1185
 * object is present in the virtual table */
1186
#define HP_ACC_TYPEINFO_OFFSET    2
1187
 
1188
/* (Positive) Offset where the ``top offset'' entry of
1189
 * the virtual table is */
1190
#define HP_ACC_TOP_OFFSET_OFFSET  1
1191
 
1192
/* Overload resolution */
1193
 
1194
#define LENGTH_MATCH(bv) ((bv)->rank[0])
1195
 
1196
/* Badness if parameter list length doesn't match arg list length */
1197
#define LENGTH_MISMATCH_BADNESS      100
1198
/* Dummy badness value for nonexistent parameter positions */
1199
#define TOO_FEW_PARAMS_BADNESS       100
1200
/* Badness if no conversion among types */
1201
#define INCOMPATIBLE_TYPE_BADNESS    100
1202
/* Badness of coercing large integer to smaller size */
1203
#define INTEGER_COERCION_BADNESS     100
1204
/* Badness of coercing large floating type to smaller size */
1205
#define FLOAT_COERCION_BADNESS       100
1206
 
1207
/* Badness of integral promotion */
1208
#define INTEGER_PROMOTION_BADNESS      1
1209
/* Badness of floating promotion */
1210
#define FLOAT_PROMOTION_BADNESS        1
1211
/* Badness of integral conversion */
1212
#define INTEGER_CONVERSION_BADNESS     2
1213
/* Badness of floating conversion */
1214
#define FLOAT_CONVERSION_BADNESS       2
1215
/* Badness of integer<->floating conversions */
1216
#define INT_FLOAT_CONVERSION_BADNESS   2
1217
/* Badness of converting to a boolean */
1218
#define BOOLEAN_CONVERSION_BADNESS     2
1219
/* Badness of pointer conversion */
1220
#define POINTER_CONVERSION_BADNESS     2
1221
/* Badness of conversion of pointer to void pointer */
1222
#define VOID_PTR_CONVERSION_BADNESS    2
1223
/* Badness of converting derived to base class */
1224
#define BASE_CONVERSION_BADNESS        2
1225
/* Badness of converting from non-reference to reference */
1226
#define REFERENCE_CONVERSION_BADNESS   2
1227
 
1228
/* Non-standard conversions allowed by the debugger */
1229
/* Converting a pointer to an int is usually OK */
1230
#define NS_POINTER_CONVERSION_BADNESS 10
1231
 
1232
 
1233
extern int compare_badness (struct badness_vector *, struct badness_vector *);
1234
 
1235
extern struct badness_vector *rank_function (struct type **, int,
1236
                                             struct type **, int);
1237
 
1238
extern int rank_one_type (struct type *, struct type *);
1239
 
1240
extern void recursive_dump_type (struct type *, int);
1241
 
1242
/* printcmd.c */
1243
 
1244
extern void print_scalar_formatted (char *, struct type *, int, int,
1245
                                    struct ui_file *);
1246
 
1247
extern int can_dereference (struct type *);
1248
 
1249
extern int is_integral_type (struct type *);
1250
 
1251
extern void maintenance_print_type (char *, int);
1252
 
1253
#endif /* GDBTYPES_H */

powered by: WebSVN 2.1.0

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