PR c++/12824:
[deliverable/binutils-gdb.git] / gdb / gdbtypes.c
CommitLineData
c906108c 1/* Support routines for manipulating internal types for GDB.
4f2aea11 2
28e7fd62 3 Copyright (C) 1992-2013 Free Software Foundation, Inc.
4f2aea11 4
c906108c
SS
5 Contributed by Cygnus Support, using pieces from other GDB modules.
6
c5aa993b 7 This file is part of GDB.
c906108c 8
c5aa993b
JM
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
a9762ec7 11 the Free Software Foundation; either version 3 of the License, or
c5aa993b 12 (at your option) any later version.
c906108c 13
c5aa993b
JM
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
c906108c 18
c5aa993b 19 You should have received a copy of the GNU General Public License
a9762ec7 20 along with this program. If not, see <http://www.gnu.org/licenses/>. */
c906108c
SS
21
22#include "defs.h"
23#include "gdb_string.h"
24#include "bfd.h"
25#include "symtab.h"
26#include "symfile.h"
27#include "objfiles.h"
28#include "gdbtypes.h"
29#include "expression.h"
30#include "language.h"
31#include "target.h"
32#include "value.h"
33#include "demangle.h"
34#include "complaints.h"
35#include "gdbcmd.h"
015a42b4 36#include "cp-abi.h"
a02fd225 37#include "gdb_assert.h"
ae5a43e0 38#include "hashtab.h"
8e7b59a5 39#include "exceptions.h"
ac3aafc7 40
6403aeea
SW
41/* Initialize BADNESS constants. */
42
a9d5ef47 43const struct rank LENGTH_MISMATCH_BADNESS = {100,0};
6403aeea 44
a9d5ef47
SW
45const struct rank TOO_FEW_PARAMS_BADNESS = {100,0};
46const struct rank INCOMPATIBLE_TYPE_BADNESS = {100,0};
6403aeea 47
a9d5ef47 48const struct rank EXACT_MATCH_BADNESS = {0,0};
6403aeea 49
a9d5ef47
SW
50const struct rank INTEGER_PROMOTION_BADNESS = {1,0};
51const struct rank FLOAT_PROMOTION_BADNESS = {1,0};
52const struct rank BASE_PTR_CONVERSION_BADNESS = {1,0};
53const struct rank INTEGER_CONVERSION_BADNESS = {2,0};
54const struct rank FLOAT_CONVERSION_BADNESS = {2,0};
55const struct rank INT_FLOAT_CONVERSION_BADNESS = {2,0};
56const struct rank VOID_PTR_CONVERSION_BADNESS = {2,0};
5b4f6e25 57const struct rank BOOL_CONVERSION_BADNESS = {3,0};
a9d5ef47
SW
58const struct rank BASE_CONVERSION_BADNESS = {2,0};
59const struct rank REFERENCE_CONVERSION_BADNESS = {2,0};
da096638 60const struct rank NULL_POINTER_CONVERSION_BADNESS = {2,0};
a9d5ef47 61const struct rank NS_POINTER_CONVERSION_BADNESS = {10,0};
a451cb65 62const struct rank NS_INTEGER_POINTER_CONVERSION_BADNESS = {3,0};
6403aeea 63
8da61cc4 64/* Floatformat pairs. */
f9e9243a
UW
65const struct floatformat *floatformats_ieee_half[BFD_ENDIAN_UNKNOWN] = {
66 &floatformat_ieee_half_big,
67 &floatformat_ieee_half_little
68};
8da61cc4
DJ
69const struct floatformat *floatformats_ieee_single[BFD_ENDIAN_UNKNOWN] = {
70 &floatformat_ieee_single_big,
71 &floatformat_ieee_single_little
72};
73const struct floatformat *floatformats_ieee_double[BFD_ENDIAN_UNKNOWN] = {
74 &floatformat_ieee_double_big,
75 &floatformat_ieee_double_little
76};
77const struct floatformat *floatformats_ieee_double_littlebyte_bigword[BFD_ENDIAN_UNKNOWN] = {
78 &floatformat_ieee_double_big,
79 &floatformat_ieee_double_littlebyte_bigword
80};
81const struct floatformat *floatformats_i387_ext[BFD_ENDIAN_UNKNOWN] = {
82 &floatformat_i387_ext,
83 &floatformat_i387_ext
84};
85const struct floatformat *floatformats_m68881_ext[BFD_ENDIAN_UNKNOWN] = {
86 &floatformat_m68881_ext,
87 &floatformat_m68881_ext
88};
89const struct floatformat *floatformats_arm_ext[BFD_ENDIAN_UNKNOWN] = {
90 &floatformat_arm_ext_big,
91 &floatformat_arm_ext_littlebyte_bigword
92};
93const struct floatformat *floatformats_ia64_spill[BFD_ENDIAN_UNKNOWN] = {
94 &floatformat_ia64_spill_big,
95 &floatformat_ia64_spill_little
96};
97const struct floatformat *floatformats_ia64_quad[BFD_ENDIAN_UNKNOWN] = {
98 &floatformat_ia64_quad_big,
99 &floatformat_ia64_quad_little
100};
101const struct floatformat *floatformats_vax_f[BFD_ENDIAN_UNKNOWN] = {
102 &floatformat_vax_f,
103 &floatformat_vax_f
104};
105const struct floatformat *floatformats_vax_d[BFD_ENDIAN_UNKNOWN] = {
106 &floatformat_vax_d,
107 &floatformat_vax_d
108};
b14d30e1
JM
109const struct floatformat *floatformats_ibm_long_double[BFD_ENDIAN_UNKNOWN] = {
110 &floatformat_ibm_long_double,
111 &floatformat_ibm_long_double
112};
8da61cc4 113
2873700e
KS
114/* Should opaque types be resolved? */
115
116static int opaque_type_resolution = 1;
117
118/* A flag to enable printing of debugging information of C++
119 overloading. */
120
121unsigned int overload_debug = 0;
122
a451cb65
KS
123/* A flag to enable strict type checking. */
124
125static int strict_type_checking = 1;
126
2873700e 127/* A function to show whether opaque types are resolved. */
5212577a 128
920d2a44
AC
129static void
130show_opaque_type_resolution (struct ui_file *file, int from_tty,
7ba81444
MS
131 struct cmd_list_element *c,
132 const char *value)
920d2a44 133{
3e43a32a
MS
134 fprintf_filtered (file, _("Resolution of opaque struct/class/union types "
135 "(if set before loading symbols) is %s.\n"),
920d2a44
AC
136 value);
137}
138
2873700e 139/* A function to show whether C++ overload debugging is enabled. */
5212577a 140
920d2a44
AC
141static void
142show_overload_debug (struct ui_file *file, int from_tty,
143 struct cmd_list_element *c, const char *value)
144{
7ba81444
MS
145 fprintf_filtered (file, _("Debugging of C++ overloading is %s.\n"),
146 value);
920d2a44 147}
c906108c 148
a451cb65
KS
149/* A function to show the status of strict type checking. */
150
151static void
152show_strict_type_checking (struct ui_file *file, int from_tty,
153 struct cmd_list_element *c, const char *value)
154{
155 fprintf_filtered (file, _("Strict type checking is %s.\n"), value);
156}
157
5212577a 158\f
e9bb382b
UW
159/* Allocate a new OBJFILE-associated type structure and fill it
160 with some defaults. Space for the type structure is allocated
161 on the objfile's objfile_obstack. */
c906108c
SS
162
163struct type *
fba45db2 164alloc_type (struct objfile *objfile)
c906108c 165{
52f0bd74 166 struct type *type;
c906108c 167
e9bb382b
UW
168 gdb_assert (objfile != NULL);
169
7ba81444 170 /* Alloc the structure and start off with all fields zeroed. */
e9bb382b
UW
171 type = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct type);
172 TYPE_MAIN_TYPE (type) = OBSTACK_ZALLOC (&objfile->objfile_obstack,
173 struct main_type);
174 OBJSTAT (objfile, n_types++);
c906108c 175
e9bb382b
UW
176 TYPE_OBJFILE_OWNED (type) = 1;
177 TYPE_OWNER (type).objfile = objfile;
c906108c 178
7ba81444 179 /* Initialize the fields that might not be zero. */
c906108c
SS
180
181 TYPE_CODE (type) = TYPE_CODE_UNDEF;
c906108c 182 TYPE_VPTR_FIELDNO (type) = -1;
2fdde8f8 183 TYPE_CHAIN (type) = type; /* Chain back to itself. */
c906108c 184
c16abbde 185 return type;
c906108c
SS
186}
187
e9bb382b
UW
188/* Allocate a new GDBARCH-associated type structure and fill it
189 with some defaults. Space for the type structure is allocated
190 on the heap. */
191
192struct type *
193alloc_type_arch (struct gdbarch *gdbarch)
194{
195 struct type *type;
196
197 gdb_assert (gdbarch != NULL);
198
199 /* Alloc the structure and start off with all fields zeroed. */
200
201 type = XZALLOC (struct type);
202 TYPE_MAIN_TYPE (type) = XZALLOC (struct main_type);
203
204 TYPE_OBJFILE_OWNED (type) = 0;
205 TYPE_OWNER (type).gdbarch = gdbarch;
206
207 /* Initialize the fields that might not be zero. */
208
209 TYPE_CODE (type) = TYPE_CODE_UNDEF;
210 TYPE_VPTR_FIELDNO (type) = -1;
211 TYPE_CHAIN (type) = type; /* Chain back to itself. */
212
213 return type;
214}
215
216/* If TYPE is objfile-associated, allocate a new type structure
217 associated with the same objfile. If TYPE is gdbarch-associated,
218 allocate a new type structure associated with the same gdbarch. */
219
220struct type *
221alloc_type_copy (const struct type *type)
222{
223 if (TYPE_OBJFILE_OWNED (type))
224 return alloc_type (TYPE_OWNER (type).objfile);
225 else
226 return alloc_type_arch (TYPE_OWNER (type).gdbarch);
227}
228
229/* If TYPE is gdbarch-associated, return that architecture.
230 If TYPE is objfile-associated, return that objfile's architecture. */
231
232struct gdbarch *
233get_type_arch (const struct type *type)
234{
235 if (TYPE_OBJFILE_OWNED (type))
236 return get_objfile_arch (TYPE_OWNER (type).objfile);
237 else
238 return TYPE_OWNER (type).gdbarch;
239}
240
2fdde8f8
DJ
241/* Alloc a new type instance structure, fill it with some defaults,
242 and point it at OLDTYPE. Allocate the new type instance from the
243 same place as OLDTYPE. */
244
245static struct type *
246alloc_type_instance (struct type *oldtype)
247{
248 struct type *type;
249
250 /* Allocate the structure. */
251
e9bb382b 252 if (! TYPE_OBJFILE_OWNED (oldtype))
1deafd4e 253 type = XZALLOC (struct type);
2fdde8f8 254 else
1deafd4e
PA
255 type = OBSTACK_ZALLOC (&TYPE_OBJFILE (oldtype)->objfile_obstack,
256 struct type);
257
2fdde8f8
DJ
258 TYPE_MAIN_TYPE (type) = TYPE_MAIN_TYPE (oldtype);
259
260 TYPE_CHAIN (type) = type; /* Chain back to itself for now. */
261
c16abbde 262 return type;
2fdde8f8
DJ
263}
264
265/* Clear all remnants of the previous type at TYPE, in preparation for
e9bb382b 266 replacing it with something else. Preserve owner information. */
5212577a 267
2fdde8f8
DJ
268static void
269smash_type (struct type *type)
270{
e9bb382b
UW
271 int objfile_owned = TYPE_OBJFILE_OWNED (type);
272 union type_owner owner = TYPE_OWNER (type);
273
2fdde8f8
DJ
274 memset (TYPE_MAIN_TYPE (type), 0, sizeof (struct main_type));
275
e9bb382b
UW
276 /* Restore owner information. */
277 TYPE_OBJFILE_OWNED (type) = objfile_owned;
278 TYPE_OWNER (type) = owner;
279
2fdde8f8
DJ
280 /* For now, delete the rings. */
281 TYPE_CHAIN (type) = type;
282
283 /* For now, leave the pointer/reference types alone. */
284}
285
c906108c
SS
286/* Lookup a pointer to a type TYPE. TYPEPTR, if nonzero, points
287 to a pointer to memory where the pointer type should be stored.
288 If *TYPEPTR is zero, update it to point to the pointer type we return.
289 We allocate new memory if needed. */
290
291struct type *
fba45db2 292make_pointer_type (struct type *type, struct type **typeptr)
c906108c 293{
52f0bd74 294 struct type *ntype; /* New type */
053cb41b 295 struct type *chain;
c906108c
SS
296
297 ntype = TYPE_POINTER_TYPE (type);
298
c5aa993b 299 if (ntype)
c906108c 300 {
c5aa993b 301 if (typeptr == 0)
7ba81444
MS
302 return ntype; /* Don't care about alloc,
303 and have new type. */
c906108c 304 else if (*typeptr == 0)
c5aa993b 305 {
7ba81444 306 *typeptr = ntype; /* Tracking alloc, and have new type. */
c906108c 307 return ntype;
c5aa993b 308 }
c906108c
SS
309 }
310
311 if (typeptr == 0 || *typeptr == 0) /* We'll need to allocate one. */
312 {
e9bb382b 313 ntype = alloc_type_copy (type);
c906108c
SS
314 if (typeptr)
315 *typeptr = ntype;
316 }
7ba81444 317 else /* We have storage, but need to reset it. */
c906108c
SS
318 {
319 ntype = *typeptr;
053cb41b 320 chain = TYPE_CHAIN (ntype);
2fdde8f8 321 smash_type (ntype);
053cb41b 322 TYPE_CHAIN (ntype) = chain;
c906108c
SS
323 }
324
325 TYPE_TARGET_TYPE (ntype) = type;
326 TYPE_POINTER_TYPE (type) = ntype;
327
5212577a 328 /* FIXME! Assumes the machine has only one representation for pointers! */
c906108c 329
50810684
UW
330 TYPE_LENGTH (ntype)
331 = gdbarch_ptr_bit (get_type_arch (type)) / TARGET_CHAR_BIT;
c906108c
SS
332 TYPE_CODE (ntype) = TYPE_CODE_PTR;
333
67b2adb2 334 /* Mark pointers as unsigned. The target converts between pointers
76e71323 335 and addresses (CORE_ADDRs) using gdbarch_pointer_to_address and
7ba81444 336 gdbarch_address_to_pointer. */
876cecd0 337 TYPE_UNSIGNED (ntype) = 1;
c5aa993b 338
053cb41b
JB
339 /* Update the length of all the other variants of this type. */
340 chain = TYPE_CHAIN (ntype);
341 while (chain != ntype)
342 {
343 TYPE_LENGTH (chain) = TYPE_LENGTH (ntype);
344 chain = TYPE_CHAIN (chain);
345 }
346
c906108c
SS
347 return ntype;
348}
349
350/* Given a type TYPE, return a type of pointers to that type.
351 May need to construct such a type if this is the first use. */
352
353struct type *
fba45db2 354lookup_pointer_type (struct type *type)
c906108c 355{
c5aa993b 356 return make_pointer_type (type, (struct type **) 0);
c906108c
SS
357}
358
7ba81444
MS
359/* Lookup a C++ `reference' to a type TYPE. TYPEPTR, if nonzero,
360 points to a pointer to memory where the reference type should be
361 stored. If *TYPEPTR is zero, update it to point to the reference
362 type we return. We allocate new memory if needed. */
c906108c
SS
363
364struct type *
fba45db2 365make_reference_type (struct type *type, struct type **typeptr)
c906108c 366{
52f0bd74 367 struct type *ntype; /* New type */
1e98b326 368 struct type *chain;
c906108c
SS
369
370 ntype = TYPE_REFERENCE_TYPE (type);
371
c5aa993b 372 if (ntype)
c906108c 373 {
c5aa993b 374 if (typeptr == 0)
7ba81444
MS
375 return ntype; /* Don't care about alloc,
376 and have new type. */
c906108c 377 else if (*typeptr == 0)
c5aa993b 378 {
7ba81444 379 *typeptr = ntype; /* Tracking alloc, and have new type. */
c906108c 380 return ntype;
c5aa993b 381 }
c906108c
SS
382 }
383
384 if (typeptr == 0 || *typeptr == 0) /* We'll need to allocate one. */
385 {
e9bb382b 386 ntype = alloc_type_copy (type);
c906108c
SS
387 if (typeptr)
388 *typeptr = ntype;
389 }
7ba81444 390 else /* We have storage, but need to reset it. */
c906108c
SS
391 {
392 ntype = *typeptr;
1e98b326 393 chain = TYPE_CHAIN (ntype);
2fdde8f8 394 smash_type (ntype);
1e98b326 395 TYPE_CHAIN (ntype) = chain;
c906108c
SS
396 }
397
398 TYPE_TARGET_TYPE (ntype) = type;
399 TYPE_REFERENCE_TYPE (type) = ntype;
400
7ba81444
MS
401 /* FIXME! Assume the machine has only one representation for
402 references, and that it matches the (only) representation for
403 pointers! */
c906108c 404
50810684
UW
405 TYPE_LENGTH (ntype) =
406 gdbarch_ptr_bit (get_type_arch (type)) / TARGET_CHAR_BIT;
c906108c 407 TYPE_CODE (ntype) = TYPE_CODE_REF;
c5aa993b 408
c906108c
SS
409 if (!TYPE_REFERENCE_TYPE (type)) /* Remember it, if don't have one. */
410 TYPE_REFERENCE_TYPE (type) = ntype;
411
1e98b326
JB
412 /* Update the length of all the other variants of this type. */
413 chain = TYPE_CHAIN (ntype);
414 while (chain != ntype)
415 {
416 TYPE_LENGTH (chain) = TYPE_LENGTH (ntype);
417 chain = TYPE_CHAIN (chain);
418 }
419
c906108c
SS
420 return ntype;
421}
422
7ba81444
MS
423/* Same as above, but caller doesn't care about memory allocation
424 details. */
c906108c
SS
425
426struct type *
fba45db2 427lookup_reference_type (struct type *type)
c906108c 428{
c5aa993b 429 return make_reference_type (type, (struct type **) 0);
c906108c
SS
430}
431
7ba81444
MS
432/* Lookup a function type that returns type TYPE. TYPEPTR, if
433 nonzero, points to a pointer to memory where the function type
434 should be stored. If *TYPEPTR is zero, update it to point to the
0c8b41f1 435 function type we return. We allocate new memory if needed. */
c906108c
SS
436
437struct type *
0c8b41f1 438make_function_type (struct type *type, struct type **typeptr)
c906108c 439{
52f0bd74 440 struct type *ntype; /* New type */
c906108c
SS
441
442 if (typeptr == 0 || *typeptr == 0) /* We'll need to allocate one. */
443 {
e9bb382b 444 ntype = alloc_type_copy (type);
c906108c
SS
445 if (typeptr)
446 *typeptr = ntype;
447 }
7ba81444 448 else /* We have storage, but need to reset it. */
c906108c
SS
449 {
450 ntype = *typeptr;
2fdde8f8 451 smash_type (ntype);
c906108c
SS
452 }
453
454 TYPE_TARGET_TYPE (ntype) = type;
455
456 TYPE_LENGTH (ntype) = 1;
457 TYPE_CODE (ntype) = TYPE_CODE_FUNC;
c5aa993b 458
b6cdc2c1
JK
459 INIT_FUNC_SPECIFIC (ntype);
460
c906108c
SS
461 return ntype;
462}
463
c906108c
SS
464/* Given a type TYPE, return a type of functions that return that type.
465 May need to construct such a type if this is the first use. */
466
467struct type *
fba45db2 468lookup_function_type (struct type *type)
c906108c 469{
0c8b41f1 470 return make_function_type (type, (struct type **) 0);
c906108c
SS
471}
472
71918a86 473/* Given a type TYPE and argument types, return the appropriate
a6fb9c08
TT
474 function type. If the final type in PARAM_TYPES is NULL, make a
475 varargs function. */
71918a86
TT
476
477struct type *
478lookup_function_type_with_arguments (struct type *type,
479 int nparams,
480 struct type **param_types)
481{
482 struct type *fn = make_function_type (type, (struct type **) 0);
483 int i;
484
e314d629 485 if (nparams > 0)
a6fb9c08 486 {
e314d629
TT
487 if (param_types[nparams - 1] == NULL)
488 {
489 --nparams;
490 TYPE_VARARGS (fn) = 1;
491 }
492 else if (TYPE_CODE (check_typedef (param_types[nparams - 1]))
493 == TYPE_CODE_VOID)
494 {
495 --nparams;
496 /* Caller should have ensured this. */
497 gdb_assert (nparams == 0);
498 TYPE_PROTOTYPED (fn) = 1;
499 }
a6fb9c08
TT
500 }
501
71918a86
TT
502 TYPE_NFIELDS (fn) = nparams;
503 TYPE_FIELDS (fn) = TYPE_ZALLOC (fn, nparams * sizeof (struct field));
504 for (i = 0; i < nparams; ++i)
505 TYPE_FIELD_TYPE (fn, i) = param_types[i];
506
507 return fn;
508}
509
47663de5
MS
510/* Identify address space identifier by name --
511 return the integer flag defined in gdbtypes.h. */
5212577a
DE
512
513int
50810684 514address_space_name_to_int (struct gdbarch *gdbarch, char *space_identifier)
47663de5 515{
8b2dbe47 516 int type_flags;
d8734c88 517
7ba81444 518 /* Check for known address space delimiters. */
47663de5 519 if (!strcmp (space_identifier, "code"))
876cecd0 520 return TYPE_INSTANCE_FLAG_CODE_SPACE;
47663de5 521 else if (!strcmp (space_identifier, "data"))
876cecd0 522 return TYPE_INSTANCE_FLAG_DATA_SPACE;
5f11f355
AC
523 else if (gdbarch_address_class_name_to_type_flags_p (gdbarch)
524 && gdbarch_address_class_name_to_type_flags (gdbarch,
525 space_identifier,
526 &type_flags))
8b2dbe47 527 return type_flags;
47663de5 528 else
8a3fe4f8 529 error (_("Unknown address space specifier: \"%s\""), space_identifier);
47663de5
MS
530}
531
532/* Identify address space identifier by integer flag as defined in
7ba81444 533 gdbtypes.h -- return the string version of the adress space name. */
47663de5 534
321432c0 535const char *
50810684 536address_space_int_to_name (struct gdbarch *gdbarch, int space_flag)
47663de5 537{
876cecd0 538 if (space_flag & TYPE_INSTANCE_FLAG_CODE_SPACE)
47663de5 539 return "code";
876cecd0 540 else if (space_flag & TYPE_INSTANCE_FLAG_DATA_SPACE)
47663de5 541 return "data";
876cecd0 542 else if ((space_flag & TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
5f11f355
AC
543 && gdbarch_address_class_type_flags_to_name_p (gdbarch))
544 return gdbarch_address_class_type_flags_to_name (gdbarch, space_flag);
47663de5
MS
545 else
546 return NULL;
547}
548
2fdde8f8 549/* Create a new type with instance flags NEW_FLAGS, based on TYPE.
ad766c0a
JB
550
551 If STORAGE is non-NULL, create the new type instance there.
552 STORAGE must be in the same obstack as TYPE. */
47663de5 553
b9362cc7 554static struct type *
2fdde8f8
DJ
555make_qualified_type (struct type *type, int new_flags,
556 struct type *storage)
47663de5
MS
557{
558 struct type *ntype;
559
560 ntype = type;
5f61c20e
JK
561 do
562 {
563 if (TYPE_INSTANCE_FLAGS (ntype) == new_flags)
564 return ntype;
565 ntype = TYPE_CHAIN (ntype);
566 }
567 while (ntype != type);
47663de5 568
2fdde8f8
DJ
569 /* Create a new type instance. */
570 if (storage == NULL)
571 ntype = alloc_type_instance (type);
572 else
573 {
7ba81444
MS
574 /* If STORAGE was provided, it had better be in the same objfile
575 as TYPE. Otherwise, we can't link it into TYPE's cv chain:
576 if one objfile is freed and the other kept, we'd have
577 dangling pointers. */
ad766c0a
JB
578 gdb_assert (TYPE_OBJFILE (type) == TYPE_OBJFILE (storage));
579
2fdde8f8
DJ
580 ntype = storage;
581 TYPE_MAIN_TYPE (ntype) = TYPE_MAIN_TYPE (type);
582 TYPE_CHAIN (ntype) = ntype;
583 }
47663de5
MS
584
585 /* Pointers or references to the original type are not relevant to
2fdde8f8 586 the new type. */
47663de5
MS
587 TYPE_POINTER_TYPE (ntype) = (struct type *) 0;
588 TYPE_REFERENCE_TYPE (ntype) = (struct type *) 0;
47663de5 589
2fdde8f8
DJ
590 /* Chain the new qualified type to the old type. */
591 TYPE_CHAIN (ntype) = TYPE_CHAIN (type);
592 TYPE_CHAIN (type) = ntype;
593
594 /* Now set the instance flags and return the new type. */
595 TYPE_INSTANCE_FLAGS (ntype) = new_flags;
47663de5 596
ab5d3da6
KB
597 /* Set length of new type to that of the original type. */
598 TYPE_LENGTH (ntype) = TYPE_LENGTH (type);
599
47663de5
MS
600 return ntype;
601}
602
2fdde8f8
DJ
603/* Make an address-space-delimited variant of a type -- a type that
604 is identical to the one supplied except that it has an address
605 space attribute attached to it (such as "code" or "data").
606
7ba81444
MS
607 The space attributes "code" and "data" are for Harvard
608 architectures. The address space attributes are for architectures
609 which have alternately sized pointers or pointers with alternate
610 representations. */
2fdde8f8
DJ
611
612struct type *
613make_type_with_address_space (struct type *type, int space_flag)
614{
2fdde8f8 615 int new_flags = ((TYPE_INSTANCE_FLAGS (type)
876cecd0
TT
616 & ~(TYPE_INSTANCE_FLAG_CODE_SPACE
617 | TYPE_INSTANCE_FLAG_DATA_SPACE
618 | TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL))
2fdde8f8
DJ
619 | space_flag);
620
621 return make_qualified_type (type, new_flags, NULL);
622}
c906108c
SS
623
624/* Make a "c-v" variant of a type -- a type that is identical to the
625 one supplied except that it may have const or volatile attributes
626 CNST is a flag for setting the const attribute
627 VOLTL is a flag for setting the volatile attribute
628 TYPE is the base type whose variant we are creating.
c906108c 629
ad766c0a
JB
630 If TYPEPTR and *TYPEPTR are non-zero, then *TYPEPTR points to
631 storage to hold the new qualified type; *TYPEPTR and TYPE must be
632 in the same objfile. Otherwise, allocate fresh memory for the new
633 type whereever TYPE lives. If TYPEPTR is non-zero, set it to the
634 new type we construct. */
5212577a 635
c906108c 636struct type *
7ba81444
MS
637make_cv_type (int cnst, int voltl,
638 struct type *type,
639 struct type **typeptr)
c906108c 640{
52f0bd74 641 struct type *ntype; /* New type */
c906108c 642
2fdde8f8 643 int new_flags = (TYPE_INSTANCE_FLAGS (type)
308d96ed
MS
644 & ~(TYPE_INSTANCE_FLAG_CONST
645 | TYPE_INSTANCE_FLAG_VOLATILE));
c906108c 646
c906108c 647 if (cnst)
876cecd0 648 new_flags |= TYPE_INSTANCE_FLAG_CONST;
c906108c
SS
649
650 if (voltl)
876cecd0 651 new_flags |= TYPE_INSTANCE_FLAG_VOLATILE;
a02fd225 652
2fdde8f8 653 if (typeptr && *typeptr != NULL)
a02fd225 654 {
ad766c0a
JB
655 /* TYPE and *TYPEPTR must be in the same objfile. We can't have
656 a C-V variant chain that threads across objfiles: if one
657 objfile gets freed, then the other has a broken C-V chain.
658
659 This code used to try to copy over the main type from TYPE to
660 *TYPEPTR if they were in different objfiles, but that's
661 wrong, too: TYPE may have a field list or member function
662 lists, which refer to types of their own, etc. etc. The
663 whole shebang would need to be copied over recursively; you
664 can't have inter-objfile pointers. The only thing to do is
665 to leave stub types as stub types, and look them up afresh by
666 name each time you encounter them. */
667 gdb_assert (TYPE_OBJFILE (*typeptr) == TYPE_OBJFILE (type));
2fdde8f8
DJ
668 }
669
7ba81444
MS
670 ntype = make_qualified_type (type, new_flags,
671 typeptr ? *typeptr : NULL);
c906108c 672
2fdde8f8
DJ
673 if (typeptr != NULL)
674 *typeptr = ntype;
a02fd225 675
2fdde8f8 676 return ntype;
a02fd225 677}
c906108c 678
06d66ee9
TT
679/* Make a 'restrict'-qualified version of TYPE. */
680
681struct type *
682make_restrict_type (struct type *type)
683{
684 return make_qualified_type (type,
685 (TYPE_INSTANCE_FLAGS (type)
686 | TYPE_INSTANCE_FLAG_RESTRICT),
687 NULL);
688}
689
2fdde8f8
DJ
690/* Replace the contents of ntype with the type *type. This changes the
691 contents, rather than the pointer for TYPE_MAIN_TYPE (ntype); thus
692 the changes are propogated to all types in the TYPE_CHAIN.
dd6bda65 693
cda6c68a
JB
694 In order to build recursive types, it's inevitable that we'll need
695 to update types in place --- but this sort of indiscriminate
696 smashing is ugly, and needs to be replaced with something more
2fdde8f8
DJ
697 controlled. TYPE_MAIN_TYPE is a step in this direction; it's not
698 clear if more steps are needed. */
5212577a 699
dd6bda65
DJ
700void
701replace_type (struct type *ntype, struct type *type)
702{
ab5d3da6 703 struct type *chain;
dd6bda65 704
ad766c0a
JB
705 /* These two types had better be in the same objfile. Otherwise,
706 the assignment of one type's main type structure to the other
707 will produce a type with references to objects (names; field
708 lists; etc.) allocated on an objfile other than its own. */
709 gdb_assert (TYPE_OBJFILE (ntype) == TYPE_OBJFILE (ntype));
710
2fdde8f8 711 *TYPE_MAIN_TYPE (ntype) = *TYPE_MAIN_TYPE (type);
dd6bda65 712
7ba81444
MS
713 /* The type length is not a part of the main type. Update it for
714 each type on the variant chain. */
ab5d3da6 715 chain = ntype;
5f61c20e
JK
716 do
717 {
718 /* Assert that this element of the chain has no address-class bits
719 set in its flags. Such type variants might have type lengths
720 which are supposed to be different from the non-address-class
721 variants. This assertion shouldn't ever be triggered because
722 symbol readers which do construct address-class variants don't
723 call replace_type(). */
724 gdb_assert (TYPE_ADDRESS_CLASS_ALL (chain) == 0);
725
726 TYPE_LENGTH (chain) = TYPE_LENGTH (type);
727 chain = TYPE_CHAIN (chain);
728 }
729 while (ntype != chain);
ab5d3da6 730
2fdde8f8
DJ
731 /* Assert that the two types have equivalent instance qualifiers.
732 This should be true for at least all of our debug readers. */
733 gdb_assert (TYPE_INSTANCE_FLAGS (ntype) == TYPE_INSTANCE_FLAGS (type));
dd6bda65
DJ
734}
735
c906108c
SS
736/* Implement direct support for MEMBER_TYPE in GNU C++.
737 May need to construct such a type if this is the first use.
738 The TYPE is the type of the member. The DOMAIN is the type
739 of the aggregate that the member belongs to. */
740
741struct type *
0d5de010 742lookup_memberptr_type (struct type *type, struct type *domain)
c906108c 743{
52f0bd74 744 struct type *mtype;
c906108c 745
e9bb382b 746 mtype = alloc_type_copy (type);
0d5de010 747 smash_to_memberptr_type (mtype, domain, type);
c16abbde 748 return mtype;
c906108c
SS
749}
750
0d5de010
DJ
751/* Return a pointer-to-method type, for a method of type TO_TYPE. */
752
753struct type *
754lookup_methodptr_type (struct type *to_type)
755{
756 struct type *mtype;
757
e9bb382b 758 mtype = alloc_type_copy (to_type);
0b92b5bb 759 smash_to_methodptr_type (mtype, to_type);
0d5de010
DJ
760 return mtype;
761}
762
7ba81444
MS
763/* Allocate a stub method whose return type is TYPE. This apparently
764 happens for speed of symbol reading, since parsing out the
765 arguments to the method is cpu-intensive, the way we are doing it.
766 So, we will fill in arguments later. This always returns a fresh
767 type. */
c906108c
SS
768
769struct type *
fba45db2 770allocate_stub_method (struct type *type)
c906108c
SS
771{
772 struct type *mtype;
773
e9bb382b
UW
774 mtype = alloc_type_copy (type);
775 TYPE_CODE (mtype) = TYPE_CODE_METHOD;
776 TYPE_LENGTH (mtype) = 1;
777 TYPE_STUB (mtype) = 1;
c906108c
SS
778 TYPE_TARGET_TYPE (mtype) = type;
779 /* _DOMAIN_TYPE (mtype) = unknown yet */
c16abbde 780 return mtype;
c906108c
SS
781}
782
7ba81444
MS
783/* Create a range type using either a blank type supplied in
784 RESULT_TYPE, or creating a new type, inheriting the objfile from
785 INDEX_TYPE.
c906108c 786
7ba81444
MS
787 Indices will be of type INDEX_TYPE, and will range from LOW_BOUND
788 to HIGH_BOUND, inclusive.
c906108c 789
7ba81444
MS
790 FIXME: Maybe we should check the TYPE_CODE of RESULT_TYPE to make
791 sure it is TYPE_CODE_UNDEF before we bash it into a range type? */
c906108c
SS
792
793struct type *
fba45db2 794create_range_type (struct type *result_type, struct type *index_type,
43bbcdc2 795 LONGEST low_bound, LONGEST high_bound)
c906108c
SS
796{
797 if (result_type == NULL)
e9bb382b 798 result_type = alloc_type_copy (index_type);
c906108c
SS
799 TYPE_CODE (result_type) = TYPE_CODE_RANGE;
800 TYPE_TARGET_TYPE (result_type) = index_type;
74a9bb82 801 if (TYPE_STUB (index_type))
876cecd0 802 TYPE_TARGET_STUB (result_type) = 1;
c906108c
SS
803 else
804 TYPE_LENGTH (result_type) = TYPE_LENGTH (check_typedef (index_type));
43bbcdc2
PH
805 TYPE_RANGE_DATA (result_type) = (struct range_bounds *)
806 TYPE_ZALLOC (result_type, sizeof (struct range_bounds));
262452ec
JK
807 TYPE_LOW_BOUND (result_type) = low_bound;
808 TYPE_HIGH_BOUND (result_type) = high_bound;
c906108c 809
c5aa993b 810 if (low_bound >= 0)
876cecd0 811 TYPE_UNSIGNED (result_type) = 1;
c906108c 812
262452ec 813 return result_type;
c906108c
SS
814}
815
7ba81444
MS
816/* Set *LOWP and *HIGHP to the lower and upper bounds of discrete type
817 TYPE. Return 1 if type is a range type, 0 if it is discrete (and
818 bounds will fit in LONGEST), or -1 otherwise. */
c906108c
SS
819
820int
fba45db2 821get_discrete_bounds (struct type *type, LONGEST *lowp, LONGEST *highp)
c906108c
SS
822{
823 CHECK_TYPEDEF (type);
824 switch (TYPE_CODE (type))
825 {
826 case TYPE_CODE_RANGE:
827 *lowp = TYPE_LOW_BOUND (type);
828 *highp = TYPE_HIGH_BOUND (type);
829 return 1;
830 case TYPE_CODE_ENUM:
831 if (TYPE_NFIELDS (type) > 0)
832 {
833 /* The enums may not be sorted by value, so search all
0963b4bd 834 entries. */
c906108c
SS
835 int i;
836
14e75d8e 837 *lowp = *highp = TYPE_FIELD_ENUMVAL (type, 0);
c906108c
SS
838 for (i = 0; i < TYPE_NFIELDS (type); i++)
839 {
14e75d8e
JK
840 if (TYPE_FIELD_ENUMVAL (type, i) < *lowp)
841 *lowp = TYPE_FIELD_ENUMVAL (type, i);
842 if (TYPE_FIELD_ENUMVAL (type, i) > *highp)
843 *highp = TYPE_FIELD_ENUMVAL (type, i);
c906108c
SS
844 }
845
7ba81444 846 /* Set unsigned indicator if warranted. */
c5aa993b 847 if (*lowp >= 0)
c906108c 848 {
876cecd0 849 TYPE_UNSIGNED (type) = 1;
c906108c
SS
850 }
851 }
852 else
853 {
854 *lowp = 0;
855 *highp = -1;
856 }
857 return 0;
858 case TYPE_CODE_BOOL:
859 *lowp = 0;
860 *highp = 1;
861 return 0;
862 case TYPE_CODE_INT:
c5aa993b 863 if (TYPE_LENGTH (type) > sizeof (LONGEST)) /* Too big */
c906108c
SS
864 return -1;
865 if (!TYPE_UNSIGNED (type))
866 {
c5aa993b 867 *lowp = -(1 << (TYPE_LENGTH (type) * TARGET_CHAR_BIT - 1));
c906108c
SS
868 *highp = -*lowp - 1;
869 return 0;
870 }
7ba81444 871 /* ... fall through for unsigned ints ... */
c906108c
SS
872 case TYPE_CODE_CHAR:
873 *lowp = 0;
874 /* This round-about calculation is to avoid shifting by
7b83ea04 875 TYPE_LENGTH (type) * TARGET_CHAR_BIT, which will not work
7ba81444 876 if TYPE_LENGTH (type) == sizeof (LONGEST). */
c906108c
SS
877 *highp = 1 << (TYPE_LENGTH (type) * TARGET_CHAR_BIT - 1);
878 *highp = (*highp - 1) | *highp;
879 return 0;
880 default:
881 return -1;
882 }
883}
884
dbc98a8b
KW
885/* Assuming TYPE is a simple, non-empty array type, compute its upper
886 and lower bound. Save the low bound into LOW_BOUND if not NULL.
887 Save the high bound into HIGH_BOUND if not NULL.
888
0963b4bd 889 Return 1 if the operation was successful. Return zero otherwise,
dbc98a8b
KW
890 in which case the values of LOW_BOUND and HIGH_BOUNDS are unmodified.
891
892 We now simply use get_discrete_bounds call to get the values
893 of the low and high bounds.
894 get_discrete_bounds can return three values:
895 1, meaning that index is a range,
896 0, meaning that index is a discrete type,
897 or -1 for failure. */
898
899int
900get_array_bounds (struct type *type, LONGEST *low_bound, LONGEST *high_bound)
901{
902 struct type *index = TYPE_INDEX_TYPE (type);
903 LONGEST low = 0;
904 LONGEST high = 0;
905 int res;
906
907 if (index == NULL)
908 return 0;
909
910 res = get_discrete_bounds (index, &low, &high);
911 if (res == -1)
912 return 0;
913
914 /* Check if the array bounds are undefined. */
915 if (res == 1
916 && ((low_bound && TYPE_ARRAY_LOWER_BOUND_IS_UNDEFINED (type))
917 || (high_bound && TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type))))
918 return 0;
919
920 if (low_bound)
921 *low_bound = low;
922
923 if (high_bound)
924 *high_bound = high;
925
926 return 1;
927}
928
7ba81444
MS
929/* Create an array type using either a blank type supplied in
930 RESULT_TYPE, or creating a new type, inheriting the objfile from
931 RANGE_TYPE.
c906108c
SS
932
933 Elements will be of type ELEMENT_TYPE, the indices will be of type
934 RANGE_TYPE.
935
7ba81444
MS
936 FIXME: Maybe we should check the TYPE_CODE of RESULT_TYPE to make
937 sure it is TYPE_CODE_UNDEF before we bash it into an array
938 type? */
c906108c
SS
939
940struct type *
7ba81444
MS
941create_array_type (struct type *result_type,
942 struct type *element_type,
fba45db2 943 struct type *range_type)
c906108c
SS
944{
945 LONGEST low_bound, high_bound;
946
947 if (result_type == NULL)
e9bb382b
UW
948 result_type = alloc_type_copy (range_type);
949
c906108c
SS
950 TYPE_CODE (result_type) = TYPE_CODE_ARRAY;
951 TYPE_TARGET_TYPE (result_type) = element_type;
952 if (get_discrete_bounds (range_type, &low_bound, &high_bound) < 0)
953 low_bound = high_bound = 0;
954 CHECK_TYPEDEF (element_type);
ab0d6e0d
JB
955 /* Be careful when setting the array length. Ada arrays can be
956 empty arrays with the high_bound being smaller than the low_bound.
957 In such cases, the array length should be zero. */
958 if (high_bound < low_bound)
959 TYPE_LENGTH (result_type) = 0;
960 else
961 TYPE_LENGTH (result_type) =
962 TYPE_LENGTH (element_type) * (high_bound - low_bound + 1);
c906108c
SS
963 TYPE_NFIELDS (result_type) = 1;
964 TYPE_FIELDS (result_type) =
1deafd4e 965 (struct field *) TYPE_ZALLOC (result_type, sizeof (struct field));
262452ec 966 TYPE_INDEX_TYPE (result_type) = range_type;
c906108c
SS
967 TYPE_VPTR_FIELDNO (result_type) = -1;
968
0963b4bd 969 /* TYPE_FLAG_TARGET_STUB will take care of zero length arrays. */
c906108c 970 if (TYPE_LENGTH (result_type) == 0)
876cecd0 971 TYPE_TARGET_STUB (result_type) = 1;
c906108c 972
c16abbde 973 return result_type;
c906108c
SS
974}
975
e3506a9f
UW
976struct type *
977lookup_array_range_type (struct type *element_type,
63375b74 978 LONGEST low_bound, LONGEST high_bound)
e3506a9f 979{
50810684 980 struct gdbarch *gdbarch = get_type_arch (element_type);
e3506a9f
UW
981 struct type *index_type = builtin_type (gdbarch)->builtin_int;
982 struct type *range_type
983 = create_range_type (NULL, index_type, low_bound, high_bound);
d8734c88 984
e3506a9f
UW
985 return create_array_type (NULL, element_type, range_type);
986}
987
7ba81444
MS
988/* Create a string type using either a blank type supplied in
989 RESULT_TYPE, or creating a new type. String types are similar
990 enough to array of char types that we can use create_array_type to
991 build the basic type and then bash it into a string type.
c906108c
SS
992
993 For fixed length strings, the range type contains 0 as the lower
994 bound and the length of the string minus one as the upper bound.
995
7ba81444
MS
996 FIXME: Maybe we should check the TYPE_CODE of RESULT_TYPE to make
997 sure it is TYPE_CODE_UNDEF before we bash it into a string
998 type? */
c906108c
SS
999
1000struct type *
3b7538c0
UW
1001create_string_type (struct type *result_type,
1002 struct type *string_char_type,
7ba81444 1003 struct type *range_type)
c906108c
SS
1004{
1005 result_type = create_array_type (result_type,
f290d38e 1006 string_char_type,
c906108c
SS
1007 range_type);
1008 TYPE_CODE (result_type) = TYPE_CODE_STRING;
c16abbde 1009 return result_type;
c906108c
SS
1010}
1011
e3506a9f
UW
1012struct type *
1013lookup_string_range_type (struct type *string_char_type,
63375b74 1014 LONGEST low_bound, LONGEST high_bound)
e3506a9f
UW
1015{
1016 struct type *result_type;
d8734c88 1017
e3506a9f
UW
1018 result_type = lookup_array_range_type (string_char_type,
1019 low_bound, high_bound);
1020 TYPE_CODE (result_type) = TYPE_CODE_STRING;
1021 return result_type;
1022}
1023
c906108c 1024struct type *
fba45db2 1025create_set_type (struct type *result_type, struct type *domain_type)
c906108c 1026{
c906108c 1027 if (result_type == NULL)
e9bb382b
UW
1028 result_type = alloc_type_copy (domain_type);
1029
c906108c
SS
1030 TYPE_CODE (result_type) = TYPE_CODE_SET;
1031 TYPE_NFIELDS (result_type) = 1;
1deafd4e 1032 TYPE_FIELDS (result_type) = TYPE_ZALLOC (result_type, sizeof (struct field));
c906108c 1033
74a9bb82 1034 if (!TYPE_STUB (domain_type))
c906108c 1035 {
f9780d5b 1036 LONGEST low_bound, high_bound, bit_length;
d8734c88 1037
c906108c
SS
1038 if (get_discrete_bounds (domain_type, &low_bound, &high_bound) < 0)
1039 low_bound = high_bound = 0;
1040 bit_length = high_bound - low_bound + 1;
1041 TYPE_LENGTH (result_type)
1042 = (bit_length + TARGET_CHAR_BIT - 1) / TARGET_CHAR_BIT;
f9780d5b 1043 if (low_bound >= 0)
876cecd0 1044 TYPE_UNSIGNED (result_type) = 1;
c906108c
SS
1045 }
1046 TYPE_FIELD_TYPE (result_type, 0) = domain_type;
1047
c16abbde 1048 return result_type;
c906108c
SS
1049}
1050
ea37ba09
DJ
1051/* Convert ARRAY_TYPE to a vector type. This may modify ARRAY_TYPE
1052 and any array types nested inside it. */
1053
1054void
1055make_vector_type (struct type *array_type)
1056{
1057 struct type *inner_array, *elt_type;
1058 int flags;
1059
1060 /* Find the innermost array type, in case the array is
1061 multi-dimensional. */
1062 inner_array = array_type;
1063 while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
1064 inner_array = TYPE_TARGET_TYPE (inner_array);
1065
1066 elt_type = TYPE_TARGET_TYPE (inner_array);
1067 if (TYPE_CODE (elt_type) == TYPE_CODE_INT)
1068 {
2844d6b5 1069 flags = TYPE_INSTANCE_FLAGS (elt_type) | TYPE_INSTANCE_FLAG_NOTTEXT;
ea37ba09
DJ
1070 elt_type = make_qualified_type (elt_type, flags, NULL);
1071 TYPE_TARGET_TYPE (inner_array) = elt_type;
1072 }
1073
876cecd0 1074 TYPE_VECTOR (array_type) = 1;
ea37ba09
DJ
1075}
1076
794ac428 1077struct type *
ac3aafc7
EZ
1078init_vector_type (struct type *elt_type, int n)
1079{
1080 struct type *array_type;
d8734c88 1081
e3506a9f 1082 array_type = lookup_array_range_type (elt_type, 0, n - 1);
ea37ba09 1083 make_vector_type (array_type);
ac3aafc7
EZ
1084 return array_type;
1085}
1086
0d5de010
DJ
1087/* Smash TYPE to be a type of pointers to members of DOMAIN with type
1088 TO_TYPE. A member pointer is a wierd thing -- it amounts to a
1089 typed offset into a struct, e.g. "an int at offset 8". A MEMBER
1090 TYPE doesn't include the offset (that's the value of the MEMBER
1091 itself), but does include the structure type into which it points
1092 (for some reason).
c906108c 1093
7ba81444
MS
1094 When "smashing" the type, we preserve the objfile that the old type
1095 pointed to, since we aren't changing where the type is actually
c906108c
SS
1096 allocated. */
1097
1098void
0d5de010
DJ
1099smash_to_memberptr_type (struct type *type, struct type *domain,
1100 struct type *to_type)
c906108c 1101{
2fdde8f8 1102 smash_type (type);
c906108c
SS
1103 TYPE_TARGET_TYPE (type) = to_type;
1104 TYPE_DOMAIN_TYPE (type) = domain;
0d5de010
DJ
1105 /* Assume that a data member pointer is the same size as a normal
1106 pointer. */
50810684
UW
1107 TYPE_LENGTH (type)
1108 = gdbarch_ptr_bit (get_type_arch (to_type)) / TARGET_CHAR_BIT;
0d5de010 1109 TYPE_CODE (type) = TYPE_CODE_MEMBERPTR;
c906108c
SS
1110}
1111
0b92b5bb
TT
1112/* Smash TYPE to be a type of pointer to methods type TO_TYPE.
1113
1114 When "smashing" the type, we preserve the objfile that the old type
1115 pointed to, since we aren't changing where the type is actually
1116 allocated. */
1117
1118void
1119smash_to_methodptr_type (struct type *type, struct type *to_type)
1120{
1121 smash_type (type);
1122 TYPE_TARGET_TYPE (type) = to_type;
1123 TYPE_DOMAIN_TYPE (type) = TYPE_DOMAIN_TYPE (to_type);
1124 TYPE_LENGTH (type) = cplus_method_ptr_size (to_type);
1125 TYPE_CODE (type) = TYPE_CODE_METHODPTR;
1126}
1127
c906108c
SS
1128/* Smash TYPE to be a type of method of DOMAIN with type TO_TYPE.
1129 METHOD just means `function that gets an extra "this" argument'.
1130
7ba81444
MS
1131 When "smashing" the type, we preserve the objfile that the old type
1132 pointed to, since we aren't changing where the type is actually
c906108c
SS
1133 allocated. */
1134
1135void
fba45db2 1136smash_to_method_type (struct type *type, struct type *domain,
ad2f7632
DJ
1137 struct type *to_type, struct field *args,
1138 int nargs, int varargs)
c906108c 1139{
2fdde8f8 1140 smash_type (type);
c906108c
SS
1141 TYPE_TARGET_TYPE (type) = to_type;
1142 TYPE_DOMAIN_TYPE (type) = domain;
ad2f7632
DJ
1143 TYPE_FIELDS (type) = args;
1144 TYPE_NFIELDS (type) = nargs;
1145 if (varargs)
876cecd0 1146 TYPE_VARARGS (type) = 1;
c906108c
SS
1147 TYPE_LENGTH (type) = 1; /* In practice, this is never needed. */
1148 TYPE_CODE (type) = TYPE_CODE_METHOD;
1149}
1150
1151/* Return a typename for a struct/union/enum type without "struct ",
1152 "union ", or "enum ". If the type has a NULL name, return NULL. */
1153
0d5cff50 1154const char *
aa1ee363 1155type_name_no_tag (const struct type *type)
c906108c
SS
1156{
1157 if (TYPE_TAG_NAME (type) != NULL)
1158 return TYPE_TAG_NAME (type);
1159
7ba81444
MS
1160 /* Is there code which expects this to return the name if there is
1161 no tag name? My guess is that this is mainly used for C++ in
1162 cases where the two will always be the same. */
c906108c
SS
1163 return TYPE_NAME (type);
1164}
1165
d8228535
JK
1166/* A wrapper of type_name_no_tag which calls error if the type is anonymous.
1167 Since GCC PR debug/47510 DWARF provides associated information to detect the
1168 anonymous class linkage name from its typedef.
1169
1170 Parameter TYPE should not yet have CHECK_TYPEDEF applied, this function will
1171 apply it itself. */
1172
1173const char *
1174type_name_no_tag_or_error (struct type *type)
1175{
1176 struct type *saved_type = type;
1177 const char *name;
1178 struct objfile *objfile;
1179
1180 CHECK_TYPEDEF (type);
1181
1182 name = type_name_no_tag (type);
1183 if (name != NULL)
1184 return name;
1185
1186 name = type_name_no_tag (saved_type);
1187 objfile = TYPE_OBJFILE (saved_type);
1188 error (_("Invalid anonymous type %s [in module %s], GCC PR debug/47510 bug?"),
1189 name ? name : "<anonymous>", objfile ? objfile->name : "<arch>");
1190}
1191
7ba81444
MS
1192/* Lookup a typedef or primitive type named NAME, visible in lexical
1193 block BLOCK. If NOERR is nonzero, return zero if NAME is not
1194 suitably defined. */
c906108c
SS
1195
1196struct type *
e6c014f2 1197lookup_typename (const struct language_defn *language,
ddd49eee 1198 struct gdbarch *gdbarch, const char *name,
34eaf542 1199 const struct block *block, int noerr)
c906108c 1200{
52f0bd74 1201 struct symbol *sym;
659c9f3a 1202 struct type *type;
c906108c 1203
774b6a14 1204 sym = lookup_symbol (name, block, VAR_DOMAIN, 0);
c51fe631
DE
1205 if (sym != NULL && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
1206 return SYMBOL_TYPE (sym);
1207
659c9f3a
DE
1208 type = language_lookup_primitive_type_by_name (language, gdbarch, name);
1209 if (type)
1210 return type;
c51fe631
DE
1211
1212 if (noerr)
1213 return NULL;
1214 error (_("No type named %s."), name);
c906108c
SS
1215}
1216
1217struct type *
e6c014f2 1218lookup_unsigned_typename (const struct language_defn *language,
0d5cff50 1219 struct gdbarch *gdbarch, const char *name)
c906108c
SS
1220{
1221 char *uns = alloca (strlen (name) + 10);
1222
1223 strcpy (uns, "unsigned ");
1224 strcpy (uns + 9, name);
e6c014f2 1225 return lookup_typename (language, gdbarch, uns, (struct block *) NULL, 0);
c906108c
SS
1226}
1227
1228struct type *
e6c014f2 1229lookup_signed_typename (const struct language_defn *language,
0d5cff50 1230 struct gdbarch *gdbarch, const char *name)
c906108c
SS
1231{
1232 struct type *t;
1233 char *uns = alloca (strlen (name) + 8);
1234
1235 strcpy (uns, "signed ");
1236 strcpy (uns + 7, name);
e6c014f2 1237 t = lookup_typename (language, gdbarch, uns, (struct block *) NULL, 1);
7ba81444 1238 /* If we don't find "signed FOO" just try again with plain "FOO". */
c906108c
SS
1239 if (t != NULL)
1240 return t;
e6c014f2 1241 return lookup_typename (language, gdbarch, name, (struct block *) NULL, 0);
c906108c
SS
1242}
1243
1244/* Lookup a structure type named "struct NAME",
1245 visible in lexical block BLOCK. */
1246
1247struct type *
270140bd 1248lookup_struct (const char *name, const struct block *block)
c906108c 1249{
52f0bd74 1250 struct symbol *sym;
c906108c 1251
2570f2b7 1252 sym = lookup_symbol (name, block, STRUCT_DOMAIN, 0);
c906108c
SS
1253
1254 if (sym == NULL)
1255 {
8a3fe4f8 1256 error (_("No struct type named %s."), name);
c906108c
SS
1257 }
1258 if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_STRUCT)
1259 {
7ba81444
MS
1260 error (_("This context has class, union or enum %s, not a struct."),
1261 name);
c906108c
SS
1262 }
1263 return (SYMBOL_TYPE (sym));
1264}
1265
1266/* Lookup a union type named "union NAME",
1267 visible in lexical block BLOCK. */
1268
1269struct type *
270140bd 1270lookup_union (const char *name, const struct block *block)
c906108c 1271{
52f0bd74 1272 struct symbol *sym;
c5aa993b 1273 struct type *t;
c906108c 1274
2570f2b7 1275 sym = lookup_symbol (name, block, STRUCT_DOMAIN, 0);
c906108c
SS
1276
1277 if (sym == NULL)
8a3fe4f8 1278 error (_("No union type named %s."), name);
c906108c 1279
c5aa993b 1280 t = SYMBOL_TYPE (sym);
c906108c
SS
1281
1282 if (TYPE_CODE (t) == TYPE_CODE_UNION)
c16abbde 1283 return t;
c906108c 1284
7ba81444
MS
1285 /* If we get here, it's not a union. */
1286 error (_("This context has class, struct or enum %s, not a union."),
1287 name);
c906108c
SS
1288}
1289
c906108c
SS
1290/* Lookup an enum type named "enum NAME",
1291 visible in lexical block BLOCK. */
1292
1293struct type *
270140bd 1294lookup_enum (const char *name, const struct block *block)
c906108c 1295{
52f0bd74 1296 struct symbol *sym;
c906108c 1297
2570f2b7 1298 sym = lookup_symbol (name, block, STRUCT_DOMAIN, 0);
c906108c
SS
1299 if (sym == NULL)
1300 {
8a3fe4f8 1301 error (_("No enum type named %s."), name);
c906108c
SS
1302 }
1303 if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_ENUM)
1304 {
7ba81444
MS
1305 error (_("This context has class, struct or union %s, not an enum."),
1306 name);
c906108c
SS
1307 }
1308 return (SYMBOL_TYPE (sym));
1309}
1310
1311/* Lookup a template type named "template NAME<TYPE>",
1312 visible in lexical block BLOCK. */
1313
1314struct type *
7ba81444 1315lookup_template_type (char *name, struct type *type,
270140bd 1316 const struct block *block)
c906108c
SS
1317{
1318 struct symbol *sym;
7ba81444
MS
1319 char *nam = (char *)
1320 alloca (strlen (name) + strlen (TYPE_NAME (type)) + 4);
d8734c88 1321
c906108c
SS
1322 strcpy (nam, name);
1323 strcat (nam, "<");
0004e5a2 1324 strcat (nam, TYPE_NAME (type));
0963b4bd 1325 strcat (nam, " >"); /* FIXME, extra space still introduced in gcc? */
c906108c 1326
2570f2b7 1327 sym = lookup_symbol (nam, block, VAR_DOMAIN, 0);
c906108c
SS
1328
1329 if (sym == NULL)
1330 {
8a3fe4f8 1331 error (_("No template type named %s."), name);
c906108c
SS
1332 }
1333 if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_STRUCT)
1334 {
7ba81444
MS
1335 error (_("This context has class, union or enum %s, not a struct."),
1336 name);
c906108c
SS
1337 }
1338 return (SYMBOL_TYPE (sym));
1339}
1340
7ba81444
MS
1341/* Given a type TYPE, lookup the type of the component of type named
1342 NAME.
c906108c 1343
7ba81444
MS
1344 TYPE can be either a struct or union, or a pointer or reference to
1345 a struct or union. If it is a pointer or reference, its target
1346 type is automatically used. Thus '.' and '->' are interchangable,
1347 as specified for the definitions of the expression element types
1348 STRUCTOP_STRUCT and STRUCTOP_PTR.
c906108c
SS
1349
1350 If NOERR is nonzero, return zero if NAME is not suitably defined.
1351 If NAME is the name of a baseclass type, return that type. */
1352
1353struct type *
fba45db2 1354lookup_struct_elt_type (struct type *type, char *name, int noerr)
c906108c
SS
1355{
1356 int i;
c92817ce 1357 char *typename;
c906108c
SS
1358
1359 for (;;)
1360 {
1361 CHECK_TYPEDEF (type);
1362 if (TYPE_CODE (type) != TYPE_CODE_PTR
1363 && TYPE_CODE (type) != TYPE_CODE_REF)
1364 break;
1365 type = TYPE_TARGET_TYPE (type);
1366 }
1367
687d6395
MS
1368 if (TYPE_CODE (type) != TYPE_CODE_STRUCT
1369 && TYPE_CODE (type) != TYPE_CODE_UNION)
c906108c 1370 {
c92817ce
TT
1371 typename = type_to_string (type);
1372 make_cleanup (xfree, typename);
1373 error (_("Type %s is not a structure or union type."), typename);
c906108c
SS
1374 }
1375
1376#if 0
7ba81444
MS
1377 /* FIXME: This change put in by Michael seems incorrect for the case
1378 where the structure tag name is the same as the member name.
0963b4bd 1379 I.e. when doing "ptype bell->bar" for "struct foo { int bar; int
7ba81444 1380 foo; } bell;" Disabled by fnf. */
c906108c
SS
1381 {
1382 char *typename;
1383
1384 typename = type_name_no_tag (type);
762f08a3 1385 if (typename != NULL && strcmp (typename, name) == 0)
c906108c
SS
1386 return type;
1387 }
1388#endif
1389
1390 for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
1391 {
0d5cff50 1392 const char *t_field_name = TYPE_FIELD_NAME (type, i);
c906108c 1393
db577aea 1394 if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
c906108c
SS
1395 {
1396 return TYPE_FIELD_TYPE (type, i);
1397 }
f5a010c0
PM
1398 else if (!t_field_name || *t_field_name == '\0')
1399 {
d8734c88
MS
1400 struct type *subtype
1401 = lookup_struct_elt_type (TYPE_FIELD_TYPE (type, i), name, 1);
1402
f5a010c0
PM
1403 if (subtype != NULL)
1404 return subtype;
1405 }
c906108c
SS
1406 }
1407
1408 /* OK, it's not in this class. Recursively check the baseclasses. */
1409 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1410 {
1411 struct type *t;
1412
9733fc94 1413 t = lookup_struct_elt_type (TYPE_BASECLASS (type, i), name, 1);
c906108c
SS
1414 if (t != NULL)
1415 {
1416 return t;
1417 }
1418 }
1419
1420 if (noerr)
1421 {
1422 return NULL;
1423 }
c5aa993b 1424
c92817ce
TT
1425 typename = type_to_string (type);
1426 make_cleanup (xfree, typename);
1427 error (_("Type %s has no component named %s."), typename, name);
c906108c
SS
1428}
1429
81fe8080
DE
1430/* Lookup the vptr basetype/fieldno values for TYPE.
1431 If found store vptr_basetype in *BASETYPEP if non-NULL, and return
1432 vptr_fieldno. Also, if found and basetype is from the same objfile,
1433 cache the results.
1434 If not found, return -1 and ignore BASETYPEP.
1435 Callers should be aware that in some cases (for example,
c906108c 1436 the type or one of its baseclasses is a stub type and we are
d48cc9dd
DJ
1437 debugging a .o file, or the compiler uses DWARF-2 and is not GCC),
1438 this function will not be able to find the
7ba81444 1439 virtual function table pointer, and vptr_fieldno will remain -1 and
81fe8080 1440 vptr_basetype will remain NULL or incomplete. */
c906108c 1441
81fe8080
DE
1442int
1443get_vptr_fieldno (struct type *type, struct type **basetypep)
c906108c
SS
1444{
1445 CHECK_TYPEDEF (type);
1446
1447 if (TYPE_VPTR_FIELDNO (type) < 0)
1448 {
1449 int i;
1450
7ba81444
MS
1451 /* We must start at zero in case the first (and only) baseclass
1452 is virtual (and hence we cannot share the table pointer). */
c906108c
SS
1453 for (i = 0; i < TYPE_N_BASECLASSES (type); i++)
1454 {
81fe8080
DE
1455 struct type *baseclass = check_typedef (TYPE_BASECLASS (type, i));
1456 int fieldno;
1457 struct type *basetype;
1458
1459 fieldno = get_vptr_fieldno (baseclass, &basetype);
1460 if (fieldno >= 0)
c906108c 1461 {
81fe8080 1462 /* If the type comes from a different objfile we can't cache
0963b4bd 1463 it, it may have a different lifetime. PR 2384 */
5ef73790 1464 if (TYPE_OBJFILE (type) == TYPE_OBJFILE (basetype))
81fe8080
DE
1465 {
1466 TYPE_VPTR_FIELDNO (type) = fieldno;
1467 TYPE_VPTR_BASETYPE (type) = basetype;
1468 }
1469 if (basetypep)
1470 *basetypep = basetype;
1471 return fieldno;
c906108c
SS
1472 }
1473 }
81fe8080
DE
1474
1475 /* Not found. */
1476 return -1;
1477 }
1478 else
1479 {
1480 if (basetypep)
1481 *basetypep = TYPE_VPTR_BASETYPE (type);
1482 return TYPE_VPTR_FIELDNO (type);
c906108c
SS
1483 }
1484}
1485
44e1a9eb
DJ
1486static void
1487stub_noname_complaint (void)
1488{
e2e0b3e5 1489 complaint (&symfile_complaints, _("stub type has NULL name"));
44e1a9eb
DJ
1490}
1491
92163a10
JK
1492/* Find the real type of TYPE. This function returns the real type,
1493 after removing all layers of typedefs, and completing opaque or stub
1494 types. Completion changes the TYPE argument, but stripping of
1495 typedefs does not.
1496
1497 Instance flags (e.g. const/volatile) are preserved as typedefs are
1498 stripped. If necessary a new qualified form of the underlying type
1499 is created.
1500
1501 NOTE: This will return a typedef if TYPE_TARGET_TYPE for the typedef has
1502 not been computed and we're either in the middle of reading symbols, or
1503 there was no name for the typedef in the debug info.
1504
9bc118a5
DE
1505 NOTE: Lookup of opaque types can throw errors for invalid symbol files.
1506 QUITs in the symbol reading code can also throw.
1507 Thus this function can throw an exception.
1508
92163a10
JK
1509 If TYPE is a TYPE_CODE_TYPEDEF, its length is updated to the length of
1510 the target type.
c906108c
SS
1511
1512 If this is a stubbed struct (i.e. declared as struct foo *), see if
0963b4bd 1513 we can find a full definition in some other file. If so, copy this
7ba81444
MS
1514 definition, so we can use it in future. There used to be a comment
1515 (but not any code) that if we don't find a full definition, we'd
1516 set a flag so we don't spend time in the future checking the same
1517 type. That would be a mistake, though--we might load in more
92163a10 1518 symbols which contain a full definition for the type. */
c906108c
SS
1519
1520struct type *
a02fd225 1521check_typedef (struct type *type)
c906108c
SS
1522{
1523 struct type *orig_type = type;
92163a10
JK
1524 /* While we're removing typedefs, we don't want to lose qualifiers.
1525 E.g., const/volatile. */
1526 int instance_flags = TYPE_INSTANCE_FLAGS (type);
a02fd225 1527
423c0af8
MS
1528 gdb_assert (type);
1529
c906108c
SS
1530 while (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
1531 {
1532 if (!TYPE_TARGET_TYPE (type))
1533 {
0d5cff50 1534 const char *name;
c906108c
SS
1535 struct symbol *sym;
1536
1537 /* It is dangerous to call lookup_symbol if we are currently
7ba81444 1538 reading a symtab. Infinite recursion is one danger. */
c906108c 1539 if (currently_reading_symtab)
92163a10 1540 return make_qualified_type (type, instance_flags, NULL);
c906108c
SS
1541
1542 name = type_name_no_tag (type);
7ba81444
MS
1543 /* FIXME: shouldn't we separately check the TYPE_NAME and
1544 the TYPE_TAG_NAME, and look in STRUCT_DOMAIN and/or
1545 VAR_DOMAIN as appropriate? (this code was written before
1546 TYPE_NAME and TYPE_TAG_NAME were separate). */
c906108c
SS
1547 if (name == NULL)
1548 {
23136709 1549 stub_noname_complaint ();
92163a10 1550 return make_qualified_type (type, instance_flags, NULL);
c906108c 1551 }
2570f2b7 1552 sym = lookup_symbol (name, 0, STRUCT_DOMAIN, 0);
c906108c
SS
1553 if (sym)
1554 TYPE_TARGET_TYPE (type) = SYMBOL_TYPE (sym);
7ba81444 1555 else /* TYPE_CODE_UNDEF */
e9bb382b 1556 TYPE_TARGET_TYPE (type) = alloc_type_arch (get_type_arch (type));
c906108c
SS
1557 }
1558 type = TYPE_TARGET_TYPE (type);
c906108c 1559
92163a10
JK
1560 /* Preserve the instance flags as we traverse down the typedef chain.
1561
1562 Handling address spaces/classes is nasty, what do we do if there's a
1563 conflict?
1564 E.g., what if an outer typedef marks the type as class_1 and an inner
1565 typedef marks the type as class_2?
1566 This is the wrong place to do such error checking. We leave it to
1567 the code that created the typedef in the first place to flag the
1568 error. We just pick the outer address space (akin to letting the
1569 outer cast in a chain of casting win), instead of assuming
1570 "it can't happen". */
1571 {
1572 const int ALL_SPACES = (TYPE_INSTANCE_FLAG_CODE_SPACE
1573 | TYPE_INSTANCE_FLAG_DATA_SPACE);
1574 const int ALL_CLASSES = TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL;
1575 int new_instance_flags = TYPE_INSTANCE_FLAGS (type);
1576
1577 /* Treat code vs data spaces and address classes separately. */
1578 if ((instance_flags & ALL_SPACES) != 0)
1579 new_instance_flags &= ~ALL_SPACES;
1580 if ((instance_flags & ALL_CLASSES) != 0)
1581 new_instance_flags &= ~ALL_CLASSES;
1582
1583 instance_flags |= new_instance_flags;
1584 }
1585 }
a02fd225 1586
7ba81444
MS
1587 /* If this is a struct/class/union with no fields, then check
1588 whether a full definition exists somewhere else. This is for
1589 systems where a type definition with no fields is issued for such
1590 types, instead of identifying them as stub types in the first
1591 place. */
c5aa993b 1592
7ba81444
MS
1593 if (TYPE_IS_OPAQUE (type)
1594 && opaque_type_resolution
1595 && !currently_reading_symtab)
c906108c 1596 {
0d5cff50 1597 const char *name = type_name_no_tag (type);
c5aa993b 1598 struct type *newtype;
d8734c88 1599
c906108c
SS
1600 if (name == NULL)
1601 {
23136709 1602 stub_noname_complaint ();
92163a10 1603 return make_qualified_type (type, instance_flags, NULL);
c906108c
SS
1604 }
1605 newtype = lookup_transparent_type (name);
ad766c0a 1606
c906108c 1607 if (newtype)
ad766c0a 1608 {
7ba81444
MS
1609 /* If the resolved type and the stub are in the same
1610 objfile, then replace the stub type with the real deal.
1611 But if they're in separate objfiles, leave the stub
1612 alone; we'll just look up the transparent type every time
1613 we call check_typedef. We can't create pointers between
1614 types allocated to different objfiles, since they may
1615 have different lifetimes. Trying to copy NEWTYPE over to
1616 TYPE's objfile is pointless, too, since you'll have to
1617 move over any other types NEWTYPE refers to, which could
1618 be an unbounded amount of stuff. */
ad766c0a 1619 if (TYPE_OBJFILE (newtype) == TYPE_OBJFILE (type))
92163a10
JK
1620 type = make_qualified_type (newtype,
1621 TYPE_INSTANCE_FLAGS (type),
1622 type);
ad766c0a
JB
1623 else
1624 type = newtype;
1625 }
c906108c 1626 }
7ba81444
MS
1627 /* Otherwise, rely on the stub flag being set for opaque/stubbed
1628 types. */
74a9bb82 1629 else if (TYPE_STUB (type) && !currently_reading_symtab)
c906108c 1630 {
0d5cff50 1631 const char *name = type_name_no_tag (type);
c906108c 1632 /* FIXME: shouldn't we separately check the TYPE_NAME and the
176620f1 1633 TYPE_TAG_NAME, and look in STRUCT_DOMAIN and/or VAR_DOMAIN
7b83ea04
AC
1634 as appropriate? (this code was written before TYPE_NAME and
1635 TYPE_TAG_NAME were separate). */
c906108c 1636 struct symbol *sym;
d8734c88 1637
c906108c
SS
1638 if (name == NULL)
1639 {
23136709 1640 stub_noname_complaint ();
92163a10 1641 return make_qualified_type (type, instance_flags, NULL);
c906108c 1642 }
2570f2b7 1643 sym = lookup_symbol (name, 0, STRUCT_DOMAIN, 0);
c906108c 1644 if (sym)
c26f2453
JB
1645 {
1646 /* Same as above for opaque types, we can replace the stub
92163a10 1647 with the complete type only if they are in the same
c26f2453
JB
1648 objfile. */
1649 if (TYPE_OBJFILE (SYMBOL_TYPE(sym)) == TYPE_OBJFILE (type))
92163a10
JK
1650 type = make_qualified_type (SYMBOL_TYPE (sym),
1651 TYPE_INSTANCE_FLAGS (type),
1652 type);
c26f2453
JB
1653 else
1654 type = SYMBOL_TYPE (sym);
1655 }
c906108c
SS
1656 }
1657
74a9bb82 1658 if (TYPE_TARGET_STUB (type))
c906108c
SS
1659 {
1660 struct type *range_type;
1661 struct type *target_type = check_typedef (TYPE_TARGET_TYPE (type));
1662
74a9bb82 1663 if (TYPE_STUB (target_type) || TYPE_TARGET_STUB (target_type))
c5aa993b 1664 {
73e2eb35 1665 /* Nothing we can do. */
c5aa993b 1666 }
c906108c
SS
1667 else if (TYPE_CODE (type) == TYPE_CODE_ARRAY
1668 && TYPE_NFIELDS (type) == 1
262452ec 1669 && (TYPE_CODE (range_type = TYPE_INDEX_TYPE (type))
c906108c
SS
1670 == TYPE_CODE_RANGE))
1671 {
1672 /* Now recompute the length of the array type, based on its
ab0d6e0d
JB
1673 number of elements and the target type's length.
1674 Watch out for Ada null Ada arrays where the high bound
0963b4bd 1675 is smaller than the low bound. */
43bbcdc2
PH
1676 const LONGEST low_bound = TYPE_LOW_BOUND (range_type);
1677 const LONGEST high_bound = TYPE_HIGH_BOUND (range_type);
1678 ULONGEST len;
1679
ab0d6e0d 1680 if (high_bound < low_bound)
43bbcdc2 1681 len = 0;
d8734c88
MS
1682 else
1683 {
1684 /* For now, we conservatively take the array length to be 0
1685 if its length exceeds UINT_MAX. The code below assumes
1686 that for x < 0, (ULONGEST) x == -x + ULONGEST_MAX + 1,
1687 which is technically not guaranteed by C, but is usually true
1688 (because it would be true if x were unsigned with its
0963b4bd 1689 high-order bit on). It uses the fact that
d8734c88
MS
1690 high_bound-low_bound is always representable in
1691 ULONGEST and that if high_bound-low_bound+1 overflows,
1692 it overflows to 0. We must change these tests if we
1693 decide to increase the representation of TYPE_LENGTH
0963b4bd 1694 from unsigned int to ULONGEST. */
d8734c88
MS
1695 ULONGEST ulow = low_bound, uhigh = high_bound;
1696 ULONGEST tlen = TYPE_LENGTH (target_type);
1697
1698 len = tlen * (uhigh - ulow + 1);
1699 if (tlen == 0 || (len / tlen - 1 + ulow) != uhigh
1700 || len > UINT_MAX)
1701 len = 0;
1702 }
43bbcdc2 1703 TYPE_LENGTH (type) = len;
876cecd0 1704 TYPE_TARGET_STUB (type) = 0;
c906108c
SS
1705 }
1706 else if (TYPE_CODE (type) == TYPE_CODE_RANGE)
1707 {
1708 TYPE_LENGTH (type) = TYPE_LENGTH (target_type);
876cecd0 1709 TYPE_TARGET_STUB (type) = 0;
c906108c
SS
1710 }
1711 }
92163a10
JK
1712
1713 type = make_qualified_type (type, instance_flags, NULL);
1714
7ba81444 1715 /* Cache TYPE_LENGTH for future use. */
c906108c 1716 TYPE_LENGTH (orig_type) = TYPE_LENGTH (type);
92163a10 1717
c906108c
SS
1718 return type;
1719}
1720
7ba81444 1721/* Parse a type expression in the string [P..P+LENGTH). If an error
48319d1f 1722 occurs, silently return a void type. */
c91ecb25 1723
b9362cc7 1724static struct type *
48319d1f 1725safe_parse_type (struct gdbarch *gdbarch, char *p, int length)
c91ecb25
ND
1726{
1727 struct ui_file *saved_gdb_stderr;
34365054 1728 struct type *type = NULL; /* Initialize to keep gcc happy. */
8e7b59a5 1729 volatile struct gdb_exception except;
c91ecb25 1730
7ba81444 1731 /* Suppress error messages. */
c91ecb25
ND
1732 saved_gdb_stderr = gdb_stderr;
1733 gdb_stderr = ui_file_new ();
1734
7ba81444 1735 /* Call parse_and_eval_type() without fear of longjmp()s. */
8e7b59a5
KS
1736 TRY_CATCH (except, RETURN_MASK_ERROR)
1737 {
1738 type = parse_and_eval_type (p, length);
1739 }
1740
1741 if (except.reason < 0)
48319d1f 1742 type = builtin_type (gdbarch)->builtin_void;
c91ecb25 1743
7ba81444 1744 /* Stop suppressing error messages. */
c91ecb25
ND
1745 ui_file_delete (gdb_stderr);
1746 gdb_stderr = saved_gdb_stderr;
1747
1748 return type;
1749}
1750
c906108c
SS
1751/* Ugly hack to convert method stubs into method types.
1752
7ba81444
MS
1753 He ain't kiddin'. This demangles the name of the method into a
1754 string including argument types, parses out each argument type,
1755 generates a string casting a zero to that type, evaluates the
1756 string, and stuffs the resulting type into an argtype vector!!!
1757 Then it knows the type of the whole function (including argument
1758 types for overloading), which info used to be in the stab's but was
1759 removed to hack back the space required for them. */
c906108c 1760
de17c821 1761static void
fba45db2 1762check_stub_method (struct type *type, int method_id, int signature_id)
c906108c 1763{
50810684 1764 struct gdbarch *gdbarch = get_type_arch (type);
c906108c
SS
1765 struct fn_field *f;
1766 char *mangled_name = gdb_mangle_name (type, method_id, signature_id);
1767 char *demangled_name = cplus_demangle (mangled_name,
1768 DMGL_PARAMS | DMGL_ANSI);
1769 char *argtypetext, *p;
1770 int depth = 0, argcount = 1;
ad2f7632 1771 struct field *argtypes;
c906108c
SS
1772 struct type *mtype;
1773
1774 /* Make sure we got back a function string that we can use. */
1775 if (demangled_name)
1776 p = strchr (demangled_name, '(');
502dcf4e
AC
1777 else
1778 p = NULL;
c906108c
SS
1779
1780 if (demangled_name == NULL || p == NULL)
7ba81444
MS
1781 error (_("Internal: Cannot demangle mangled name `%s'."),
1782 mangled_name);
c906108c
SS
1783
1784 /* Now, read in the parameters that define this type. */
1785 p += 1;
1786 argtypetext = p;
1787 while (*p)
1788 {
070ad9f0 1789 if (*p == '(' || *p == '<')
c906108c
SS
1790 {
1791 depth += 1;
1792 }
070ad9f0 1793 else if (*p == ')' || *p == '>')
c906108c
SS
1794 {
1795 depth -= 1;
1796 }
1797 else if (*p == ',' && depth == 0)
1798 {
1799 argcount += 1;
1800 }
1801
1802 p += 1;
1803 }
1804
ad2f7632
DJ
1805 /* If we read one argument and it was ``void'', don't count it. */
1806 if (strncmp (argtypetext, "(void)", 6) == 0)
1807 argcount -= 1;
c906108c 1808
ad2f7632
DJ
1809 /* We need one extra slot, for the THIS pointer. */
1810
1811 argtypes = (struct field *)
1812 TYPE_ALLOC (type, (argcount + 1) * sizeof (struct field));
c906108c 1813 p = argtypetext;
4a1970e4
DJ
1814
1815 /* Add THIS pointer for non-static methods. */
1816 f = TYPE_FN_FIELDLIST1 (type, method_id);
1817 if (TYPE_FN_FIELD_STATIC_P (f, signature_id))
1818 argcount = 0;
1819 else
1820 {
ad2f7632 1821 argtypes[0].type = lookup_pointer_type (type);
4a1970e4
DJ
1822 argcount = 1;
1823 }
c906108c 1824
0963b4bd 1825 if (*p != ')') /* () means no args, skip while. */
c906108c
SS
1826 {
1827 depth = 0;
1828 while (*p)
1829 {
1830 if (depth <= 0 && (*p == ',' || *p == ')'))
1831 {
ad2f7632
DJ
1832 /* Avoid parsing of ellipsis, they will be handled below.
1833 Also avoid ``void'' as above. */
1834 if (strncmp (argtypetext, "...", p - argtypetext) != 0
1835 && strncmp (argtypetext, "void", p - argtypetext) != 0)
c906108c 1836 {
ad2f7632 1837 argtypes[argcount].type =
48319d1f 1838 safe_parse_type (gdbarch, argtypetext, p - argtypetext);
c906108c
SS
1839 argcount += 1;
1840 }
1841 argtypetext = p + 1;
1842 }
1843
070ad9f0 1844 if (*p == '(' || *p == '<')
c906108c
SS
1845 {
1846 depth += 1;
1847 }
070ad9f0 1848 else if (*p == ')' || *p == '>')
c906108c
SS
1849 {
1850 depth -= 1;
1851 }
1852
1853 p += 1;
1854 }
1855 }
1856
c906108c
SS
1857 TYPE_FN_FIELD_PHYSNAME (f, signature_id) = mangled_name;
1858
1859 /* Now update the old "stub" type into a real type. */
1860 mtype = TYPE_FN_FIELD_TYPE (f, signature_id);
1861 TYPE_DOMAIN_TYPE (mtype) = type;
ad2f7632
DJ
1862 TYPE_FIELDS (mtype) = argtypes;
1863 TYPE_NFIELDS (mtype) = argcount;
876cecd0 1864 TYPE_STUB (mtype) = 0;
c906108c 1865 TYPE_FN_FIELD_STUB (f, signature_id) = 0;
ad2f7632 1866 if (p[-2] == '.')
876cecd0 1867 TYPE_VARARGS (mtype) = 1;
ad2f7632
DJ
1868
1869 xfree (demangled_name);
c906108c
SS
1870}
1871
7ba81444
MS
1872/* This is the external interface to check_stub_method, above. This
1873 function unstubs all of the signatures for TYPE's METHOD_ID method
1874 name. After calling this function TYPE_FN_FIELD_STUB will be
1875 cleared for each signature and TYPE_FN_FIELDLIST_NAME will be
1876 correct.
de17c821
DJ
1877
1878 This function unfortunately can not die until stabs do. */
1879
1880void
1881check_stub_method_group (struct type *type, int method_id)
1882{
1883 int len = TYPE_FN_FIELDLIST_LENGTH (type, method_id);
1884 struct fn_field *f = TYPE_FN_FIELDLIST1 (type, method_id);
f710f4fc 1885 int j, found_stub = 0;
de17c821
DJ
1886
1887 for (j = 0; j < len; j++)
1888 if (TYPE_FN_FIELD_STUB (f, j))
1889 {
1890 found_stub = 1;
1891 check_stub_method (type, method_id, j);
1892 }
1893
7ba81444
MS
1894 /* GNU v3 methods with incorrect names were corrected when we read
1895 in type information, because it was cheaper to do it then. The
1896 only GNU v2 methods with incorrect method names are operators and
1897 destructors; destructors were also corrected when we read in type
1898 information.
de17c821
DJ
1899
1900 Therefore the only thing we need to handle here are v2 operator
1901 names. */
1902 if (found_stub && strncmp (TYPE_FN_FIELD_PHYSNAME (f, 0), "_Z", 2) != 0)
1903 {
1904 int ret;
1905 char dem_opname[256];
1906
7ba81444
MS
1907 ret = cplus_demangle_opname (TYPE_FN_FIELDLIST_NAME (type,
1908 method_id),
de17c821
DJ
1909 dem_opname, DMGL_ANSI);
1910 if (!ret)
7ba81444
MS
1911 ret = cplus_demangle_opname (TYPE_FN_FIELDLIST_NAME (type,
1912 method_id),
de17c821
DJ
1913 dem_opname, 0);
1914 if (ret)
1915 TYPE_FN_FIELDLIST_NAME (type, method_id) = xstrdup (dem_opname);
1916 }
1917}
1918
9655fd1a
JK
1919/* Ensure it is in .rodata (if available) by workarounding GCC PR 44690. */
1920const struct cplus_struct_type cplus_struct_default = { };
c906108c
SS
1921
1922void
fba45db2 1923allocate_cplus_struct_type (struct type *type)
c906108c 1924{
b4ba55a1
JB
1925 if (HAVE_CPLUS_STRUCT (type))
1926 /* Structure was already allocated. Nothing more to do. */
1927 return;
1928
1929 TYPE_SPECIFIC_FIELD (type) = TYPE_SPECIFIC_CPLUS_STUFF;
1930 TYPE_RAW_CPLUS_SPECIFIC (type) = (struct cplus_struct_type *)
1931 TYPE_ALLOC (type, sizeof (struct cplus_struct_type));
1932 *(TYPE_RAW_CPLUS_SPECIFIC (type)) = cplus_struct_default;
c906108c
SS
1933}
1934
b4ba55a1
JB
1935const struct gnat_aux_type gnat_aux_default =
1936 { NULL };
1937
1938/* Set the TYPE's type-specific kind to TYPE_SPECIFIC_GNAT_STUFF,
1939 and allocate the associated gnat-specific data. The gnat-specific
1940 data is also initialized to gnat_aux_default. */
5212577a 1941
b4ba55a1
JB
1942void
1943allocate_gnat_aux_type (struct type *type)
1944{
1945 TYPE_SPECIFIC_FIELD (type) = TYPE_SPECIFIC_GNAT_STUFF;
1946 TYPE_GNAT_SPECIFIC (type) = (struct gnat_aux_type *)
1947 TYPE_ALLOC (type, sizeof (struct gnat_aux_type));
1948 *(TYPE_GNAT_SPECIFIC (type)) = gnat_aux_default;
1949}
1950
c906108c
SS
1951/* Helper function to initialize the standard scalar types.
1952
86f62fd7
TT
1953 If NAME is non-NULL, then it is used to initialize the type name.
1954 Note that NAME is not copied; it is required to have a lifetime at
1955 least as long as OBJFILE. */
c906108c
SS
1956
1957struct type *
7ba81444 1958init_type (enum type_code code, int length, int flags,
748e18ae 1959 const char *name, struct objfile *objfile)
c906108c 1960{
52f0bd74 1961 struct type *type;
c906108c
SS
1962
1963 type = alloc_type (objfile);
1964 TYPE_CODE (type) = code;
1965 TYPE_LENGTH (type) = length;
876cecd0
TT
1966
1967 gdb_assert (!(flags & (TYPE_FLAG_MIN - 1)));
1968 if (flags & TYPE_FLAG_UNSIGNED)
1969 TYPE_UNSIGNED (type) = 1;
1970 if (flags & TYPE_FLAG_NOSIGN)
1971 TYPE_NOSIGN (type) = 1;
1972 if (flags & TYPE_FLAG_STUB)
1973 TYPE_STUB (type) = 1;
1974 if (flags & TYPE_FLAG_TARGET_STUB)
1975 TYPE_TARGET_STUB (type) = 1;
1976 if (flags & TYPE_FLAG_STATIC)
1977 TYPE_STATIC (type) = 1;
1978 if (flags & TYPE_FLAG_PROTOTYPED)
1979 TYPE_PROTOTYPED (type) = 1;
1980 if (flags & TYPE_FLAG_INCOMPLETE)
1981 TYPE_INCOMPLETE (type) = 1;
1982 if (flags & TYPE_FLAG_VARARGS)
1983 TYPE_VARARGS (type) = 1;
1984 if (flags & TYPE_FLAG_VECTOR)
1985 TYPE_VECTOR (type) = 1;
1986 if (flags & TYPE_FLAG_STUB_SUPPORTED)
1987 TYPE_STUB_SUPPORTED (type) = 1;
876cecd0
TT
1988 if (flags & TYPE_FLAG_FIXED_INSTANCE)
1989 TYPE_FIXED_INSTANCE (type) = 1;
0875794a
JK
1990 if (flags & TYPE_FLAG_GNU_IFUNC)
1991 TYPE_GNU_IFUNC (type) = 1;
876cecd0 1992
86f62fd7 1993 TYPE_NAME (type) = name;
c906108c
SS
1994
1995 /* C++ fancies. */
1996
973ccf8b 1997 if (name && strcmp (name, "char") == 0)
876cecd0 1998 TYPE_NOSIGN (type) = 1;
973ccf8b 1999
b4ba55a1 2000 switch (code)
c906108c 2001 {
b4ba55a1
JB
2002 case TYPE_CODE_STRUCT:
2003 case TYPE_CODE_UNION:
2004 case TYPE_CODE_NAMESPACE:
2005 INIT_CPLUS_SPECIFIC (type);
2006 break;
2007 case TYPE_CODE_FLT:
2008 TYPE_SPECIFIC_FIELD (type) = TYPE_SPECIFIC_FLOATFORMAT;
2009 break;
2010 case TYPE_CODE_FUNC:
b6cdc2c1 2011 INIT_FUNC_SPECIFIC (type);
b4ba55a1 2012 break;
c906108c 2013 }
c16abbde 2014 return type;
c906108c 2015}
5212577a
DE
2016\f
2017/* Queries on types. */
c906108c 2018
c906108c 2019int
fba45db2 2020can_dereference (struct type *t)
c906108c 2021{
7ba81444
MS
2022 /* FIXME: Should we return true for references as well as
2023 pointers? */
c906108c
SS
2024 CHECK_TYPEDEF (t);
2025 return
2026 (t != NULL
2027 && TYPE_CODE (t) == TYPE_CODE_PTR
2028 && TYPE_CODE (TYPE_TARGET_TYPE (t)) != TYPE_CODE_VOID);
2029}
2030
adf40b2e 2031int
fba45db2 2032is_integral_type (struct type *t)
adf40b2e
JM
2033{
2034 CHECK_TYPEDEF (t);
2035 return
2036 ((t != NULL)
d4f3574e
SS
2037 && ((TYPE_CODE (t) == TYPE_CODE_INT)
2038 || (TYPE_CODE (t) == TYPE_CODE_ENUM)
4f2aea11 2039 || (TYPE_CODE (t) == TYPE_CODE_FLAGS)
d4f3574e
SS
2040 || (TYPE_CODE (t) == TYPE_CODE_CHAR)
2041 || (TYPE_CODE (t) == TYPE_CODE_RANGE)
2042 || (TYPE_CODE (t) == TYPE_CODE_BOOL)));
adf40b2e
JM
2043}
2044
e09342b5
TJB
2045/* Return true if TYPE is scalar. */
2046
2047static int
2048is_scalar_type (struct type *type)
2049{
2050 CHECK_TYPEDEF (type);
2051
2052 switch (TYPE_CODE (type))
2053 {
2054 case TYPE_CODE_ARRAY:
2055 case TYPE_CODE_STRUCT:
2056 case TYPE_CODE_UNION:
2057 case TYPE_CODE_SET:
2058 case TYPE_CODE_STRING:
e09342b5
TJB
2059 return 0;
2060 default:
2061 return 1;
2062 }
2063}
2064
2065/* Return true if T is scalar, or a composite type which in practice has
90e4670f
TJB
2066 the memory layout of a scalar type. E.g., an array or struct with only
2067 one scalar element inside it, or a union with only scalar elements. */
e09342b5
TJB
2068
2069int
2070is_scalar_type_recursive (struct type *t)
2071{
2072 CHECK_TYPEDEF (t);
2073
2074 if (is_scalar_type (t))
2075 return 1;
2076 /* Are we dealing with an array or string of known dimensions? */
2077 else if ((TYPE_CODE (t) == TYPE_CODE_ARRAY
2078 || TYPE_CODE (t) == TYPE_CODE_STRING) && TYPE_NFIELDS (t) == 1
2079 && TYPE_CODE (TYPE_INDEX_TYPE (t)) == TYPE_CODE_RANGE)
2080 {
2081 LONGEST low_bound, high_bound;
2082 struct type *elt_type = check_typedef (TYPE_TARGET_TYPE (t));
2083
2084 get_discrete_bounds (TYPE_INDEX_TYPE (t), &low_bound, &high_bound);
2085
2086 return high_bound == low_bound && is_scalar_type_recursive (elt_type);
2087 }
2088 /* Are we dealing with a struct with one element? */
2089 else if (TYPE_CODE (t) == TYPE_CODE_STRUCT && TYPE_NFIELDS (t) == 1)
2090 return is_scalar_type_recursive (TYPE_FIELD_TYPE (t, 0));
2091 else if (TYPE_CODE (t) == TYPE_CODE_UNION)
2092 {
2093 int i, n = TYPE_NFIELDS (t);
2094
2095 /* If all elements of the union are scalar, then the union is scalar. */
2096 for (i = 0; i < n; i++)
2097 if (!is_scalar_type_recursive (TYPE_FIELD_TYPE (t, i)))
2098 return 0;
2099
2100 return 1;
2101 }
2102
2103 return 0;
2104}
2105
4e8f195d
TT
2106/* A helper function which returns true if types A and B represent the
2107 "same" class type. This is true if the types have the same main
2108 type, or the same name. */
2109
2110int
2111class_types_same_p (const struct type *a, const struct type *b)
2112{
2113 return (TYPE_MAIN_TYPE (a) == TYPE_MAIN_TYPE (b)
2114 || (TYPE_NAME (a) && TYPE_NAME (b)
2115 && !strcmp (TYPE_NAME (a), TYPE_NAME (b))));
2116}
2117
a9d5ef47
SW
2118/* If BASE is an ancestor of DCLASS return the distance between them.
2119 otherwise return -1;
2120 eg:
2121
2122 class A {};
2123 class B: public A {};
2124 class C: public B {};
2125 class D: C {};
2126
2127 distance_to_ancestor (A, A, 0) = 0
2128 distance_to_ancestor (A, B, 0) = 1
2129 distance_to_ancestor (A, C, 0) = 2
2130 distance_to_ancestor (A, D, 0) = 3
2131
2132 If PUBLIC is 1 then only public ancestors are considered,
2133 and the function returns the distance only if BASE is a public ancestor
2134 of DCLASS.
2135 Eg:
2136
0963b4bd 2137 distance_to_ancestor (A, D, 1) = -1. */
c906108c 2138
0526b37a 2139static int
a9d5ef47 2140distance_to_ancestor (struct type *base, struct type *dclass, int public)
c906108c
SS
2141{
2142 int i;
a9d5ef47 2143 int d;
c5aa993b 2144
c906108c
SS
2145 CHECK_TYPEDEF (base);
2146 CHECK_TYPEDEF (dclass);
2147
4e8f195d 2148 if (class_types_same_p (base, dclass))
a9d5ef47 2149 return 0;
c906108c
SS
2150
2151 for (i = 0; i < TYPE_N_BASECLASSES (dclass); i++)
4e8f195d 2152 {
0526b37a
SW
2153 if (public && ! BASETYPE_VIA_PUBLIC (dclass, i))
2154 continue;
2155
a9d5ef47
SW
2156 d = distance_to_ancestor (base, TYPE_BASECLASS (dclass, i), public);
2157 if (d >= 0)
2158 return 1 + d;
4e8f195d 2159 }
c906108c 2160
a9d5ef47 2161 return -1;
c906108c 2162}
4e8f195d 2163
0526b37a
SW
2164/* Check whether BASE is an ancestor or base class or DCLASS
2165 Return 1 if so, and 0 if not.
2166 Note: If BASE and DCLASS are of the same type, this function
2167 will return 1. So for some class A, is_ancestor (A, A) will
2168 return 1. */
2169
2170int
2171is_ancestor (struct type *base, struct type *dclass)
2172{
a9d5ef47 2173 return distance_to_ancestor (base, dclass, 0) >= 0;
0526b37a
SW
2174}
2175
4e8f195d
TT
2176/* Like is_ancestor, but only returns true when BASE is a public
2177 ancestor of DCLASS. */
2178
2179int
2180is_public_ancestor (struct type *base, struct type *dclass)
2181{
a9d5ef47 2182 return distance_to_ancestor (base, dclass, 1) >= 0;
4e8f195d
TT
2183}
2184
2185/* A helper function for is_unique_ancestor. */
2186
2187static int
2188is_unique_ancestor_worker (struct type *base, struct type *dclass,
2189 int *offset,
8af8e3bc
PA
2190 const gdb_byte *valaddr, int embedded_offset,
2191 CORE_ADDR address, struct value *val)
4e8f195d
TT
2192{
2193 int i, count = 0;
2194
2195 CHECK_TYPEDEF (base);
2196 CHECK_TYPEDEF (dclass);
2197
2198 for (i = 0; i < TYPE_N_BASECLASSES (dclass) && count < 2; ++i)
2199 {
8af8e3bc
PA
2200 struct type *iter;
2201 int this_offset;
4e8f195d 2202
8af8e3bc
PA
2203 iter = check_typedef (TYPE_BASECLASS (dclass, i));
2204
2205 this_offset = baseclass_offset (dclass, i, valaddr, embedded_offset,
2206 address, val);
4e8f195d
TT
2207
2208 if (class_types_same_p (base, iter))
2209 {
2210 /* If this is the first subclass, set *OFFSET and set count
2211 to 1. Otherwise, if this is at the same offset as
2212 previous instances, do nothing. Otherwise, increment
2213 count. */
2214 if (*offset == -1)
2215 {
2216 *offset = this_offset;
2217 count = 1;
2218 }
2219 else if (this_offset == *offset)
2220 {
2221 /* Nothing. */
2222 }
2223 else
2224 ++count;
2225 }
2226 else
2227 count += is_unique_ancestor_worker (base, iter, offset,
8af8e3bc
PA
2228 valaddr,
2229 embedded_offset + this_offset,
2230 address, val);
4e8f195d
TT
2231 }
2232
2233 return count;
2234}
2235
2236/* Like is_ancestor, but only returns true if BASE is a unique base
2237 class of the type of VAL. */
2238
2239int
2240is_unique_ancestor (struct type *base, struct value *val)
2241{
2242 int offset = -1;
2243
2244 return is_unique_ancestor_worker (base, value_type (val), &offset,
8af8e3bc
PA
2245 value_contents_for_printing (val),
2246 value_embedded_offset (val),
2247 value_address (val), val) == 1;
4e8f195d
TT
2248}
2249
c906108c 2250\f
5212577a 2251/* Overload resolution. */
c906108c 2252
6403aeea
SW
2253/* Return the sum of the rank of A with the rank of B. */
2254
2255struct rank
2256sum_ranks (struct rank a, struct rank b)
2257{
2258 struct rank c;
2259 c.rank = a.rank + b.rank;
a9d5ef47 2260 c.subrank = a.subrank + b.subrank;
6403aeea
SW
2261 return c;
2262}
2263
2264/* Compare rank A and B and return:
2265 0 if a = b
2266 1 if a is better than b
2267 -1 if b is better than a. */
2268
2269int
2270compare_ranks (struct rank a, struct rank b)
2271{
2272 if (a.rank == b.rank)
a9d5ef47
SW
2273 {
2274 if (a.subrank == b.subrank)
2275 return 0;
2276 if (a.subrank < b.subrank)
2277 return 1;
2278 if (a.subrank > b.subrank)
2279 return -1;
2280 }
6403aeea
SW
2281
2282 if (a.rank < b.rank)
2283 return 1;
2284
0963b4bd 2285 /* a.rank > b.rank */
6403aeea
SW
2286 return -1;
2287}
c5aa993b 2288
0963b4bd 2289/* Functions for overload resolution begin here. */
c906108c
SS
2290
2291/* Compare two badness vectors A and B and return the result.
7ba81444
MS
2292 0 => A and B are identical
2293 1 => A and B are incomparable
2294 2 => A is better than B
2295 3 => A is worse than B */
c906108c
SS
2296
2297int
fba45db2 2298compare_badness (struct badness_vector *a, struct badness_vector *b)
c906108c
SS
2299{
2300 int i;
2301 int tmp;
c5aa993b
JM
2302 short found_pos = 0; /* any positives in c? */
2303 short found_neg = 0; /* any negatives in c? */
2304
2305 /* differing lengths => incomparable */
c906108c
SS
2306 if (a->length != b->length)
2307 return 1;
2308
c5aa993b
JM
2309 /* Subtract b from a */
2310 for (i = 0; i < a->length; i++)
c906108c 2311 {
6403aeea 2312 tmp = compare_ranks (b->rank[i], a->rank[i]);
c906108c 2313 if (tmp > 0)
c5aa993b 2314 found_pos = 1;
c906108c 2315 else if (tmp < 0)
c5aa993b 2316 found_neg = 1;
c906108c
SS
2317 }
2318
2319 if (found_pos)
2320 {
2321 if (found_neg)
c5aa993b 2322 return 1; /* incomparable */
c906108c 2323 else
c5aa993b 2324 return 3; /* A > B */
c906108c 2325 }
c5aa993b
JM
2326 else
2327 /* no positives */
c906108c
SS
2328 {
2329 if (found_neg)
c5aa993b 2330 return 2; /* A < B */
c906108c 2331 else
c5aa993b 2332 return 0; /* A == B */
c906108c
SS
2333 }
2334}
2335
7ba81444
MS
2336/* Rank a function by comparing its parameter types (PARMS, length
2337 NPARMS), to the types of an argument list (ARGS, length NARGS).
2338 Return a pointer to a badness vector. This has NARGS + 1
2339 entries. */
c906108c
SS
2340
2341struct badness_vector *
7ba81444 2342rank_function (struct type **parms, int nparms,
da096638 2343 struct value **args, int nargs)
c906108c
SS
2344{
2345 int i;
c5aa993b 2346 struct badness_vector *bv;
c906108c
SS
2347 int min_len = nparms < nargs ? nparms : nargs;
2348
2349 bv = xmalloc (sizeof (struct badness_vector));
0963b4bd 2350 bv->length = nargs + 1; /* add 1 for the length-match rank. */
c906108c
SS
2351 bv->rank = xmalloc ((nargs + 1) * sizeof (int));
2352
2353 /* First compare the lengths of the supplied lists.
7ba81444 2354 If there is a mismatch, set it to a high value. */
c5aa993b 2355
c906108c 2356 /* pai/1997-06-03 FIXME: when we have debug info about default
7ba81444
MS
2357 arguments and ellipsis parameter lists, we should consider those
2358 and rank the length-match more finely. */
c906108c 2359
6403aeea
SW
2360 LENGTH_MATCH (bv) = (nargs != nparms)
2361 ? LENGTH_MISMATCH_BADNESS
2362 : EXACT_MATCH_BADNESS;
c906108c 2363
0963b4bd 2364 /* Now rank all the parameters of the candidate function. */
74cc24b0 2365 for (i = 1; i <= min_len; i++)
da096638
KS
2366 bv->rank[i] = rank_one_type (parms[i - 1], value_type (args[i - 1]),
2367 args[i - 1]);
c906108c 2368
0963b4bd 2369 /* If more arguments than parameters, add dummy entries. */
c5aa993b 2370 for (i = min_len + 1; i <= nargs; i++)
c906108c
SS
2371 bv->rank[i] = TOO_FEW_PARAMS_BADNESS;
2372
2373 return bv;
2374}
2375
973ccf8b
DJ
2376/* Compare the names of two integer types, assuming that any sign
2377 qualifiers have been checked already. We do it this way because
2378 there may be an "int" in the name of one of the types. */
2379
2380static int
2381integer_types_same_name_p (const char *first, const char *second)
2382{
2383 int first_p, second_p;
2384
7ba81444
MS
2385 /* If both are shorts, return 1; if neither is a short, keep
2386 checking. */
973ccf8b
DJ
2387 first_p = (strstr (first, "short") != NULL);
2388 second_p = (strstr (second, "short") != NULL);
2389 if (first_p && second_p)
2390 return 1;
2391 if (first_p || second_p)
2392 return 0;
2393
2394 /* Likewise for long. */
2395 first_p = (strstr (first, "long") != NULL);
2396 second_p = (strstr (second, "long") != NULL);
2397 if (first_p && second_p)
2398 return 1;
2399 if (first_p || second_p)
2400 return 0;
2401
2402 /* Likewise for char. */
2403 first_p = (strstr (first, "char") != NULL);
2404 second_p = (strstr (second, "char") != NULL);
2405 if (first_p && second_p)
2406 return 1;
2407 if (first_p || second_p)
2408 return 0;
2409
2410 /* They must both be ints. */
2411 return 1;
2412}
2413
7062b0a0
SW
2414/* Compares type A to type B returns 1 if the represent the same type
2415 0 otherwise. */
2416
bd69fc68 2417int
7062b0a0
SW
2418types_equal (struct type *a, struct type *b)
2419{
2420 /* Identical type pointers. */
2421 /* However, this still doesn't catch all cases of same type for b
2422 and a. The reason is that builtin types are different from
2423 the same ones constructed from the object. */
2424 if (a == b)
2425 return 1;
2426
2427 /* Resolve typedefs */
2428 if (TYPE_CODE (a) == TYPE_CODE_TYPEDEF)
2429 a = check_typedef (a);
2430 if (TYPE_CODE (b) == TYPE_CODE_TYPEDEF)
2431 b = check_typedef (b);
2432
2433 /* If after resolving typedefs a and b are not of the same type
2434 code then they are not equal. */
2435 if (TYPE_CODE (a) != TYPE_CODE (b))
2436 return 0;
2437
2438 /* If a and b are both pointers types or both reference types then
2439 they are equal of the same type iff the objects they refer to are
2440 of the same type. */
2441 if (TYPE_CODE (a) == TYPE_CODE_PTR
2442 || TYPE_CODE (a) == TYPE_CODE_REF)
2443 return types_equal (TYPE_TARGET_TYPE (a),
2444 TYPE_TARGET_TYPE (b));
2445
0963b4bd 2446 /* Well, damnit, if the names are exactly the same, I'll say they
7062b0a0
SW
2447 are exactly the same. This happens when we generate method
2448 stubs. The types won't point to the same address, but they
0963b4bd 2449 really are the same. */
7062b0a0
SW
2450
2451 if (TYPE_NAME (a) && TYPE_NAME (b)
2452 && strcmp (TYPE_NAME (a), TYPE_NAME (b)) == 0)
2453 return 1;
2454
2455 /* Check if identical after resolving typedefs. */
2456 if (a == b)
2457 return 1;
2458
9ce98649
TT
2459 /* Two function types are equal if their argument and return types
2460 are equal. */
2461 if (TYPE_CODE (a) == TYPE_CODE_FUNC)
2462 {
2463 int i;
2464
2465 if (TYPE_NFIELDS (a) != TYPE_NFIELDS (b))
2466 return 0;
2467
2468 if (!types_equal (TYPE_TARGET_TYPE (a), TYPE_TARGET_TYPE (b)))
2469 return 0;
2470
2471 for (i = 0; i < TYPE_NFIELDS (a); ++i)
2472 if (!types_equal (TYPE_FIELD_TYPE (a, i), TYPE_FIELD_TYPE (b, i)))
2473 return 0;
2474
2475 return 1;
2476 }
2477
7062b0a0
SW
2478 return 0;
2479}
2480
c906108c
SS
2481/* Compare one type (PARM) for compatibility with another (ARG).
2482 * PARM is intended to be the parameter type of a function; and
2483 * ARG is the supplied argument's type. This function tests if
2484 * the latter can be converted to the former.
da096638 2485 * VALUE is the argument's value or NULL if none (or called recursively)
c906108c
SS
2486 *
2487 * Return 0 if they are identical types;
2488 * Otherwise, return an integer which corresponds to how compatible
7ba81444
MS
2489 * PARM is to ARG. The higher the return value, the worse the match.
2490 * Generally the "bad" conversions are all uniformly assigned a 100. */
c906108c 2491
6403aeea 2492struct rank
da096638 2493rank_one_type (struct type *parm, struct type *arg, struct value *value)
c906108c 2494{
a9d5ef47 2495 struct rank rank = {0,0};
7062b0a0
SW
2496
2497 if (types_equal (parm, arg))
6403aeea 2498 return EXACT_MATCH_BADNESS;
c906108c
SS
2499
2500 /* Resolve typedefs */
2501 if (TYPE_CODE (parm) == TYPE_CODE_TYPEDEF)
2502 parm = check_typedef (parm);
2503 if (TYPE_CODE (arg) == TYPE_CODE_TYPEDEF)
2504 arg = check_typedef (arg);
2505
db577aea 2506 /* See through references, since we can almost make non-references
7ba81444 2507 references. */
db577aea 2508 if (TYPE_CODE (arg) == TYPE_CODE_REF)
da096638 2509 return (sum_ranks (rank_one_type (parm, TYPE_TARGET_TYPE (arg), NULL),
6403aeea 2510 REFERENCE_CONVERSION_BADNESS));
db577aea 2511 if (TYPE_CODE (parm) == TYPE_CODE_REF)
da096638 2512 return (sum_ranks (rank_one_type (TYPE_TARGET_TYPE (parm), arg, NULL),
6403aeea 2513 REFERENCE_CONVERSION_BADNESS));
5d161b24 2514 if (overload_debug)
7ba81444
MS
2515 /* Debugging only. */
2516 fprintf_filtered (gdb_stderr,
2517 "------ Arg is %s [%d], parm is %s [%d]\n",
2518 TYPE_NAME (arg), TYPE_CODE (arg),
2519 TYPE_NAME (parm), TYPE_CODE (parm));
c906108c 2520
0963b4bd 2521 /* x -> y means arg of type x being supplied for parameter of type y. */
c906108c
SS
2522
2523 switch (TYPE_CODE (parm))
2524 {
c5aa993b
JM
2525 case TYPE_CODE_PTR:
2526 switch (TYPE_CODE (arg))
2527 {
2528 case TYPE_CODE_PTR:
7062b0a0
SW
2529
2530 /* Allowed pointer conversions are:
2531 (a) pointer to void-pointer conversion. */
2532 if (TYPE_CODE (TYPE_TARGET_TYPE (parm)) == TYPE_CODE_VOID)
c5aa993b 2533 return VOID_PTR_CONVERSION_BADNESS;
7062b0a0
SW
2534
2535 /* (b) pointer to ancestor-pointer conversion. */
a9d5ef47
SW
2536 rank.subrank = distance_to_ancestor (TYPE_TARGET_TYPE (parm),
2537 TYPE_TARGET_TYPE (arg),
2538 0);
2539 if (rank.subrank >= 0)
2540 return sum_ranks (BASE_PTR_CONVERSION_BADNESS, rank);
7062b0a0
SW
2541
2542 return INCOMPATIBLE_TYPE_BADNESS;
c5aa993b 2543 case TYPE_CODE_ARRAY:
7062b0a0
SW
2544 if (types_equal (TYPE_TARGET_TYPE (parm),
2545 TYPE_TARGET_TYPE (arg)))
6403aeea 2546 return EXACT_MATCH_BADNESS;
7062b0a0 2547 return INCOMPATIBLE_TYPE_BADNESS;
c5aa993b 2548 case TYPE_CODE_FUNC:
da096638 2549 return rank_one_type (TYPE_TARGET_TYPE (parm), arg, NULL);
c5aa993b 2550 case TYPE_CODE_INT:
a451cb65 2551 if (value != NULL && TYPE_CODE (value_type (value)) == TYPE_CODE_INT)
da096638 2552 {
a451cb65
KS
2553 if (value_as_long (value) == 0)
2554 {
2555 /* Null pointer conversion: allow it to be cast to a pointer.
2556 [4.10.1 of C++ standard draft n3290] */
2557 return NULL_POINTER_CONVERSION_BADNESS;
2558 }
2559 else
2560 {
2561 /* If type checking is disabled, allow the conversion. */
2562 if (!strict_type_checking)
2563 return NS_INTEGER_POINTER_CONVERSION_BADNESS;
2564 }
da096638
KS
2565 }
2566 /* fall through */
c5aa993b 2567 case TYPE_CODE_ENUM:
4f2aea11 2568 case TYPE_CODE_FLAGS:
c5aa993b
JM
2569 case TYPE_CODE_CHAR:
2570 case TYPE_CODE_RANGE:
2571 case TYPE_CODE_BOOL:
c5aa993b
JM
2572 default:
2573 return INCOMPATIBLE_TYPE_BADNESS;
2574 }
2575 case TYPE_CODE_ARRAY:
2576 switch (TYPE_CODE (arg))
2577 {
2578 case TYPE_CODE_PTR:
2579 case TYPE_CODE_ARRAY:
7ba81444 2580 return rank_one_type (TYPE_TARGET_TYPE (parm),
da096638 2581 TYPE_TARGET_TYPE (arg), NULL);
c5aa993b
JM
2582 default:
2583 return INCOMPATIBLE_TYPE_BADNESS;
2584 }
2585 case TYPE_CODE_FUNC:
2586 switch (TYPE_CODE (arg))
2587 {
2588 case TYPE_CODE_PTR: /* funcptr -> func */
da096638 2589 return rank_one_type (parm, TYPE_TARGET_TYPE (arg), NULL);
c5aa993b
JM
2590 default:
2591 return INCOMPATIBLE_TYPE_BADNESS;
2592 }
2593 case TYPE_CODE_INT:
2594 switch (TYPE_CODE (arg))
2595 {
2596 case TYPE_CODE_INT:
2597 if (TYPE_LENGTH (arg) == TYPE_LENGTH (parm))
2598 {
2599 /* Deal with signed, unsigned, and plain chars and
7ba81444 2600 signed and unsigned ints. */
c5aa993b
JM
2601 if (TYPE_NOSIGN (parm))
2602 {
0963b4bd 2603 /* This case only for character types. */
7ba81444 2604 if (TYPE_NOSIGN (arg))
6403aeea 2605 return EXACT_MATCH_BADNESS; /* plain char -> plain char */
7ba81444
MS
2606 else /* signed/unsigned char -> plain char */
2607 return INTEGER_CONVERSION_BADNESS;
c5aa993b
JM
2608 }
2609 else if (TYPE_UNSIGNED (parm))
2610 {
2611 if (TYPE_UNSIGNED (arg))
2612 {
7ba81444
MS
2613 /* unsigned int -> unsigned int, or
2614 unsigned long -> unsigned long */
2615 if (integer_types_same_name_p (TYPE_NAME (parm),
2616 TYPE_NAME (arg)))
6403aeea 2617 return EXACT_MATCH_BADNESS;
7ba81444
MS
2618 else if (integer_types_same_name_p (TYPE_NAME (arg),
2619 "int")
2620 && integer_types_same_name_p (TYPE_NAME (parm),
2621 "long"))
3e43a32a
MS
2622 /* unsigned int -> unsigned long */
2623 return INTEGER_PROMOTION_BADNESS;
c5aa993b 2624 else
3e43a32a
MS
2625 /* unsigned long -> unsigned int */
2626 return INTEGER_CONVERSION_BADNESS;
c5aa993b
JM
2627 }
2628 else
2629 {
7ba81444
MS
2630 if (integer_types_same_name_p (TYPE_NAME (arg),
2631 "long")
2632 && integer_types_same_name_p (TYPE_NAME (parm),
2633 "int"))
3e43a32a
MS
2634 /* signed long -> unsigned int */
2635 return INTEGER_CONVERSION_BADNESS;
c5aa993b 2636 else
3e43a32a
MS
2637 /* signed int/long -> unsigned int/long */
2638 return INTEGER_CONVERSION_BADNESS;
c5aa993b
JM
2639 }
2640 }
2641 else if (!TYPE_NOSIGN (arg) && !TYPE_UNSIGNED (arg))
2642 {
7ba81444
MS
2643 if (integer_types_same_name_p (TYPE_NAME (parm),
2644 TYPE_NAME (arg)))
6403aeea 2645 return EXACT_MATCH_BADNESS;
7ba81444
MS
2646 else if (integer_types_same_name_p (TYPE_NAME (arg),
2647 "int")
2648 && integer_types_same_name_p (TYPE_NAME (parm),
2649 "long"))
c5aa993b
JM
2650 return INTEGER_PROMOTION_BADNESS;
2651 else
1c5cb38e 2652 return INTEGER_CONVERSION_BADNESS;
c5aa993b
JM
2653 }
2654 else
1c5cb38e 2655 return INTEGER_CONVERSION_BADNESS;
c5aa993b
JM
2656 }
2657 else if (TYPE_LENGTH (arg) < TYPE_LENGTH (parm))
2658 return INTEGER_PROMOTION_BADNESS;
2659 else
1c5cb38e 2660 return INTEGER_CONVERSION_BADNESS;
c5aa993b 2661 case TYPE_CODE_ENUM:
4f2aea11 2662 case TYPE_CODE_FLAGS:
c5aa993b
JM
2663 case TYPE_CODE_CHAR:
2664 case TYPE_CODE_RANGE:
2665 case TYPE_CODE_BOOL:
2666 return INTEGER_PROMOTION_BADNESS;
2667 case TYPE_CODE_FLT:
2668 return INT_FLOAT_CONVERSION_BADNESS;
2669 case TYPE_CODE_PTR:
2670 return NS_POINTER_CONVERSION_BADNESS;
2671 default:
2672 return INCOMPATIBLE_TYPE_BADNESS;
2673 }
2674 break;
2675 case TYPE_CODE_ENUM:
2676 switch (TYPE_CODE (arg))
2677 {
2678 case TYPE_CODE_INT:
2679 case TYPE_CODE_CHAR:
2680 case TYPE_CODE_RANGE:
2681 case TYPE_CODE_BOOL:
2682 case TYPE_CODE_ENUM:
1c5cb38e 2683 return INTEGER_CONVERSION_BADNESS;
c5aa993b
JM
2684 case TYPE_CODE_FLT:
2685 return INT_FLOAT_CONVERSION_BADNESS;
2686 default:
2687 return INCOMPATIBLE_TYPE_BADNESS;
2688 }
2689 break;
2690 case TYPE_CODE_CHAR:
2691 switch (TYPE_CODE (arg))
2692 {
2693 case TYPE_CODE_RANGE:
2694 case TYPE_CODE_BOOL:
2695 case TYPE_CODE_ENUM:
1c5cb38e 2696 return INTEGER_CONVERSION_BADNESS;
c5aa993b
JM
2697 case TYPE_CODE_FLT:
2698 return INT_FLOAT_CONVERSION_BADNESS;
2699 case TYPE_CODE_INT:
2700 if (TYPE_LENGTH (arg) > TYPE_LENGTH (parm))
1c5cb38e 2701 return INTEGER_CONVERSION_BADNESS;
c5aa993b
JM
2702 else if (TYPE_LENGTH (arg) < TYPE_LENGTH (parm))
2703 return INTEGER_PROMOTION_BADNESS;
2704 /* >>> !! else fall through !! <<< */
2705 case TYPE_CODE_CHAR:
7ba81444
MS
2706 /* Deal with signed, unsigned, and plain chars for C++ and
2707 with int cases falling through from previous case. */
c5aa993b
JM
2708 if (TYPE_NOSIGN (parm))
2709 {
2710 if (TYPE_NOSIGN (arg))
6403aeea 2711 return EXACT_MATCH_BADNESS;
c5aa993b 2712 else
1c5cb38e 2713 return INTEGER_CONVERSION_BADNESS;
c5aa993b
JM
2714 }
2715 else if (TYPE_UNSIGNED (parm))
2716 {
2717 if (TYPE_UNSIGNED (arg))
6403aeea 2718 return EXACT_MATCH_BADNESS;
c5aa993b
JM
2719 else
2720 return INTEGER_PROMOTION_BADNESS;
2721 }
2722 else if (!TYPE_NOSIGN (arg) && !TYPE_UNSIGNED (arg))
6403aeea 2723 return EXACT_MATCH_BADNESS;
c5aa993b 2724 else
1c5cb38e 2725 return INTEGER_CONVERSION_BADNESS;
c5aa993b
JM
2726 default:
2727 return INCOMPATIBLE_TYPE_BADNESS;
2728 }
2729 break;
2730 case TYPE_CODE_RANGE:
2731 switch (TYPE_CODE (arg))
2732 {
2733 case TYPE_CODE_INT:
2734 case TYPE_CODE_CHAR:
2735 case TYPE_CODE_RANGE:
2736 case TYPE_CODE_BOOL:
2737 case TYPE_CODE_ENUM:
1c5cb38e 2738 return INTEGER_CONVERSION_BADNESS;
c5aa993b
JM
2739 case TYPE_CODE_FLT:
2740 return INT_FLOAT_CONVERSION_BADNESS;
2741 default:
2742 return INCOMPATIBLE_TYPE_BADNESS;
2743 }
2744 break;
2745 case TYPE_CODE_BOOL:
2746 switch (TYPE_CODE (arg))
2747 {
5b4f6e25
KS
2748 /* n3290 draft, section 4.12.1 (conv.bool):
2749
2750 "A prvalue of arithmetic, unscoped enumeration, pointer, or
2751 pointer to member type can be converted to a prvalue of type
2752 bool. A zero value, null pointer value, or null member pointer
2753 value is converted to false; any other value is converted to
2754 true. A prvalue of type std::nullptr_t can be converted to a
2755 prvalue of type bool; the resulting value is false." */
c5aa993b
JM
2756 case TYPE_CODE_INT:
2757 case TYPE_CODE_CHAR:
c5aa993b
JM
2758 case TYPE_CODE_ENUM:
2759 case TYPE_CODE_FLT:
5b4f6e25 2760 case TYPE_CODE_MEMBERPTR:
c5aa993b 2761 case TYPE_CODE_PTR:
5b4f6e25
KS
2762 return BOOL_CONVERSION_BADNESS;
2763 case TYPE_CODE_RANGE:
2764 return INCOMPATIBLE_TYPE_BADNESS;
c5aa993b 2765 case TYPE_CODE_BOOL:
6403aeea 2766 return EXACT_MATCH_BADNESS;
c5aa993b
JM
2767 default:
2768 return INCOMPATIBLE_TYPE_BADNESS;
2769 }
2770 break;
2771 case TYPE_CODE_FLT:
2772 switch (TYPE_CODE (arg))
2773 {
2774 case TYPE_CODE_FLT:
2775 if (TYPE_LENGTH (arg) < TYPE_LENGTH (parm))
2776 return FLOAT_PROMOTION_BADNESS;
2777 else if (TYPE_LENGTH (arg) == TYPE_LENGTH (parm))
6403aeea 2778 return EXACT_MATCH_BADNESS;
c5aa993b
JM
2779 else
2780 return FLOAT_CONVERSION_BADNESS;
2781 case TYPE_CODE_INT:
2782 case TYPE_CODE_BOOL:
2783 case TYPE_CODE_ENUM:
2784 case TYPE_CODE_RANGE:
2785 case TYPE_CODE_CHAR:
2786 return INT_FLOAT_CONVERSION_BADNESS;
2787 default:
2788 return INCOMPATIBLE_TYPE_BADNESS;
2789 }
2790 break;
2791 case TYPE_CODE_COMPLEX:
2792 switch (TYPE_CODE (arg))
7ba81444 2793 { /* Strictly not needed for C++, but... */
c5aa993b
JM
2794 case TYPE_CODE_FLT:
2795 return FLOAT_PROMOTION_BADNESS;
2796 case TYPE_CODE_COMPLEX:
6403aeea 2797 return EXACT_MATCH_BADNESS;
c5aa993b
JM
2798 default:
2799 return INCOMPATIBLE_TYPE_BADNESS;
2800 }
2801 break;
2802 case TYPE_CODE_STRUCT:
0963b4bd 2803 /* currently same as TYPE_CODE_CLASS. */
c5aa993b
JM
2804 switch (TYPE_CODE (arg))
2805 {
2806 case TYPE_CODE_STRUCT:
2807 /* Check for derivation */
a9d5ef47
SW
2808 rank.subrank = distance_to_ancestor (parm, arg, 0);
2809 if (rank.subrank >= 0)
2810 return sum_ranks (BASE_CONVERSION_BADNESS, rank);
c5aa993b
JM
2811 /* else fall through */
2812 default:
2813 return INCOMPATIBLE_TYPE_BADNESS;
2814 }
2815 break;
2816 case TYPE_CODE_UNION:
2817 switch (TYPE_CODE (arg))
2818 {
2819 case TYPE_CODE_UNION:
2820 default:
2821 return INCOMPATIBLE_TYPE_BADNESS;
2822 }
2823 break;
0d5de010 2824 case TYPE_CODE_MEMBERPTR:
c5aa993b
JM
2825 switch (TYPE_CODE (arg))
2826 {
2827 default:
2828 return INCOMPATIBLE_TYPE_BADNESS;
2829 }
2830 break;
2831 case TYPE_CODE_METHOD:
2832 switch (TYPE_CODE (arg))
2833 {
2834
2835 default:
2836 return INCOMPATIBLE_TYPE_BADNESS;
2837 }
2838 break;
2839 case TYPE_CODE_REF:
2840 switch (TYPE_CODE (arg))
2841 {
2842
2843 default:
2844 return INCOMPATIBLE_TYPE_BADNESS;
2845 }
2846
2847 break;
2848 case TYPE_CODE_SET:
2849 switch (TYPE_CODE (arg))
2850 {
2851 /* Not in C++ */
2852 case TYPE_CODE_SET:
7ba81444 2853 return rank_one_type (TYPE_FIELD_TYPE (parm, 0),
da096638 2854 TYPE_FIELD_TYPE (arg, 0), NULL);
c5aa993b
JM
2855 default:
2856 return INCOMPATIBLE_TYPE_BADNESS;
2857 }
2858 break;
2859 case TYPE_CODE_VOID:
2860 default:
2861 return INCOMPATIBLE_TYPE_BADNESS;
2862 } /* switch (TYPE_CODE (arg)) */
c906108c
SS
2863}
2864
0963b4bd 2865/* End of functions for overload resolution. */
5212577a
DE
2866\f
2867/* Routines to pretty-print types. */
c906108c 2868
c906108c 2869static void
fba45db2 2870print_bit_vector (B_TYPE *bits, int nbits)
c906108c
SS
2871{
2872 int bitno;
2873
2874 for (bitno = 0; bitno < nbits; bitno++)
2875 {
2876 if ((bitno % 8) == 0)
2877 {
2878 puts_filtered (" ");
2879 }
2880 if (B_TST (bits, bitno))
a3f17187 2881 printf_filtered (("1"));
c906108c 2882 else
a3f17187 2883 printf_filtered (("0"));
c906108c
SS
2884 }
2885}
2886
ad2f7632 2887/* Note the first arg should be the "this" pointer, we may not want to
7ba81444
MS
2888 include it since we may get into a infinitely recursive
2889 situation. */
c906108c
SS
2890
2891static void
ad2f7632 2892print_arg_types (struct field *args, int nargs, int spaces)
c906108c
SS
2893{
2894 if (args != NULL)
2895 {
ad2f7632
DJ
2896 int i;
2897
2898 for (i = 0; i < nargs; i++)
2899 recursive_dump_type (args[i].type, spaces + 2);
c906108c
SS
2900 }
2901}
2902
d6a843b5
JK
2903int
2904field_is_static (struct field *f)
2905{
2906 /* "static" fields are the fields whose location is not relative
2907 to the address of the enclosing struct. It would be nice to
2908 have a dedicated flag that would be set for static fields when
2909 the type is being created. But in practice, checking the field
254e6b9e 2910 loc_kind should give us an accurate answer. */
d6a843b5
JK
2911 return (FIELD_LOC_KIND (*f) == FIELD_LOC_KIND_PHYSNAME
2912 || FIELD_LOC_KIND (*f) == FIELD_LOC_KIND_PHYSADDR);
2913}
2914
c906108c 2915static void
fba45db2 2916dump_fn_fieldlists (struct type *type, int spaces)
c906108c
SS
2917{
2918 int method_idx;
2919 int overload_idx;
2920 struct fn_field *f;
2921
2922 printfi_filtered (spaces, "fn_fieldlists ");
d4f3574e 2923 gdb_print_host_address (TYPE_FN_FIELDLISTS (type), gdb_stdout);
c906108c
SS
2924 printf_filtered ("\n");
2925 for (method_idx = 0; method_idx < TYPE_NFN_FIELDS (type); method_idx++)
2926 {
2927 f = TYPE_FN_FIELDLIST1 (type, method_idx);
2928 printfi_filtered (spaces + 2, "[%d] name '%s' (",
2929 method_idx,
2930 TYPE_FN_FIELDLIST_NAME (type, method_idx));
d4f3574e
SS
2931 gdb_print_host_address (TYPE_FN_FIELDLIST_NAME (type, method_idx),
2932 gdb_stdout);
a3f17187 2933 printf_filtered (_(") length %d\n"),
c906108c
SS
2934 TYPE_FN_FIELDLIST_LENGTH (type, method_idx));
2935 for (overload_idx = 0;
2936 overload_idx < TYPE_FN_FIELDLIST_LENGTH (type, method_idx);
2937 overload_idx++)
2938 {
2939 printfi_filtered (spaces + 4, "[%d] physname '%s' (",
2940 overload_idx,
2941 TYPE_FN_FIELD_PHYSNAME (f, overload_idx));
d4f3574e
SS
2942 gdb_print_host_address (TYPE_FN_FIELD_PHYSNAME (f, overload_idx),
2943 gdb_stdout);
c906108c
SS
2944 printf_filtered (")\n");
2945 printfi_filtered (spaces + 8, "type ");
7ba81444
MS
2946 gdb_print_host_address (TYPE_FN_FIELD_TYPE (f, overload_idx),
2947 gdb_stdout);
c906108c
SS
2948 printf_filtered ("\n");
2949
2950 recursive_dump_type (TYPE_FN_FIELD_TYPE (f, overload_idx),
2951 spaces + 8 + 2);
2952
2953 printfi_filtered (spaces + 8, "args ");
7ba81444
MS
2954 gdb_print_host_address (TYPE_FN_FIELD_ARGS (f, overload_idx),
2955 gdb_stdout);
c906108c
SS
2956 printf_filtered ("\n");
2957
ad2f7632 2958 print_arg_types (TYPE_FN_FIELD_ARGS (f, overload_idx),
7ba81444
MS
2959 TYPE_NFIELDS (TYPE_FN_FIELD_TYPE (f,
2960 overload_idx)),
ad2f7632 2961 spaces);
c906108c 2962 printfi_filtered (spaces + 8, "fcontext ");
d4f3574e
SS
2963 gdb_print_host_address (TYPE_FN_FIELD_FCONTEXT (f, overload_idx),
2964 gdb_stdout);
c906108c
SS
2965 printf_filtered ("\n");
2966
2967 printfi_filtered (spaces + 8, "is_const %d\n",
2968 TYPE_FN_FIELD_CONST (f, overload_idx));
2969 printfi_filtered (spaces + 8, "is_volatile %d\n",
2970 TYPE_FN_FIELD_VOLATILE (f, overload_idx));
2971 printfi_filtered (spaces + 8, "is_private %d\n",
2972 TYPE_FN_FIELD_PRIVATE (f, overload_idx));
2973 printfi_filtered (spaces + 8, "is_protected %d\n",
2974 TYPE_FN_FIELD_PROTECTED (f, overload_idx));
2975 printfi_filtered (spaces + 8, "is_stub %d\n",
2976 TYPE_FN_FIELD_STUB (f, overload_idx));
2977 printfi_filtered (spaces + 8, "voffset %u\n",
2978 TYPE_FN_FIELD_VOFFSET (f, overload_idx));
2979 }
2980 }
2981}
2982
2983static void
fba45db2 2984print_cplus_stuff (struct type *type, int spaces)
c906108c
SS
2985{
2986 printfi_filtered (spaces, "n_baseclasses %d\n",
2987 TYPE_N_BASECLASSES (type));
2988 printfi_filtered (spaces, "nfn_fields %d\n",
2989 TYPE_NFN_FIELDS (type));
c906108c
SS
2990 if (TYPE_N_BASECLASSES (type) > 0)
2991 {
2992 printfi_filtered (spaces, "virtual_field_bits (%d bits at *",
2993 TYPE_N_BASECLASSES (type));
7ba81444
MS
2994 gdb_print_host_address (TYPE_FIELD_VIRTUAL_BITS (type),
2995 gdb_stdout);
c906108c
SS
2996 printf_filtered (")");
2997
2998 print_bit_vector (TYPE_FIELD_VIRTUAL_BITS (type),
2999 TYPE_N_BASECLASSES (type));
3000 puts_filtered ("\n");
3001 }
3002 if (TYPE_NFIELDS (type) > 0)
3003 {
3004 if (TYPE_FIELD_PRIVATE_BITS (type) != NULL)
3005 {
7ba81444
MS
3006 printfi_filtered (spaces,
3007 "private_field_bits (%d bits at *",
c906108c 3008 TYPE_NFIELDS (type));
7ba81444
MS
3009 gdb_print_host_address (TYPE_FIELD_PRIVATE_BITS (type),
3010 gdb_stdout);
c906108c
SS
3011 printf_filtered (")");
3012 print_bit_vector (TYPE_FIELD_PRIVATE_BITS (type),
3013 TYPE_NFIELDS (type));
3014 puts_filtered ("\n");
3015 }
3016 if (TYPE_FIELD_PROTECTED_BITS (type) != NULL)
3017 {
7ba81444
MS
3018 printfi_filtered (spaces,
3019 "protected_field_bits (%d bits at *",
c906108c 3020 TYPE_NFIELDS (type));
7ba81444
MS
3021 gdb_print_host_address (TYPE_FIELD_PROTECTED_BITS (type),
3022 gdb_stdout);
c906108c
SS
3023 printf_filtered (")");
3024 print_bit_vector (TYPE_FIELD_PROTECTED_BITS (type),
3025 TYPE_NFIELDS (type));
3026 puts_filtered ("\n");
3027 }
3028 }
3029 if (TYPE_NFN_FIELDS (type) > 0)
3030 {
3031 dump_fn_fieldlists (type, spaces);
3032 }
3033}
3034
b4ba55a1
JB
3035/* Print the contents of the TYPE's type_specific union, assuming that
3036 its type-specific kind is TYPE_SPECIFIC_GNAT_STUFF. */
3037
3038static void
3039print_gnat_stuff (struct type *type, int spaces)
3040{
3041 struct type *descriptive_type = TYPE_DESCRIPTIVE_TYPE (type);
3042
3043 recursive_dump_type (descriptive_type, spaces + 2);
3044}
3045
c906108c
SS
3046static struct obstack dont_print_type_obstack;
3047
3048void
fba45db2 3049recursive_dump_type (struct type *type, int spaces)
c906108c
SS
3050{
3051 int idx;
3052
3053 if (spaces == 0)
3054 obstack_begin (&dont_print_type_obstack, 0);
3055
3056 if (TYPE_NFIELDS (type) > 0
b4ba55a1 3057 || (HAVE_CPLUS_STRUCT (type) && TYPE_NFN_FIELDS (type) > 0))
c906108c
SS
3058 {
3059 struct type **first_dont_print
7ba81444 3060 = (struct type **) obstack_base (&dont_print_type_obstack);
c906108c 3061
7ba81444
MS
3062 int i = (struct type **)
3063 obstack_next_free (&dont_print_type_obstack) - first_dont_print;
c906108c
SS
3064
3065 while (--i >= 0)
3066 {
3067 if (type == first_dont_print[i])
3068 {
3069 printfi_filtered (spaces, "type node ");
d4f3574e 3070 gdb_print_host_address (type, gdb_stdout);
a3f17187 3071 printf_filtered (_(" <same as already seen type>\n"));
c906108c
SS
3072 return;
3073 }
3074 }
3075
3076 obstack_ptr_grow (&dont_print_type_obstack, type);
3077 }
3078
3079 printfi_filtered (spaces, "type node ");
d4f3574e 3080 gdb_print_host_address (type, gdb_stdout);
c906108c
SS
3081 printf_filtered ("\n");
3082 printfi_filtered (spaces, "name '%s' (",
3083 TYPE_NAME (type) ? TYPE_NAME (type) : "<NULL>");
d4f3574e 3084 gdb_print_host_address (TYPE_NAME (type), gdb_stdout);
c906108c 3085 printf_filtered (")\n");
e9e79dd9
FF
3086 printfi_filtered (spaces, "tagname '%s' (",
3087 TYPE_TAG_NAME (type) ? TYPE_TAG_NAME (type) : "<NULL>");
3088 gdb_print_host_address (TYPE_TAG_NAME (type), gdb_stdout);
3089 printf_filtered (")\n");
c906108c
SS
3090 printfi_filtered (spaces, "code 0x%x ", TYPE_CODE (type));
3091 switch (TYPE_CODE (type))
3092 {
c5aa993b
JM
3093 case TYPE_CODE_UNDEF:
3094 printf_filtered ("(TYPE_CODE_UNDEF)");
3095 break;
3096 case TYPE_CODE_PTR:
3097 printf_filtered ("(TYPE_CODE_PTR)");
3098 break;
3099 case TYPE_CODE_ARRAY:
3100 printf_filtered ("(TYPE_CODE_ARRAY)");
3101 break;
3102 case TYPE_CODE_STRUCT:
3103 printf_filtered ("(TYPE_CODE_STRUCT)");
3104 break;
3105 case TYPE_CODE_UNION:
3106 printf_filtered ("(TYPE_CODE_UNION)");
3107 break;
3108 case TYPE_CODE_ENUM:
3109 printf_filtered ("(TYPE_CODE_ENUM)");
3110 break;
4f2aea11
MK
3111 case TYPE_CODE_FLAGS:
3112 printf_filtered ("(TYPE_CODE_FLAGS)");
3113 break;
c5aa993b
JM
3114 case TYPE_CODE_FUNC:
3115 printf_filtered ("(TYPE_CODE_FUNC)");
3116 break;
3117 case TYPE_CODE_INT:
3118 printf_filtered ("(TYPE_CODE_INT)");
3119 break;
3120 case TYPE_CODE_FLT:
3121 printf_filtered ("(TYPE_CODE_FLT)");
3122 break;
3123 case TYPE_CODE_VOID:
3124 printf_filtered ("(TYPE_CODE_VOID)");
3125 break;
3126 case TYPE_CODE_SET:
3127 printf_filtered ("(TYPE_CODE_SET)");
3128 break;
3129 case TYPE_CODE_RANGE:
3130 printf_filtered ("(TYPE_CODE_RANGE)");
3131 break;
3132 case TYPE_CODE_STRING:
3133 printf_filtered ("(TYPE_CODE_STRING)");
3134 break;
3135 case TYPE_CODE_ERROR:
3136 printf_filtered ("(TYPE_CODE_ERROR)");
3137 break;
0d5de010
DJ
3138 case TYPE_CODE_MEMBERPTR:
3139 printf_filtered ("(TYPE_CODE_MEMBERPTR)");
3140 break;
3141 case TYPE_CODE_METHODPTR:
3142 printf_filtered ("(TYPE_CODE_METHODPTR)");
c5aa993b
JM
3143 break;
3144 case TYPE_CODE_METHOD:
3145 printf_filtered ("(TYPE_CODE_METHOD)");
3146 break;
3147 case TYPE_CODE_REF:
3148 printf_filtered ("(TYPE_CODE_REF)");
3149 break;
3150 case TYPE_CODE_CHAR:
3151 printf_filtered ("(TYPE_CODE_CHAR)");
3152 break;
3153 case TYPE_CODE_BOOL:
3154 printf_filtered ("(TYPE_CODE_BOOL)");
3155 break;
e9e79dd9
FF
3156 case TYPE_CODE_COMPLEX:
3157 printf_filtered ("(TYPE_CODE_COMPLEX)");
3158 break;
c5aa993b
JM
3159 case TYPE_CODE_TYPEDEF:
3160 printf_filtered ("(TYPE_CODE_TYPEDEF)");
3161 break;
5c4e30ca
DC
3162 case TYPE_CODE_NAMESPACE:
3163 printf_filtered ("(TYPE_CODE_NAMESPACE)");
3164 break;
c5aa993b
JM
3165 default:
3166 printf_filtered ("(UNKNOWN TYPE CODE)");
3167 break;
c906108c
SS
3168 }
3169 puts_filtered ("\n");
3170 printfi_filtered (spaces, "length %d\n", TYPE_LENGTH (type));
e9bb382b
UW
3171 if (TYPE_OBJFILE_OWNED (type))
3172 {
3173 printfi_filtered (spaces, "objfile ");
3174 gdb_print_host_address (TYPE_OWNER (type).objfile, gdb_stdout);
3175 }
3176 else
3177 {
3178 printfi_filtered (spaces, "gdbarch ");
3179 gdb_print_host_address (TYPE_OWNER (type).gdbarch, gdb_stdout);
3180 }
c906108c
SS
3181 printf_filtered ("\n");
3182 printfi_filtered (spaces, "target_type ");
d4f3574e 3183 gdb_print_host_address (TYPE_TARGET_TYPE (type), gdb_stdout);
c906108c
SS
3184 printf_filtered ("\n");
3185 if (TYPE_TARGET_TYPE (type) != NULL)
3186 {
3187 recursive_dump_type (TYPE_TARGET_TYPE (type), spaces + 2);
3188 }
3189 printfi_filtered (spaces, "pointer_type ");
d4f3574e 3190 gdb_print_host_address (TYPE_POINTER_TYPE (type), gdb_stdout);
c906108c
SS
3191 printf_filtered ("\n");
3192 printfi_filtered (spaces, "reference_type ");
d4f3574e 3193 gdb_print_host_address (TYPE_REFERENCE_TYPE (type), gdb_stdout);
c906108c 3194 printf_filtered ("\n");
2fdde8f8
DJ
3195 printfi_filtered (spaces, "type_chain ");
3196 gdb_print_host_address (TYPE_CHAIN (type), gdb_stdout);
e9e79dd9 3197 printf_filtered ("\n");
7ba81444
MS
3198 printfi_filtered (spaces, "instance_flags 0x%x",
3199 TYPE_INSTANCE_FLAGS (type));
2fdde8f8
DJ
3200 if (TYPE_CONST (type))
3201 {
3202 puts_filtered (" TYPE_FLAG_CONST");
3203 }
3204 if (TYPE_VOLATILE (type))
3205 {
3206 puts_filtered (" TYPE_FLAG_VOLATILE");
3207 }
3208 if (TYPE_CODE_SPACE (type))
3209 {
3210 puts_filtered (" TYPE_FLAG_CODE_SPACE");
3211 }
3212 if (TYPE_DATA_SPACE (type))
3213 {
3214 puts_filtered (" TYPE_FLAG_DATA_SPACE");
3215 }
8b2dbe47
KB
3216 if (TYPE_ADDRESS_CLASS_1 (type))
3217 {
3218 puts_filtered (" TYPE_FLAG_ADDRESS_CLASS_1");
3219 }
3220 if (TYPE_ADDRESS_CLASS_2 (type))
3221 {
3222 puts_filtered (" TYPE_FLAG_ADDRESS_CLASS_2");
3223 }
06d66ee9
TT
3224 if (TYPE_RESTRICT (type))
3225 {
3226 puts_filtered (" TYPE_FLAG_RESTRICT");
3227 }
2fdde8f8 3228 puts_filtered ("\n");
876cecd0
TT
3229
3230 printfi_filtered (spaces, "flags");
762a036f 3231 if (TYPE_UNSIGNED (type))
c906108c
SS
3232 {
3233 puts_filtered (" TYPE_FLAG_UNSIGNED");
3234 }
762a036f
FF
3235 if (TYPE_NOSIGN (type))
3236 {
3237 puts_filtered (" TYPE_FLAG_NOSIGN");
3238 }
3239 if (TYPE_STUB (type))
c906108c
SS
3240 {
3241 puts_filtered (" TYPE_FLAG_STUB");
3242 }
762a036f
FF
3243 if (TYPE_TARGET_STUB (type))
3244 {
3245 puts_filtered (" TYPE_FLAG_TARGET_STUB");
3246 }
3247 if (TYPE_STATIC (type))
3248 {
3249 puts_filtered (" TYPE_FLAG_STATIC");
3250 }
762a036f
FF
3251 if (TYPE_PROTOTYPED (type))
3252 {
3253 puts_filtered (" TYPE_FLAG_PROTOTYPED");
3254 }
3255 if (TYPE_INCOMPLETE (type))
3256 {
3257 puts_filtered (" TYPE_FLAG_INCOMPLETE");
3258 }
762a036f
FF
3259 if (TYPE_VARARGS (type))
3260 {
3261 puts_filtered (" TYPE_FLAG_VARARGS");
3262 }
f5f8a009
EZ
3263 /* This is used for things like AltiVec registers on ppc. Gcc emits
3264 an attribute for the array type, which tells whether or not we
3265 have a vector, instead of a regular array. */
3266 if (TYPE_VECTOR (type))
3267 {
3268 puts_filtered (" TYPE_FLAG_VECTOR");
3269 }
876cecd0
TT
3270 if (TYPE_FIXED_INSTANCE (type))
3271 {
3272 puts_filtered (" TYPE_FIXED_INSTANCE");
3273 }
3274 if (TYPE_STUB_SUPPORTED (type))
3275 {
3276 puts_filtered (" TYPE_STUB_SUPPORTED");
3277 }
3278 if (TYPE_NOTTEXT (type))
3279 {
3280 puts_filtered (" TYPE_NOTTEXT");
3281 }
c906108c
SS
3282 puts_filtered ("\n");
3283 printfi_filtered (spaces, "nfields %d ", TYPE_NFIELDS (type));
d4f3574e 3284 gdb_print_host_address (TYPE_FIELDS (type), gdb_stdout);
c906108c
SS
3285 puts_filtered ("\n");
3286 for (idx = 0; idx < TYPE_NFIELDS (type); idx++)
3287 {
14e75d8e
JK
3288 if (TYPE_CODE (type) == TYPE_CODE_ENUM)
3289 printfi_filtered (spaces + 2,
3290 "[%d] enumval %s type ",
3291 idx, plongest (TYPE_FIELD_ENUMVAL (type, idx)));
3292 else
3293 printfi_filtered (spaces + 2,
3294 "[%d] bitpos %d bitsize %d type ",
3295 idx, TYPE_FIELD_BITPOS (type, idx),
3296 TYPE_FIELD_BITSIZE (type, idx));
d4f3574e 3297 gdb_print_host_address (TYPE_FIELD_TYPE (type, idx), gdb_stdout);
c906108c
SS
3298 printf_filtered (" name '%s' (",
3299 TYPE_FIELD_NAME (type, idx) != NULL
3300 ? TYPE_FIELD_NAME (type, idx)
3301 : "<NULL>");
d4f3574e 3302 gdb_print_host_address (TYPE_FIELD_NAME (type, idx), gdb_stdout);
c906108c
SS
3303 printf_filtered (")\n");
3304 if (TYPE_FIELD_TYPE (type, idx) != NULL)
3305 {
3306 recursive_dump_type (TYPE_FIELD_TYPE (type, idx), spaces + 4);
3307 }
3308 }
43bbcdc2
PH
3309 if (TYPE_CODE (type) == TYPE_CODE_RANGE)
3310 {
3311 printfi_filtered (spaces, "low %s%s high %s%s\n",
3312 plongest (TYPE_LOW_BOUND (type)),
3313 TYPE_LOW_BOUND_UNDEFINED (type) ? " (undefined)" : "",
3314 plongest (TYPE_HIGH_BOUND (type)),
3e43a32a
MS
3315 TYPE_HIGH_BOUND_UNDEFINED (type)
3316 ? " (undefined)" : "");
43bbcdc2 3317 }
c906108c 3318 printfi_filtered (spaces, "vptr_basetype ");
d4f3574e 3319 gdb_print_host_address (TYPE_VPTR_BASETYPE (type), gdb_stdout);
c906108c
SS
3320 puts_filtered ("\n");
3321 if (TYPE_VPTR_BASETYPE (type) != NULL)
3322 {
3323 recursive_dump_type (TYPE_VPTR_BASETYPE (type), spaces + 2);
3324 }
7ba81444
MS
3325 printfi_filtered (spaces, "vptr_fieldno %d\n",
3326 TYPE_VPTR_FIELDNO (type));
c906108c 3327
b4ba55a1
JB
3328 switch (TYPE_SPECIFIC_FIELD (type))
3329 {
3330 case TYPE_SPECIFIC_CPLUS_STUFF:
3331 printfi_filtered (spaces, "cplus_stuff ");
3332 gdb_print_host_address (TYPE_CPLUS_SPECIFIC (type),
3333 gdb_stdout);
3334 puts_filtered ("\n");
3335 print_cplus_stuff (type, spaces);
3336 break;
8da61cc4 3337
b4ba55a1
JB
3338 case TYPE_SPECIFIC_GNAT_STUFF:
3339 printfi_filtered (spaces, "gnat_stuff ");
3340 gdb_print_host_address (TYPE_GNAT_SPECIFIC (type), gdb_stdout);
3341 puts_filtered ("\n");
3342 print_gnat_stuff (type, spaces);
3343 break;
701c159d 3344
b4ba55a1
JB
3345 case TYPE_SPECIFIC_FLOATFORMAT:
3346 printfi_filtered (spaces, "floatformat ");
3347 if (TYPE_FLOATFORMAT (type) == NULL)
3348 puts_filtered ("(null)");
3349 else
3350 {
3351 puts_filtered ("{ ");
3352 if (TYPE_FLOATFORMAT (type)[0] == NULL
3353 || TYPE_FLOATFORMAT (type)[0]->name == NULL)
3354 puts_filtered ("(null)");
3355 else
3356 puts_filtered (TYPE_FLOATFORMAT (type)[0]->name);
3357
3358 puts_filtered (", ");
3359 if (TYPE_FLOATFORMAT (type)[1] == NULL
3360 || TYPE_FLOATFORMAT (type)[1]->name == NULL)
3361 puts_filtered ("(null)");
3362 else
3363 puts_filtered (TYPE_FLOATFORMAT (type)[1]->name);
3364
3365 puts_filtered (" }");
3366 }
3367 puts_filtered ("\n");
3368 break;
c906108c 3369
b6cdc2c1 3370 case TYPE_SPECIFIC_FUNC:
b4ba55a1
JB
3371 printfi_filtered (spaces, "calling_convention %d\n",
3372 TYPE_CALLING_CONVENTION (type));
b6cdc2c1 3373 /* tail_call_list is not printed. */
b4ba55a1 3374 break;
c906108c 3375 }
b4ba55a1 3376
c906108c
SS
3377 if (spaces == 0)
3378 obstack_free (&dont_print_type_obstack, NULL);
3379}
5212577a 3380\f
ae5a43e0
DJ
3381/* Trivial helpers for the libiberty hash table, for mapping one
3382 type to another. */
3383
3384struct type_pair
3385{
3386 struct type *old, *new;
3387};
3388
3389static hashval_t
3390type_pair_hash (const void *item)
3391{
3392 const struct type_pair *pair = item;
d8734c88 3393
ae5a43e0
DJ
3394 return htab_hash_pointer (pair->old);
3395}
3396
3397static int
3398type_pair_eq (const void *item_lhs, const void *item_rhs)
3399{
3400 const struct type_pair *lhs = item_lhs, *rhs = item_rhs;
d8734c88 3401
ae5a43e0
DJ
3402 return lhs->old == rhs->old;
3403}
3404
3405/* Allocate the hash table used by copy_type_recursive to walk
3406 types without duplicates. We use OBJFILE's obstack, because
3407 OBJFILE is about to be deleted. */
3408
3409htab_t
3410create_copied_types_hash (struct objfile *objfile)
3411{
3412 return htab_create_alloc_ex (1, type_pair_hash, type_pair_eq,
3413 NULL, &objfile->objfile_obstack,
3414 hashtab_obstack_allocate,
3415 dummy_obstack_deallocate);
3416}
3417
7ba81444
MS
3418/* Recursively copy (deep copy) TYPE, if it is associated with
3419 OBJFILE. Return a new type allocated using malloc, a saved type if
3420 we have already visited TYPE (using COPIED_TYPES), or TYPE if it is
3421 not associated with OBJFILE. */
ae5a43e0
DJ
3422
3423struct type *
7ba81444
MS
3424copy_type_recursive (struct objfile *objfile,
3425 struct type *type,
ae5a43e0
DJ
3426 htab_t copied_types)
3427{
3428 struct type_pair *stored, pair;
3429 void **slot;
3430 struct type *new_type;
3431
e9bb382b 3432 if (! TYPE_OBJFILE_OWNED (type))
ae5a43e0
DJ
3433 return type;
3434
7ba81444
MS
3435 /* This type shouldn't be pointing to any types in other objfiles;
3436 if it did, the type might disappear unexpectedly. */
ae5a43e0
DJ
3437 gdb_assert (TYPE_OBJFILE (type) == objfile);
3438
3439 pair.old = type;
3440 slot = htab_find_slot (copied_types, &pair, INSERT);
3441 if (*slot != NULL)
3442 return ((struct type_pair *) *slot)->new;
3443
e9bb382b 3444 new_type = alloc_type_arch (get_type_arch (type));
ae5a43e0
DJ
3445
3446 /* We must add the new type to the hash table immediately, in case
3447 we encounter this type again during a recursive call below. */
3e43a32a
MS
3448 stored
3449 = obstack_alloc (&objfile->objfile_obstack, sizeof (struct type_pair));
ae5a43e0
DJ
3450 stored->old = type;
3451 stored->new = new_type;
3452 *slot = stored;
3453
876cecd0
TT
3454 /* Copy the common fields of types. For the main type, we simply
3455 copy the entire thing and then update specific fields as needed. */
3456 *TYPE_MAIN_TYPE (new_type) = *TYPE_MAIN_TYPE (type);
e9bb382b
UW
3457 TYPE_OBJFILE_OWNED (new_type) = 0;
3458 TYPE_OWNER (new_type).gdbarch = get_type_arch (type);
876cecd0 3459
ae5a43e0
DJ
3460 if (TYPE_NAME (type))
3461 TYPE_NAME (new_type) = xstrdup (TYPE_NAME (type));
3462 if (TYPE_TAG_NAME (type))
3463 TYPE_TAG_NAME (new_type) = xstrdup (TYPE_TAG_NAME (type));
ae5a43e0
DJ
3464
3465 TYPE_INSTANCE_FLAGS (new_type) = TYPE_INSTANCE_FLAGS (type);
3466 TYPE_LENGTH (new_type) = TYPE_LENGTH (type);
3467
3468 /* Copy the fields. */
ae5a43e0
DJ
3469 if (TYPE_NFIELDS (type))
3470 {
3471 int i, nfields;
3472
3473 nfields = TYPE_NFIELDS (type);
1deafd4e 3474 TYPE_FIELDS (new_type) = XCALLOC (nfields, struct field);
ae5a43e0
DJ
3475 for (i = 0; i < nfields; i++)
3476 {
7ba81444
MS
3477 TYPE_FIELD_ARTIFICIAL (new_type, i) =
3478 TYPE_FIELD_ARTIFICIAL (type, i);
ae5a43e0
DJ
3479 TYPE_FIELD_BITSIZE (new_type, i) = TYPE_FIELD_BITSIZE (type, i);
3480 if (TYPE_FIELD_TYPE (type, i))
3481 TYPE_FIELD_TYPE (new_type, i)
3482 = copy_type_recursive (objfile, TYPE_FIELD_TYPE (type, i),
3483 copied_types);
3484 if (TYPE_FIELD_NAME (type, i))
7ba81444
MS
3485 TYPE_FIELD_NAME (new_type, i) =
3486 xstrdup (TYPE_FIELD_NAME (type, i));
d6a843b5 3487 switch (TYPE_FIELD_LOC_KIND (type, i))
ae5a43e0 3488 {
d6a843b5
JK
3489 case FIELD_LOC_KIND_BITPOS:
3490 SET_FIELD_BITPOS (TYPE_FIELD (new_type, i),
3491 TYPE_FIELD_BITPOS (type, i));
3492 break;
14e75d8e
JK
3493 case FIELD_LOC_KIND_ENUMVAL:
3494 SET_FIELD_ENUMVAL (TYPE_FIELD (new_type, i),
3495 TYPE_FIELD_ENUMVAL (type, i));
3496 break;
d6a843b5
JK
3497 case FIELD_LOC_KIND_PHYSADDR:
3498 SET_FIELD_PHYSADDR (TYPE_FIELD (new_type, i),
3499 TYPE_FIELD_STATIC_PHYSADDR (type, i));
3500 break;
3501 case FIELD_LOC_KIND_PHYSNAME:
3502 SET_FIELD_PHYSNAME (TYPE_FIELD (new_type, i),
3503 xstrdup (TYPE_FIELD_STATIC_PHYSNAME (type,
3504 i)));
3505 break;
3506 default:
3507 internal_error (__FILE__, __LINE__,
3508 _("Unexpected type field location kind: %d"),
3509 TYPE_FIELD_LOC_KIND (type, i));
ae5a43e0
DJ
3510 }
3511 }
3512 }
3513
0963b4bd 3514 /* For range types, copy the bounds information. */
43bbcdc2
PH
3515 if (TYPE_CODE (type) == TYPE_CODE_RANGE)
3516 {
3517 TYPE_RANGE_DATA (new_type) = xmalloc (sizeof (struct range_bounds));
3518 *TYPE_RANGE_DATA (new_type) = *TYPE_RANGE_DATA (type);
3519 }
3520
ae5a43e0
DJ
3521 /* Copy pointers to other types. */
3522 if (TYPE_TARGET_TYPE (type))
7ba81444
MS
3523 TYPE_TARGET_TYPE (new_type) =
3524 copy_type_recursive (objfile,
3525 TYPE_TARGET_TYPE (type),
3526 copied_types);
ae5a43e0 3527 if (TYPE_VPTR_BASETYPE (type))
7ba81444
MS
3528 TYPE_VPTR_BASETYPE (new_type) =
3529 copy_type_recursive (objfile,
3530 TYPE_VPTR_BASETYPE (type),
3531 copied_types);
ae5a43e0
DJ
3532 /* Maybe copy the type_specific bits.
3533
3534 NOTE drow/2005-12-09: We do not copy the C++-specific bits like
3535 base classes and methods. There's no fundamental reason why we
3536 can't, but at the moment it is not needed. */
3537
3538 if (TYPE_CODE (type) == TYPE_CODE_FLT)
d5d6fca5 3539 TYPE_FLOATFORMAT (new_type) = TYPE_FLOATFORMAT (type);
ae5a43e0
DJ
3540 else if (TYPE_CODE (type) == TYPE_CODE_STRUCT
3541 || TYPE_CODE (type) == TYPE_CODE_UNION
ae5a43e0
DJ
3542 || TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
3543 INIT_CPLUS_SPECIFIC (new_type);
3544
3545 return new_type;
3546}
3547
4af88198
JB
3548/* Make a copy of the given TYPE, except that the pointer & reference
3549 types are not preserved.
3550
3551 This function assumes that the given type has an associated objfile.
3552 This objfile is used to allocate the new type. */
3553
3554struct type *
3555copy_type (const struct type *type)
3556{
3557 struct type *new_type;
3558
e9bb382b 3559 gdb_assert (TYPE_OBJFILE_OWNED (type));
4af88198 3560
e9bb382b 3561 new_type = alloc_type_copy (type);
4af88198
JB
3562 TYPE_INSTANCE_FLAGS (new_type) = TYPE_INSTANCE_FLAGS (type);
3563 TYPE_LENGTH (new_type) = TYPE_LENGTH (type);
3564 memcpy (TYPE_MAIN_TYPE (new_type), TYPE_MAIN_TYPE (type),
3565 sizeof (struct main_type));
3566
3567 return new_type;
3568}
5212577a 3569\f
e9bb382b
UW
3570/* Helper functions to initialize architecture-specific types. */
3571
3572/* Allocate a type structure associated with GDBARCH and set its
3573 CODE, LENGTH, and NAME fields. */
5212577a 3574
e9bb382b
UW
3575struct type *
3576arch_type (struct gdbarch *gdbarch,
3577 enum type_code code, int length, char *name)
3578{
3579 struct type *type;
3580
3581 type = alloc_type_arch (gdbarch);
3582 TYPE_CODE (type) = code;
3583 TYPE_LENGTH (type) = length;
3584
3585 if (name)
3586 TYPE_NAME (type) = xstrdup (name);
3587
3588 return type;
3589}
3590
3591/* Allocate a TYPE_CODE_INT type structure associated with GDBARCH.
3592 BIT is the type size in bits. If UNSIGNED_P is non-zero, set
3593 the type's TYPE_UNSIGNED flag. NAME is the type name. */
5212577a 3594
e9bb382b
UW
3595struct type *
3596arch_integer_type (struct gdbarch *gdbarch,
3597 int bit, int unsigned_p, char *name)
3598{
3599 struct type *t;
3600
3601 t = arch_type (gdbarch, TYPE_CODE_INT, bit / TARGET_CHAR_BIT, name);
3602 if (unsigned_p)
3603 TYPE_UNSIGNED (t) = 1;
3604 if (name && strcmp (name, "char") == 0)
3605 TYPE_NOSIGN (t) = 1;
3606
3607 return t;
3608}
3609
3610/* Allocate a TYPE_CODE_CHAR type structure associated with GDBARCH.
3611 BIT is the type size in bits. If UNSIGNED_P is non-zero, set
3612 the type's TYPE_UNSIGNED flag. NAME is the type name. */
5212577a 3613
e9bb382b
UW
3614struct type *
3615arch_character_type (struct gdbarch *gdbarch,
3616 int bit, int unsigned_p, char *name)
3617{
3618 struct type *t;
3619
3620 t = arch_type (gdbarch, TYPE_CODE_CHAR, bit / TARGET_CHAR_BIT, name);
3621 if (unsigned_p)
3622 TYPE_UNSIGNED (t) = 1;
3623
3624 return t;
3625}
3626
3627/* Allocate a TYPE_CODE_BOOL type structure associated with GDBARCH.
3628 BIT is the type size in bits. If UNSIGNED_P is non-zero, set
3629 the type's TYPE_UNSIGNED flag. NAME is the type name. */
5212577a 3630
e9bb382b
UW
3631struct type *
3632arch_boolean_type (struct gdbarch *gdbarch,
3633 int bit, int unsigned_p, char *name)
3634{
3635 struct type *t;
3636
3637 t = arch_type (gdbarch, TYPE_CODE_BOOL, bit / TARGET_CHAR_BIT, name);
3638 if (unsigned_p)
3639 TYPE_UNSIGNED (t) = 1;
3640
3641 return t;
3642}
3643
3644/* Allocate a TYPE_CODE_FLT type structure associated with GDBARCH.
3645 BIT is the type size in bits; if BIT equals -1, the size is
3646 determined by the floatformat. NAME is the type name. Set the
3647 TYPE_FLOATFORMAT from FLOATFORMATS. */
5212577a 3648
27067745 3649struct type *
e9bb382b
UW
3650arch_float_type (struct gdbarch *gdbarch,
3651 int bit, char *name, const struct floatformat **floatformats)
8da61cc4
DJ
3652{
3653 struct type *t;
3654
3655 if (bit == -1)
3656 {
3657 gdb_assert (floatformats != NULL);
3658 gdb_assert (floatformats[0] != NULL && floatformats[1] != NULL);
3659 bit = floatformats[0]->totalsize;
3660 }
3661 gdb_assert (bit >= 0);
3662
e9bb382b 3663 t = arch_type (gdbarch, TYPE_CODE_FLT, bit / TARGET_CHAR_BIT, name);
8da61cc4
DJ
3664 TYPE_FLOATFORMAT (t) = floatformats;
3665 return t;
3666}
3667
e9bb382b
UW
3668/* Allocate a TYPE_CODE_COMPLEX type structure associated with GDBARCH.
3669 NAME is the type name. TARGET_TYPE is the component float type. */
5212577a 3670
27067745 3671struct type *
e9bb382b
UW
3672arch_complex_type (struct gdbarch *gdbarch,
3673 char *name, struct type *target_type)
27067745
UW
3674{
3675 struct type *t;
d8734c88 3676
e9bb382b
UW
3677 t = arch_type (gdbarch, TYPE_CODE_COMPLEX,
3678 2 * TYPE_LENGTH (target_type), name);
27067745
UW
3679 TYPE_TARGET_TYPE (t) = target_type;
3680 return t;
3681}
3682
e9bb382b 3683/* Allocate a TYPE_CODE_FLAGS type structure associated with GDBARCH.
eb90ce83 3684 NAME is the type name. LENGTH is the size of the flag word in bytes. */
5212577a 3685
e9bb382b
UW
3686struct type *
3687arch_flags_type (struct gdbarch *gdbarch, char *name, int length)
3688{
3689 int nfields = length * TARGET_CHAR_BIT;
3690 struct type *type;
3691
3692 type = arch_type (gdbarch, TYPE_CODE_FLAGS, length, name);
3693 TYPE_UNSIGNED (type) = 1;
3694 TYPE_NFIELDS (type) = nfields;
3695 TYPE_FIELDS (type) = TYPE_ZALLOC (type, nfields * sizeof (struct field));
3696
3697 return type;
3698}
3699
3700/* Add field to TYPE_CODE_FLAGS type TYPE to indicate the bit at
3701 position BITPOS is called NAME. */
5212577a 3702
e9bb382b
UW
3703void
3704append_flags_type_flag (struct type *type, int bitpos, char *name)
3705{
3706 gdb_assert (TYPE_CODE (type) == TYPE_CODE_FLAGS);
3707 gdb_assert (bitpos < TYPE_NFIELDS (type));
3708 gdb_assert (bitpos >= 0);
3709
3710 if (name)
3711 {
3712 TYPE_FIELD_NAME (type, bitpos) = xstrdup (name);
945b3a32 3713 SET_FIELD_BITPOS (TYPE_FIELD (type, bitpos), bitpos);
e9bb382b
UW
3714 }
3715 else
3716 {
3717 /* Don't show this field to the user. */
945b3a32 3718 SET_FIELD_BITPOS (TYPE_FIELD (type, bitpos), -1);
e9bb382b
UW
3719 }
3720}
3721
3722/* Allocate a TYPE_CODE_STRUCT or TYPE_CODE_UNION type structure (as
3723 specified by CODE) associated with GDBARCH. NAME is the type name. */
5212577a 3724
e9bb382b
UW
3725struct type *
3726arch_composite_type (struct gdbarch *gdbarch, char *name, enum type_code code)
3727{
3728 struct type *t;
d8734c88 3729
e9bb382b
UW
3730 gdb_assert (code == TYPE_CODE_STRUCT || code == TYPE_CODE_UNION);
3731 t = arch_type (gdbarch, code, 0, NULL);
3732 TYPE_TAG_NAME (t) = name;
3733 INIT_CPLUS_SPECIFIC (t);
3734 return t;
3735}
3736
3737/* Add new field with name NAME and type FIELD to composite type T.
f5dff777
DJ
3738 Do not set the field's position or adjust the type's length;
3739 the caller should do so. Return the new field. */
5212577a 3740
f5dff777
DJ
3741struct field *
3742append_composite_type_field_raw (struct type *t, char *name,
3743 struct type *field)
e9bb382b
UW
3744{
3745 struct field *f;
d8734c88 3746
e9bb382b
UW
3747 TYPE_NFIELDS (t) = TYPE_NFIELDS (t) + 1;
3748 TYPE_FIELDS (t) = xrealloc (TYPE_FIELDS (t),
3749 sizeof (struct field) * TYPE_NFIELDS (t));
3750 f = &(TYPE_FIELDS (t)[TYPE_NFIELDS (t) - 1]);
3751 memset (f, 0, sizeof f[0]);
3752 FIELD_TYPE (f[0]) = field;
3753 FIELD_NAME (f[0]) = name;
f5dff777
DJ
3754 return f;
3755}
3756
3757/* Add new field with name NAME and type FIELD to composite type T.
3758 ALIGNMENT (if non-zero) specifies the minimum field alignment. */
5212577a 3759
f5dff777
DJ
3760void
3761append_composite_type_field_aligned (struct type *t, char *name,
3762 struct type *field, int alignment)
3763{
3764 struct field *f = append_composite_type_field_raw (t, name, field);
d8734c88 3765
e9bb382b
UW
3766 if (TYPE_CODE (t) == TYPE_CODE_UNION)
3767 {
3768 if (TYPE_LENGTH (t) < TYPE_LENGTH (field))
3769 TYPE_LENGTH (t) = TYPE_LENGTH (field);
3770 }
3771 else if (TYPE_CODE (t) == TYPE_CODE_STRUCT)
3772 {
3773 TYPE_LENGTH (t) = TYPE_LENGTH (t) + TYPE_LENGTH (field);
3774 if (TYPE_NFIELDS (t) > 1)
3775 {
f41f5e61
PA
3776 SET_FIELD_BITPOS (f[0],
3777 (FIELD_BITPOS (f[-1])
3778 + (TYPE_LENGTH (FIELD_TYPE (f[-1]))
3779 * TARGET_CHAR_BIT)));
e9bb382b
UW
3780
3781 if (alignment)
3782 {
86c3c1fc
AB
3783 int left;
3784
3785 alignment *= TARGET_CHAR_BIT;
3786 left = FIELD_BITPOS (f[0]) % alignment;
d8734c88 3787
e9bb382b
UW
3788 if (left)
3789 {
f41f5e61 3790 SET_FIELD_BITPOS (f[0], FIELD_BITPOS (f[0]) + (alignment - left));
86c3c1fc 3791 TYPE_LENGTH (t) += (alignment - left) / TARGET_CHAR_BIT;
e9bb382b
UW
3792 }
3793 }
3794 }
3795 }
3796}
3797
3798/* Add new field with name NAME and type FIELD to composite type T. */
5212577a 3799
e9bb382b
UW
3800void
3801append_composite_type_field (struct type *t, char *name,
3802 struct type *field)
3803{
3804 append_composite_type_field_aligned (t, name, field, 0);
3805}
3806
000177f0
AC
3807static struct gdbarch_data *gdbtypes_data;
3808
3809const struct builtin_type *
3810builtin_type (struct gdbarch *gdbarch)
3811{
3812 return gdbarch_data (gdbarch, gdbtypes_data);
3813}
3814
3815static void *
3816gdbtypes_post_init (struct gdbarch *gdbarch)
3817{
3818 struct builtin_type *builtin_type
3819 = GDBARCH_OBSTACK_ZALLOC (gdbarch, struct builtin_type);
3820
46bf5051 3821 /* Basic types. */
e9bb382b
UW
3822 builtin_type->builtin_void
3823 = arch_type (gdbarch, TYPE_CODE_VOID, 1, "void");
3824 builtin_type->builtin_char
3825 = arch_integer_type (gdbarch, TARGET_CHAR_BIT,
3826 !gdbarch_char_signed (gdbarch), "char");
3827 builtin_type->builtin_signed_char
3828 = arch_integer_type (gdbarch, TARGET_CHAR_BIT,
3829 0, "signed char");
3830 builtin_type->builtin_unsigned_char
3831 = arch_integer_type (gdbarch, TARGET_CHAR_BIT,
3832 1, "unsigned char");
3833 builtin_type->builtin_short
3834 = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
3835 0, "short");
3836 builtin_type->builtin_unsigned_short
3837 = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
3838 1, "unsigned short");
3839 builtin_type->builtin_int
3840 = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
3841 0, "int");
3842 builtin_type->builtin_unsigned_int
3843 = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
3844 1, "unsigned int");
3845 builtin_type->builtin_long
3846 = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
3847 0, "long");
3848 builtin_type->builtin_unsigned_long
3849 = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
3850 1, "unsigned long");
3851 builtin_type->builtin_long_long
3852 = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
3853 0, "long long");
3854 builtin_type->builtin_unsigned_long_long
3855 = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
3856 1, "unsigned long long");
70bd8e24 3857 builtin_type->builtin_float
e9bb382b 3858 = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch),
27067745 3859 "float", gdbarch_float_format (gdbarch));
70bd8e24 3860 builtin_type->builtin_double
e9bb382b 3861 = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
27067745 3862 "double", gdbarch_double_format (gdbarch));
70bd8e24 3863 builtin_type->builtin_long_double
e9bb382b 3864 = arch_float_type (gdbarch, gdbarch_long_double_bit (gdbarch),
27067745 3865 "long double", gdbarch_long_double_format (gdbarch));
70bd8e24 3866 builtin_type->builtin_complex
e9bb382b
UW
3867 = arch_complex_type (gdbarch, "complex",
3868 builtin_type->builtin_float);
70bd8e24 3869 builtin_type->builtin_double_complex
e9bb382b
UW
3870 = arch_complex_type (gdbarch, "double complex",
3871 builtin_type->builtin_double);
3872 builtin_type->builtin_string
3873 = arch_type (gdbarch, TYPE_CODE_STRING, 1, "string");
3874 builtin_type->builtin_bool
3875 = arch_type (gdbarch, TYPE_CODE_BOOL, 1, "bool");
000177f0 3876
7678ef8f
TJB
3877 /* The following three are about decimal floating point types, which
3878 are 32-bits, 64-bits and 128-bits respectively. */
3879 builtin_type->builtin_decfloat
e9bb382b 3880 = arch_type (gdbarch, TYPE_CODE_DECFLOAT, 32 / 8, "_Decimal32");
7678ef8f 3881 builtin_type->builtin_decdouble
e9bb382b 3882 = arch_type (gdbarch, TYPE_CODE_DECFLOAT, 64 / 8, "_Decimal64");
7678ef8f 3883 builtin_type->builtin_declong
e9bb382b 3884 = arch_type (gdbarch, TYPE_CODE_DECFLOAT, 128 / 8, "_Decimal128");
7678ef8f 3885
69feb676 3886 /* "True" character types. */
e9bb382b
UW
3887 builtin_type->builtin_true_char
3888 = arch_character_type (gdbarch, TARGET_CHAR_BIT, 0, "true character");
3889 builtin_type->builtin_true_unsigned_char
3890 = arch_character_type (gdbarch, TARGET_CHAR_BIT, 1, "true character");
69feb676 3891
df4df182 3892 /* Fixed-size integer types. */
e9bb382b
UW
3893 builtin_type->builtin_int0
3894 = arch_integer_type (gdbarch, 0, 0, "int0_t");
3895 builtin_type->builtin_int8
3896 = arch_integer_type (gdbarch, 8, 0, "int8_t");
3897 builtin_type->builtin_uint8
3898 = arch_integer_type (gdbarch, 8, 1, "uint8_t");
3899 builtin_type->builtin_int16
3900 = arch_integer_type (gdbarch, 16, 0, "int16_t");
3901 builtin_type->builtin_uint16
3902 = arch_integer_type (gdbarch, 16, 1, "uint16_t");
3903 builtin_type->builtin_int32
3904 = arch_integer_type (gdbarch, 32, 0, "int32_t");
3905 builtin_type->builtin_uint32
3906 = arch_integer_type (gdbarch, 32, 1, "uint32_t");
3907 builtin_type->builtin_int64
3908 = arch_integer_type (gdbarch, 64, 0, "int64_t");
3909 builtin_type->builtin_uint64
3910 = arch_integer_type (gdbarch, 64, 1, "uint64_t");
3911 builtin_type->builtin_int128
3912 = arch_integer_type (gdbarch, 128, 0, "int128_t");
3913 builtin_type->builtin_uint128
3914 = arch_integer_type (gdbarch, 128, 1, "uint128_t");
2844d6b5
KW
3915 TYPE_INSTANCE_FLAGS (builtin_type->builtin_int8) |=
3916 TYPE_INSTANCE_FLAG_NOTTEXT;
3917 TYPE_INSTANCE_FLAGS (builtin_type->builtin_uint8) |=
3918 TYPE_INSTANCE_FLAG_NOTTEXT;
df4df182 3919
9a22f0d0
PM
3920 /* Wide character types. */
3921 builtin_type->builtin_char16
3922 = arch_integer_type (gdbarch, 16, 0, "char16_t");
3923 builtin_type->builtin_char32
3924 = arch_integer_type (gdbarch, 32, 0, "char32_t");
3925
3926
46bf5051 3927 /* Default data/code pointer types. */
e9bb382b
UW
3928 builtin_type->builtin_data_ptr
3929 = lookup_pointer_type (builtin_type->builtin_void);
3930 builtin_type->builtin_func_ptr
3931 = lookup_pointer_type (lookup_function_type (builtin_type->builtin_void));
0875794a
JK
3932 builtin_type->builtin_func_func
3933 = lookup_function_type (builtin_type->builtin_func_ptr);
46bf5051 3934
78267919 3935 /* This type represents a GDB internal function. */
e9bb382b
UW
3936 builtin_type->internal_fn
3937 = arch_type (gdbarch, TYPE_CODE_INTERNAL_FUNCTION, 0,
3938 "<internal function>");
78267919 3939
46bf5051
UW
3940 return builtin_type;
3941}
3942
46bf5051
UW
3943/* This set of objfile-based types is intended to be used by symbol
3944 readers as basic types. */
3945
3946static const struct objfile_data *objfile_type_data;
3947
3948const struct objfile_type *
3949objfile_type (struct objfile *objfile)
3950{
3951 struct gdbarch *gdbarch;
3952 struct objfile_type *objfile_type
3953 = objfile_data (objfile, objfile_type_data);
3954
3955 if (objfile_type)
3956 return objfile_type;
3957
3958 objfile_type = OBSTACK_CALLOC (&objfile->objfile_obstack,
3959 1, struct objfile_type);
3960
3961 /* Use the objfile architecture to determine basic type properties. */
3962 gdbarch = get_objfile_arch (objfile);
3963
3964 /* Basic types. */
3965 objfile_type->builtin_void
3966 = init_type (TYPE_CODE_VOID, 1,
3967 0,
3968 "void", objfile);
3969
3970 objfile_type->builtin_char
3971 = init_type (TYPE_CODE_INT, TARGET_CHAR_BIT / TARGET_CHAR_BIT,
3972 (TYPE_FLAG_NOSIGN
3973 | (gdbarch_char_signed (gdbarch) ? 0 : TYPE_FLAG_UNSIGNED)),
3974 "char", objfile);
3975 objfile_type->builtin_signed_char
3976 = init_type (TYPE_CODE_INT, TARGET_CHAR_BIT / TARGET_CHAR_BIT,
3977 0,
3978 "signed char", objfile);
3979 objfile_type->builtin_unsigned_char
3980 = init_type (TYPE_CODE_INT, TARGET_CHAR_BIT / TARGET_CHAR_BIT,
3981 TYPE_FLAG_UNSIGNED,
3982 "unsigned char", objfile);
3983 objfile_type->builtin_short
3984 = init_type (TYPE_CODE_INT,
3985 gdbarch_short_bit (gdbarch) / TARGET_CHAR_BIT,
3986 0, "short", objfile);
3987 objfile_type->builtin_unsigned_short
3988 = init_type (TYPE_CODE_INT,
3989 gdbarch_short_bit (gdbarch) / TARGET_CHAR_BIT,
3990 TYPE_FLAG_UNSIGNED, "unsigned short", objfile);
3991 objfile_type->builtin_int
3992 = init_type (TYPE_CODE_INT,
3993 gdbarch_int_bit (gdbarch) / TARGET_CHAR_BIT,
3994 0, "int", objfile);
3995 objfile_type->builtin_unsigned_int
3996 = init_type (TYPE_CODE_INT,
3997 gdbarch_int_bit (gdbarch) / TARGET_CHAR_BIT,
3998 TYPE_FLAG_UNSIGNED, "unsigned int", objfile);
3999 objfile_type->builtin_long
4000 = init_type (TYPE_CODE_INT,
4001 gdbarch_long_bit (gdbarch) / TARGET_CHAR_BIT,
4002 0, "long", objfile);
4003 objfile_type->builtin_unsigned_long
4004 = init_type (TYPE_CODE_INT,
4005 gdbarch_long_bit (gdbarch) / TARGET_CHAR_BIT,
4006 TYPE_FLAG_UNSIGNED, "unsigned long", objfile);
4007 objfile_type->builtin_long_long
4008 = init_type (TYPE_CODE_INT,
4009 gdbarch_long_long_bit (gdbarch) / TARGET_CHAR_BIT,
4010 0, "long long", objfile);
4011 objfile_type->builtin_unsigned_long_long
4012 = init_type (TYPE_CODE_INT,
4013 gdbarch_long_long_bit (gdbarch) / TARGET_CHAR_BIT,
4014 TYPE_FLAG_UNSIGNED, "unsigned long long", objfile);
4015
4016 objfile_type->builtin_float
4017 = init_type (TYPE_CODE_FLT,
4018 gdbarch_float_bit (gdbarch) / TARGET_CHAR_BIT,
4019 0, "float", objfile);
4020 TYPE_FLOATFORMAT (objfile_type->builtin_float)
4021 = gdbarch_float_format (gdbarch);
4022 objfile_type->builtin_double
4023 = init_type (TYPE_CODE_FLT,
4024 gdbarch_double_bit (gdbarch) / TARGET_CHAR_BIT,
4025 0, "double", objfile);
4026 TYPE_FLOATFORMAT (objfile_type->builtin_double)
4027 = gdbarch_double_format (gdbarch);
4028 objfile_type->builtin_long_double
4029 = init_type (TYPE_CODE_FLT,
4030 gdbarch_long_double_bit (gdbarch) / TARGET_CHAR_BIT,
4031 0, "long double", objfile);
4032 TYPE_FLOATFORMAT (objfile_type->builtin_long_double)
4033 = gdbarch_long_double_format (gdbarch);
4034
4035 /* This type represents a type that was unrecognized in symbol read-in. */
4036 objfile_type->builtin_error
4037 = init_type (TYPE_CODE_ERROR, 0, 0, "<unknown type>", objfile);
4038
4039 /* The following set of types is used for symbols with no
4040 debug information. */
4041 objfile_type->nodebug_text_symbol
4042 = init_type (TYPE_CODE_FUNC, 1, 0,
4043 "<text variable, no debug info>", objfile);
4044 TYPE_TARGET_TYPE (objfile_type->nodebug_text_symbol)
4045 = objfile_type->builtin_int;
0875794a
JK
4046 objfile_type->nodebug_text_gnu_ifunc_symbol
4047 = init_type (TYPE_CODE_FUNC, 1, TYPE_FLAG_GNU_IFUNC,
4048 "<text gnu-indirect-function variable, no debug info>",
4049 objfile);
4050 TYPE_TARGET_TYPE (objfile_type->nodebug_text_gnu_ifunc_symbol)
4051 = objfile_type->nodebug_text_symbol;
4052 objfile_type->nodebug_got_plt_symbol
4053 = init_type (TYPE_CODE_PTR, gdbarch_addr_bit (gdbarch) / 8, 0,
4054 "<text from jump slot in .got.plt, no debug info>",
4055 objfile);
4056 TYPE_TARGET_TYPE (objfile_type->nodebug_got_plt_symbol)
4057 = objfile_type->nodebug_text_symbol;
46bf5051
UW
4058 objfile_type->nodebug_data_symbol
4059 = init_type (TYPE_CODE_INT,
4060 gdbarch_int_bit (gdbarch) / HOST_CHAR_BIT, 0,
4061 "<data variable, no debug info>", objfile);
4062 objfile_type->nodebug_unknown_symbol
4063 = init_type (TYPE_CODE_INT, 1, 0,
4064 "<variable (not text or data), no debug info>", objfile);
4065 objfile_type->nodebug_tls_symbol
4066 = init_type (TYPE_CODE_INT,
4067 gdbarch_int_bit (gdbarch) / HOST_CHAR_BIT, 0,
4068 "<thread local variable, no debug info>", objfile);
000177f0
AC
4069
4070 /* NOTE: on some targets, addresses and pointers are not necessarily
4071 the same --- for example, on the D10V, pointers are 16 bits long,
4072 but addresses are 32 bits long. See doc/gdbint.texinfo,
4073 ``Pointers Are Not Always Addresses''.
4074
4075 The upshot is:
4076 - gdb's `struct type' always describes the target's
4077 representation.
4078 - gdb's `struct value' objects should always hold values in
4079 target form.
4080 - gdb's CORE_ADDR values are addresses in the unified virtual
4081 address space that the assembler and linker work with. Thus,
4082 since target_read_memory takes a CORE_ADDR as an argument, it
4083 can access any memory on the target, even if the processor has
4084 separate code and data address spaces.
4085
4086 So, for example:
4087 - If v is a value holding a D10V code pointer, its contents are
4088 in target form: a big-endian address left-shifted two bits.
4089 - If p is a D10V pointer type, TYPE_LENGTH (p) == 2, just as
4090 sizeof (void *) == 2 on the target.
4091
46bf5051
UW
4092 In this context, objfile_type->builtin_core_addr is a bit odd:
4093 it's a target type for a value the target will never see. It's
4094 only used to hold the values of (typeless) linker symbols, which
4095 are indeed in the unified virtual address space. */
000177f0 4096
46bf5051
UW
4097 objfile_type->builtin_core_addr
4098 = init_type (TYPE_CODE_INT,
4099 gdbarch_addr_bit (gdbarch) / 8,
4100 TYPE_FLAG_UNSIGNED, "__CORE_ADDR", objfile);
64c50499 4101
46bf5051
UW
4102 set_objfile_data (objfile, objfile_type_data, objfile_type);
4103 return objfile_type;
000177f0
AC
4104}
4105
5212577a 4106extern initialize_file_ftype _initialize_gdbtypes;
46bf5051 4107
c906108c 4108void
fba45db2 4109_initialize_gdbtypes (void)
c906108c 4110{
5674de60 4111 gdbtypes_data = gdbarch_data_register_post_init (gdbtypes_post_init);
46bf5051 4112 objfile_type_data = register_objfile_data ();
5674de60 4113
ccce17b0
YQ
4114 add_setshow_zuinteger_cmd ("overload", no_class, &overload_debug,
4115 _("Set debugging of C++ overloading."),
4116 _("Show debugging of C++ overloading."),
4117 _("When enabled, ranking of the "
4118 "functions is displayed."),
4119 NULL,
4120 show_overload_debug,
4121 &setdebuglist, &showdebuglist);
5674de60 4122
7ba81444 4123 /* Add user knob for controlling resolution of opaque types. */
5674de60 4124 add_setshow_boolean_cmd ("opaque-type-resolution", class_support,
3e43a32a
MS
4125 &opaque_type_resolution,
4126 _("Set resolution of opaque struct/class/union"
4127 " types (if set before loading symbols)."),
4128 _("Show resolution of opaque struct/class/union"
4129 " types (if set before loading symbols)."),
4130 NULL, NULL,
5674de60
UW
4131 show_opaque_type_resolution,
4132 &setlist, &showlist);
a451cb65
KS
4133
4134 /* Add an option to permit non-strict type checking. */
4135 add_setshow_boolean_cmd ("type", class_support,
4136 &strict_type_checking,
4137 _("Set strict type checking."),
4138 _("Show strict type checking."),
4139 NULL, NULL,
4140 show_strict_type_checking,
4141 &setchecklist, &showchecklist);
c906108c 4142}
This page took 1.29354 seconds and 4 git commands to generate.