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