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