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

Subversion Repositories or1k

[/] [or1k/] [trunk/] [insight/] [gdb/] [gdbtypes.h] - Blame information for rev 1771

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

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

powered by: WebSVN 2.1.0

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