gdb: remove TYPE_NFIELDS macro
[deliverable/binutils-gdb.git] / gdb / gdbtypes.c
CommitLineData
c906108c 1/* Support routines for manipulating internal types for GDB.
4f2aea11 2
b811d2c2 3 Copyright (C) 1992-2020 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"
c906108c
SS
23#include "bfd.h"
24#include "symtab.h"
25#include "symfile.h"
26#include "objfiles.h"
27#include "gdbtypes.h"
28#include "expression.h"
29#include "language.h"
30#include "target.h"
31#include "value.h"
32#include "demangle.h"
33#include "complaints.h"
34#include "gdbcmd.h"
015a42b4 35#include "cp-abi.h"
ae5a43e0 36#include "hashtab.h"
8de20a37 37#include "cp-support.h"
ca092b61 38#include "bcache.h"
82ca8957 39#include "dwarf2/loc.h"
80180f79 40#include "gdbcore.h"
1841ee5d 41#include "floatformat.h"
ef83a141 42#include <algorithm>
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};
e15c3eb4 56const struct rank CV_CONVERSION_BADNESS = {1, 0};
a9d5ef47
SW
57const struct rank INTEGER_CONVERSION_BADNESS = {2,0};
58const struct rank FLOAT_CONVERSION_BADNESS = {2,0};
59const struct rank INT_FLOAT_CONVERSION_BADNESS = {2,0};
60const struct rank VOID_PTR_CONVERSION_BADNESS = {2,0};
5b4f6e25 61const struct rank BOOL_CONVERSION_BADNESS = {3,0};
a9d5ef47
SW
62const struct rank BASE_CONVERSION_BADNESS = {2,0};
63const struct rank REFERENCE_CONVERSION_BADNESS = {2,0};
06acc08f 64const struct rank REFERENCE_SEE_THROUGH_BADNESS = {0,1};
da096638 65const struct rank NULL_POINTER_CONVERSION_BADNESS = {2,0};
a9d5ef47 66const struct rank NS_POINTER_CONVERSION_BADNESS = {10,0};
a451cb65 67const struct rank NS_INTEGER_POINTER_CONVERSION_BADNESS = {3,0};
6403aeea 68
8da61cc4 69/* Floatformat pairs. */
f9e9243a
UW
70const struct floatformat *floatformats_ieee_half[BFD_ENDIAN_UNKNOWN] = {
71 &floatformat_ieee_half_big,
72 &floatformat_ieee_half_little
73};
8da61cc4
DJ
74const struct floatformat *floatformats_ieee_single[BFD_ENDIAN_UNKNOWN] = {
75 &floatformat_ieee_single_big,
76 &floatformat_ieee_single_little
77};
78const struct floatformat *floatformats_ieee_double[BFD_ENDIAN_UNKNOWN] = {
79 &floatformat_ieee_double_big,
80 &floatformat_ieee_double_little
81};
82const struct floatformat *floatformats_ieee_double_littlebyte_bigword[BFD_ENDIAN_UNKNOWN] = {
83 &floatformat_ieee_double_big,
84 &floatformat_ieee_double_littlebyte_bigword
85};
86const struct floatformat *floatformats_i387_ext[BFD_ENDIAN_UNKNOWN] = {
87 &floatformat_i387_ext,
88 &floatformat_i387_ext
89};
90const struct floatformat *floatformats_m68881_ext[BFD_ENDIAN_UNKNOWN] = {
91 &floatformat_m68881_ext,
92 &floatformat_m68881_ext
93};
94const struct floatformat *floatformats_arm_ext[BFD_ENDIAN_UNKNOWN] = {
95 &floatformat_arm_ext_big,
96 &floatformat_arm_ext_littlebyte_bigword
97};
98const struct floatformat *floatformats_ia64_spill[BFD_ENDIAN_UNKNOWN] = {
99 &floatformat_ia64_spill_big,
100 &floatformat_ia64_spill_little
101};
102const struct floatformat *floatformats_ia64_quad[BFD_ENDIAN_UNKNOWN] = {
103 &floatformat_ia64_quad_big,
104 &floatformat_ia64_quad_little
105};
106const struct floatformat *floatformats_vax_f[BFD_ENDIAN_UNKNOWN] = {
107 &floatformat_vax_f,
108 &floatformat_vax_f
109};
110const struct floatformat *floatformats_vax_d[BFD_ENDIAN_UNKNOWN] = {
111 &floatformat_vax_d,
112 &floatformat_vax_d
113};
b14d30e1 114const struct floatformat *floatformats_ibm_long_double[BFD_ENDIAN_UNKNOWN] = {
f5aee5ee
AM
115 &floatformat_ibm_long_double_big,
116 &floatformat_ibm_long_double_little
b14d30e1 117};
8da61cc4 118
2873700e
KS
119/* Should opaque types be resolved? */
120
491144b5 121static bool opaque_type_resolution = true;
2873700e 122
79bb1944 123/* See gdbtypes.h. */
2873700e
KS
124
125unsigned int overload_debug = 0;
126
a451cb65
KS
127/* A flag to enable strict type checking. */
128
491144b5 129static bool strict_type_checking = true;
a451cb65 130
2873700e 131/* A function to show whether opaque types are resolved. */
5212577a 132
920d2a44
AC
133static void
134show_opaque_type_resolution (struct ui_file *file, int from_tty,
7ba81444
MS
135 struct cmd_list_element *c,
136 const char *value)
920d2a44 137{
3e43a32a
MS
138 fprintf_filtered (file, _("Resolution of opaque struct/class/union types "
139 "(if set before loading symbols) is %s.\n"),
920d2a44
AC
140 value);
141}
142
2873700e 143/* A function to show whether C++ overload debugging is enabled. */
5212577a 144
920d2a44
AC
145static void
146show_overload_debug (struct ui_file *file, int from_tty,
147 struct cmd_list_element *c, const char *value)
148{
7ba81444
MS
149 fprintf_filtered (file, _("Debugging of C++ overloading is %s.\n"),
150 value);
920d2a44 151}
c906108c 152
a451cb65
KS
153/* A function to show the status of strict type checking. */
154
155static void
156show_strict_type_checking (struct ui_file *file, int from_tty,
157 struct cmd_list_element *c, const char *value)
158{
159 fprintf_filtered (file, _("Strict type checking is %s.\n"), value);
160}
161
5212577a 162\f
e9bb382b
UW
163/* Allocate a new OBJFILE-associated type structure and fill it
164 with some defaults. Space for the type structure is allocated
165 on the objfile's objfile_obstack. */
c906108c
SS
166
167struct type *
fba45db2 168alloc_type (struct objfile *objfile)
c906108c 169{
52f0bd74 170 struct type *type;
c906108c 171
e9bb382b
UW
172 gdb_assert (objfile != NULL);
173
7ba81444 174 /* Alloc the structure and start off with all fields zeroed. */
e9bb382b
UW
175 type = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct type);
176 TYPE_MAIN_TYPE (type) = OBSTACK_ZALLOC (&objfile->objfile_obstack,
177 struct main_type);
178 OBJSTAT (objfile, n_types++);
c906108c 179
e9bb382b
UW
180 TYPE_OBJFILE_OWNED (type) = 1;
181 TYPE_OWNER (type).objfile = objfile;
c906108c 182
7ba81444 183 /* Initialize the fields that might not be zero. */
c906108c 184
67607e24 185 type->set_code (TYPE_CODE_UNDEF);
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
8f57eec2 193 on the obstack associated with GDBARCH. */
e9bb382b
UW
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
8f57eec2
PP
204 type = GDBARCH_OBSTACK_ZALLOC (gdbarch, struct type);
205 TYPE_MAIN_TYPE (type) = GDBARCH_OBSTACK_ZALLOC (gdbarch, 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
67607e24 212 type->set_code (TYPE_CODE_UNDEF);
e9bb382b
UW
213 TYPE_CHAIN (type) = type; /* Chain back to itself. */
214
215 return type;
216}
217
218/* If TYPE is objfile-associated, allocate a new type structure
219 associated with the same objfile. If TYPE is gdbarch-associated,
220 allocate a new type structure associated with the same gdbarch. */
221
222struct type *
223alloc_type_copy (const struct type *type)
224{
225 if (TYPE_OBJFILE_OWNED (type))
226 return alloc_type (TYPE_OWNER (type).objfile);
227 else
228 return alloc_type_arch (TYPE_OWNER (type).gdbarch);
229}
230
231/* If TYPE is gdbarch-associated, return that architecture.
232 If TYPE is objfile-associated, return that objfile's architecture. */
233
234struct gdbarch *
235get_type_arch (const struct type *type)
236{
2fabdf33
AB
237 struct gdbarch *arch;
238
e9bb382b 239 if (TYPE_OBJFILE_OWNED (type))
08feed99 240 arch = TYPE_OWNER (type).objfile->arch ();
e9bb382b 241 else
2fabdf33
AB
242 arch = TYPE_OWNER (type).gdbarch;
243
244 /* The ARCH can be NULL if TYPE is associated with neither an objfile nor
245 a gdbarch, however, this is very rare, and even then, in most cases
246 that get_type_arch is called, we assume that a non-NULL value is
247 returned. */
248 gdb_assert (arch != NULL);
249 return arch;
e9bb382b
UW
250}
251
99ad9427
YQ
252/* See gdbtypes.h. */
253
254struct type *
255get_target_type (struct type *type)
256{
257 if (type != NULL)
258 {
259 type = TYPE_TARGET_TYPE (type);
260 if (type != NULL)
261 type = check_typedef (type);
262 }
263
264 return type;
265}
266
2e056931
SM
267/* See gdbtypes.h. */
268
269unsigned int
270type_length_units (struct type *type)
271{
272 struct gdbarch *arch = get_type_arch (type);
273 int unit_size = gdbarch_addressable_memory_unit_size (arch);
274
275 return TYPE_LENGTH (type) / unit_size;
276}
277
2fdde8f8
DJ
278/* Alloc a new type instance structure, fill it with some defaults,
279 and point it at OLDTYPE. Allocate the new type instance from the
280 same place as OLDTYPE. */
281
282static struct type *
283alloc_type_instance (struct type *oldtype)
284{
285 struct type *type;
286
287 /* Allocate the structure. */
288
e9bb382b 289 if (! TYPE_OBJFILE_OWNED (oldtype))
2fabdf33 290 type = GDBARCH_OBSTACK_ZALLOC (get_type_arch (oldtype), struct type);
2fdde8f8 291 else
1deafd4e
PA
292 type = OBSTACK_ZALLOC (&TYPE_OBJFILE (oldtype)->objfile_obstack,
293 struct type);
294
2fdde8f8
DJ
295 TYPE_MAIN_TYPE (type) = TYPE_MAIN_TYPE (oldtype);
296
297 TYPE_CHAIN (type) = type; /* Chain back to itself for now. */
298
c16abbde 299 return type;
2fdde8f8
DJ
300}
301
302/* Clear all remnants of the previous type at TYPE, in preparation for
e9bb382b 303 replacing it with something else. Preserve owner information. */
5212577a 304
2fdde8f8
DJ
305static void
306smash_type (struct type *type)
307{
e9bb382b
UW
308 int objfile_owned = TYPE_OBJFILE_OWNED (type);
309 union type_owner owner = TYPE_OWNER (type);
310
2fdde8f8
DJ
311 memset (TYPE_MAIN_TYPE (type), 0, sizeof (struct main_type));
312
e9bb382b
UW
313 /* Restore owner information. */
314 TYPE_OBJFILE_OWNED (type) = objfile_owned;
315 TYPE_OWNER (type) = owner;
316
2fdde8f8
DJ
317 /* For now, delete the rings. */
318 TYPE_CHAIN (type) = type;
319
320 /* For now, leave the pointer/reference types alone. */
321}
322
c906108c
SS
323/* Lookup a pointer to a type TYPE. TYPEPTR, if nonzero, points
324 to a pointer to memory where the pointer type should be stored.
325 If *TYPEPTR is zero, update it to point to the pointer type we return.
326 We allocate new memory if needed. */
327
328struct type *
fba45db2 329make_pointer_type (struct type *type, struct type **typeptr)
c906108c 330{
52f0bd74 331 struct type *ntype; /* New type */
053cb41b 332 struct type *chain;
c906108c
SS
333
334 ntype = TYPE_POINTER_TYPE (type);
335
c5aa993b 336 if (ntype)
c906108c 337 {
c5aa993b 338 if (typeptr == 0)
7ba81444
MS
339 return ntype; /* Don't care about alloc,
340 and have new type. */
c906108c 341 else if (*typeptr == 0)
c5aa993b 342 {
7ba81444 343 *typeptr = ntype; /* Tracking alloc, and have new type. */
c906108c 344 return ntype;
c5aa993b 345 }
c906108c
SS
346 }
347
348 if (typeptr == 0 || *typeptr == 0) /* We'll need to allocate one. */
349 {
e9bb382b 350 ntype = alloc_type_copy (type);
c906108c
SS
351 if (typeptr)
352 *typeptr = ntype;
353 }
7ba81444 354 else /* We have storage, but need to reset it. */
c906108c
SS
355 {
356 ntype = *typeptr;
053cb41b 357 chain = TYPE_CHAIN (ntype);
2fdde8f8 358 smash_type (ntype);
053cb41b 359 TYPE_CHAIN (ntype) = chain;
c906108c
SS
360 }
361
362 TYPE_TARGET_TYPE (ntype) = type;
363 TYPE_POINTER_TYPE (type) = ntype;
364
5212577a 365 /* FIXME! Assumes the machine has only one representation for pointers! */
c906108c 366
50810684
UW
367 TYPE_LENGTH (ntype)
368 = gdbarch_ptr_bit (get_type_arch (type)) / TARGET_CHAR_BIT;
67607e24 369 ntype->set_code (TYPE_CODE_PTR);
c906108c 370
67b2adb2 371 /* Mark pointers as unsigned. The target converts between pointers
76e71323 372 and addresses (CORE_ADDRs) using gdbarch_pointer_to_address and
7ba81444 373 gdbarch_address_to_pointer. */
876cecd0 374 TYPE_UNSIGNED (ntype) = 1;
c5aa993b 375
053cb41b
JB
376 /* Update the length of all the other variants of this type. */
377 chain = TYPE_CHAIN (ntype);
378 while (chain != ntype)
379 {
380 TYPE_LENGTH (chain) = TYPE_LENGTH (ntype);
381 chain = TYPE_CHAIN (chain);
382 }
383
c906108c
SS
384 return ntype;
385}
386
387/* Given a type TYPE, return a type of pointers to that type.
388 May need to construct such a type if this is the first use. */
389
390struct type *
fba45db2 391lookup_pointer_type (struct type *type)
c906108c 392{
c5aa993b 393 return make_pointer_type (type, (struct type **) 0);
c906108c
SS
394}
395
7ba81444
MS
396/* Lookup a C++ `reference' to a type TYPE. TYPEPTR, if nonzero,
397 points to a pointer to memory where the reference type should be
398 stored. If *TYPEPTR is zero, update it to point to the reference
3b224330
AV
399 type we return. We allocate new memory if needed. REFCODE denotes
400 the kind of reference type to lookup (lvalue or rvalue reference). */
c906108c
SS
401
402struct type *
3b224330
AV
403make_reference_type (struct type *type, struct type **typeptr,
404 enum type_code refcode)
c906108c 405{
52f0bd74 406 struct type *ntype; /* New type */
3b224330 407 struct type **reftype;
1e98b326 408 struct type *chain;
c906108c 409
3b224330
AV
410 gdb_assert (refcode == TYPE_CODE_REF || refcode == TYPE_CODE_RVALUE_REF);
411
412 ntype = (refcode == TYPE_CODE_REF ? TYPE_REFERENCE_TYPE (type)
413 : TYPE_RVALUE_REFERENCE_TYPE (type));
c906108c 414
c5aa993b 415 if (ntype)
c906108c 416 {
c5aa993b 417 if (typeptr == 0)
7ba81444
MS
418 return ntype; /* Don't care about alloc,
419 and have new type. */
c906108c 420 else if (*typeptr == 0)
c5aa993b 421 {
7ba81444 422 *typeptr = ntype; /* Tracking alloc, and have new type. */
c906108c 423 return ntype;
c5aa993b 424 }
c906108c
SS
425 }
426
427 if (typeptr == 0 || *typeptr == 0) /* We'll need to allocate one. */
428 {
e9bb382b 429 ntype = alloc_type_copy (type);
c906108c
SS
430 if (typeptr)
431 *typeptr = ntype;
432 }
7ba81444 433 else /* We have storage, but need to reset it. */
c906108c
SS
434 {
435 ntype = *typeptr;
1e98b326 436 chain = TYPE_CHAIN (ntype);
2fdde8f8 437 smash_type (ntype);
1e98b326 438 TYPE_CHAIN (ntype) = chain;
c906108c
SS
439 }
440
441 TYPE_TARGET_TYPE (ntype) = type;
3b224330
AV
442 reftype = (refcode == TYPE_CODE_REF ? &TYPE_REFERENCE_TYPE (type)
443 : &TYPE_RVALUE_REFERENCE_TYPE (type));
444
445 *reftype = ntype;
c906108c 446
7ba81444
MS
447 /* FIXME! Assume the machine has only one representation for
448 references, and that it matches the (only) representation for
449 pointers! */
c906108c 450
50810684
UW
451 TYPE_LENGTH (ntype) =
452 gdbarch_ptr_bit (get_type_arch (type)) / TARGET_CHAR_BIT;
67607e24 453 ntype->set_code (refcode);
c5aa993b 454
3b224330 455 *reftype = ntype;
c906108c 456
1e98b326
JB
457 /* Update the length of all the other variants of this type. */
458 chain = TYPE_CHAIN (ntype);
459 while (chain != ntype)
460 {
461 TYPE_LENGTH (chain) = TYPE_LENGTH (ntype);
462 chain = TYPE_CHAIN (chain);
463 }
464
c906108c
SS
465 return ntype;
466}
467
7ba81444
MS
468/* Same as above, but caller doesn't care about memory allocation
469 details. */
c906108c
SS
470
471struct type *
3b224330
AV
472lookup_reference_type (struct type *type, enum type_code refcode)
473{
474 return make_reference_type (type, (struct type **) 0, refcode);
475}
476
477/* Lookup the lvalue reference type for the type TYPE. */
478
479struct type *
480lookup_lvalue_reference_type (struct type *type)
481{
482 return lookup_reference_type (type, TYPE_CODE_REF);
483}
484
485/* Lookup the rvalue reference type for the type TYPE. */
486
487struct type *
488lookup_rvalue_reference_type (struct type *type)
c906108c 489{
3b224330 490 return lookup_reference_type (type, TYPE_CODE_RVALUE_REF);
c906108c
SS
491}
492
7ba81444
MS
493/* Lookup a function type that returns type TYPE. TYPEPTR, if
494 nonzero, points to a pointer to memory where the function type
495 should be stored. If *TYPEPTR is zero, update it to point to the
0c8b41f1 496 function type we return. We allocate new memory if needed. */
c906108c
SS
497
498struct type *
0c8b41f1 499make_function_type (struct type *type, struct type **typeptr)
c906108c 500{
52f0bd74 501 struct type *ntype; /* New type */
c906108c
SS
502
503 if (typeptr == 0 || *typeptr == 0) /* We'll need to allocate one. */
504 {
e9bb382b 505 ntype = alloc_type_copy (type);
c906108c
SS
506 if (typeptr)
507 *typeptr = ntype;
508 }
7ba81444 509 else /* We have storage, but need to reset it. */
c906108c
SS
510 {
511 ntype = *typeptr;
2fdde8f8 512 smash_type (ntype);
c906108c
SS
513 }
514
515 TYPE_TARGET_TYPE (ntype) = type;
516
517 TYPE_LENGTH (ntype) = 1;
67607e24 518 ntype->set_code (TYPE_CODE_FUNC);
c5aa993b 519
b6cdc2c1
JK
520 INIT_FUNC_SPECIFIC (ntype);
521
c906108c
SS
522 return ntype;
523}
524
c906108c
SS
525/* Given a type TYPE, return a type of functions that return that type.
526 May need to construct such a type if this is the first use. */
527
528struct type *
fba45db2 529lookup_function_type (struct type *type)
c906108c 530{
0c8b41f1 531 return make_function_type (type, (struct type **) 0);
c906108c
SS
532}
533
71918a86 534/* Given a type TYPE and argument types, return the appropriate
a6fb9c08
TT
535 function type. If the final type in PARAM_TYPES is NULL, make a
536 varargs function. */
71918a86
TT
537
538struct type *
539lookup_function_type_with_arguments (struct type *type,
540 int nparams,
541 struct type **param_types)
542{
543 struct type *fn = make_function_type (type, (struct type **) 0);
544 int i;
545
e314d629 546 if (nparams > 0)
a6fb9c08 547 {
e314d629
TT
548 if (param_types[nparams - 1] == NULL)
549 {
550 --nparams;
551 TYPE_VARARGS (fn) = 1;
552 }
78134374 553 else if (check_typedef (param_types[nparams - 1])->code ()
e314d629
TT
554 == TYPE_CODE_VOID)
555 {
556 --nparams;
557 /* Caller should have ensured this. */
558 gdb_assert (nparams == 0);
559 TYPE_PROTOTYPED (fn) = 1;
560 }
54990598
PA
561 else
562 TYPE_PROTOTYPED (fn) = 1;
a6fb9c08
TT
563 }
564
5e33d5f4 565 fn->set_num_fields (nparams);
224c3ddb
SM
566 TYPE_FIELDS (fn)
567 = (struct field *) TYPE_ZALLOC (fn, nparams * sizeof (struct field));
71918a86
TT
568 for (i = 0; i < nparams; ++i)
569 TYPE_FIELD_TYPE (fn, i) = param_types[i];
570
571 return fn;
572}
573
47663de5
MS
574/* Identify address space identifier by name --
575 return the integer flag defined in gdbtypes.h. */
5212577a
DE
576
577int
61f4b350
TT
578address_space_name_to_int (struct gdbarch *gdbarch,
579 const char *space_identifier)
47663de5 580{
8b2dbe47 581 int type_flags;
d8734c88 582
7ba81444 583 /* Check for known address space delimiters. */
47663de5 584 if (!strcmp (space_identifier, "code"))
876cecd0 585 return TYPE_INSTANCE_FLAG_CODE_SPACE;
47663de5 586 else if (!strcmp (space_identifier, "data"))
876cecd0 587 return TYPE_INSTANCE_FLAG_DATA_SPACE;
5f11f355
AC
588 else if (gdbarch_address_class_name_to_type_flags_p (gdbarch)
589 && gdbarch_address_class_name_to_type_flags (gdbarch,
590 space_identifier,
591 &type_flags))
8b2dbe47 592 return type_flags;
47663de5 593 else
8a3fe4f8 594 error (_("Unknown address space specifier: \"%s\""), space_identifier);
47663de5
MS
595}
596
597/* Identify address space identifier by integer flag as defined in
7ba81444 598 gdbtypes.h -- return the string version of the adress space name. */
47663de5 599
321432c0 600const char *
50810684 601address_space_int_to_name (struct gdbarch *gdbarch, int space_flag)
47663de5 602{
876cecd0 603 if (space_flag & TYPE_INSTANCE_FLAG_CODE_SPACE)
47663de5 604 return "code";
876cecd0 605 else if (space_flag & TYPE_INSTANCE_FLAG_DATA_SPACE)
47663de5 606 return "data";
876cecd0 607 else if ((space_flag & TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
5f11f355
AC
608 && gdbarch_address_class_type_flags_to_name_p (gdbarch))
609 return gdbarch_address_class_type_flags_to_name (gdbarch, space_flag);
47663de5
MS
610 else
611 return NULL;
612}
613
2fdde8f8 614/* Create a new type with instance flags NEW_FLAGS, based on TYPE.
ad766c0a
JB
615
616 If STORAGE is non-NULL, create the new type instance there.
617 STORAGE must be in the same obstack as TYPE. */
47663de5 618
b9362cc7 619static struct type *
2fdde8f8
DJ
620make_qualified_type (struct type *type, int new_flags,
621 struct type *storage)
47663de5
MS
622{
623 struct type *ntype;
624
625 ntype = type;
5f61c20e
JK
626 do
627 {
628 if (TYPE_INSTANCE_FLAGS (ntype) == new_flags)
629 return ntype;
630 ntype = TYPE_CHAIN (ntype);
631 }
632 while (ntype != type);
47663de5 633
2fdde8f8
DJ
634 /* Create a new type instance. */
635 if (storage == NULL)
636 ntype = alloc_type_instance (type);
637 else
638 {
7ba81444
MS
639 /* If STORAGE was provided, it had better be in the same objfile
640 as TYPE. Otherwise, we can't link it into TYPE's cv chain:
641 if one objfile is freed and the other kept, we'd have
642 dangling pointers. */
ad766c0a
JB
643 gdb_assert (TYPE_OBJFILE (type) == TYPE_OBJFILE (storage));
644
2fdde8f8
DJ
645 ntype = storage;
646 TYPE_MAIN_TYPE (ntype) = TYPE_MAIN_TYPE (type);
647 TYPE_CHAIN (ntype) = ntype;
648 }
47663de5
MS
649
650 /* Pointers or references to the original type are not relevant to
2fdde8f8 651 the new type. */
47663de5
MS
652 TYPE_POINTER_TYPE (ntype) = (struct type *) 0;
653 TYPE_REFERENCE_TYPE (ntype) = (struct type *) 0;
47663de5 654
2fdde8f8
DJ
655 /* Chain the new qualified type to the old type. */
656 TYPE_CHAIN (ntype) = TYPE_CHAIN (type);
657 TYPE_CHAIN (type) = ntype;
658
659 /* Now set the instance flags and return the new type. */
660 TYPE_INSTANCE_FLAGS (ntype) = new_flags;
47663de5 661
ab5d3da6
KB
662 /* Set length of new type to that of the original type. */
663 TYPE_LENGTH (ntype) = TYPE_LENGTH (type);
664
47663de5
MS
665 return ntype;
666}
667
2fdde8f8
DJ
668/* Make an address-space-delimited variant of a type -- a type that
669 is identical to the one supplied except that it has an address
670 space attribute attached to it (such as "code" or "data").
671
7ba81444
MS
672 The space attributes "code" and "data" are for Harvard
673 architectures. The address space attributes are for architectures
674 which have alternately sized pointers or pointers with alternate
675 representations. */
2fdde8f8
DJ
676
677struct type *
678make_type_with_address_space (struct type *type, int space_flag)
679{
2fdde8f8 680 int new_flags = ((TYPE_INSTANCE_FLAGS (type)
876cecd0
TT
681 & ~(TYPE_INSTANCE_FLAG_CODE_SPACE
682 | TYPE_INSTANCE_FLAG_DATA_SPACE
683 | TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL))
2fdde8f8
DJ
684 | space_flag);
685
686 return make_qualified_type (type, new_flags, NULL);
687}
c906108c
SS
688
689/* Make a "c-v" variant of a type -- a type that is identical to the
690 one supplied except that it may have const or volatile attributes
691 CNST is a flag for setting the const attribute
692 VOLTL is a flag for setting the volatile attribute
693 TYPE is the base type whose variant we are creating.
c906108c 694
ad766c0a
JB
695 If TYPEPTR and *TYPEPTR are non-zero, then *TYPEPTR points to
696 storage to hold the new qualified type; *TYPEPTR and TYPE must be
697 in the same objfile. Otherwise, allocate fresh memory for the new
698 type whereever TYPE lives. If TYPEPTR is non-zero, set it to the
699 new type we construct. */
5212577a 700
c906108c 701struct type *
7ba81444
MS
702make_cv_type (int cnst, int voltl,
703 struct type *type,
704 struct type **typeptr)
c906108c 705{
52f0bd74 706 struct type *ntype; /* New type */
c906108c 707
2fdde8f8 708 int new_flags = (TYPE_INSTANCE_FLAGS (type)
308d96ed
MS
709 & ~(TYPE_INSTANCE_FLAG_CONST
710 | TYPE_INSTANCE_FLAG_VOLATILE));
c906108c 711
c906108c 712 if (cnst)
876cecd0 713 new_flags |= TYPE_INSTANCE_FLAG_CONST;
c906108c
SS
714
715 if (voltl)
876cecd0 716 new_flags |= TYPE_INSTANCE_FLAG_VOLATILE;
a02fd225 717
2fdde8f8 718 if (typeptr && *typeptr != NULL)
a02fd225 719 {
ad766c0a
JB
720 /* TYPE and *TYPEPTR must be in the same objfile. We can't have
721 a C-V variant chain that threads across objfiles: if one
722 objfile gets freed, then the other has a broken C-V chain.
723
724 This code used to try to copy over the main type from TYPE to
725 *TYPEPTR if they were in different objfiles, but that's
726 wrong, too: TYPE may have a field list or member function
727 lists, which refer to types of their own, etc. etc. The
728 whole shebang would need to be copied over recursively; you
729 can't have inter-objfile pointers. The only thing to do is
730 to leave stub types as stub types, and look them up afresh by
731 name each time you encounter them. */
732 gdb_assert (TYPE_OBJFILE (*typeptr) == TYPE_OBJFILE (type));
2fdde8f8
DJ
733 }
734
7ba81444
MS
735 ntype = make_qualified_type (type, new_flags,
736 typeptr ? *typeptr : NULL);
c906108c 737
2fdde8f8
DJ
738 if (typeptr != NULL)
739 *typeptr = ntype;
a02fd225 740
2fdde8f8 741 return ntype;
a02fd225 742}
c906108c 743
06d66ee9
TT
744/* Make a 'restrict'-qualified version of TYPE. */
745
746struct type *
747make_restrict_type (struct type *type)
748{
749 return make_qualified_type (type,
750 (TYPE_INSTANCE_FLAGS (type)
751 | TYPE_INSTANCE_FLAG_RESTRICT),
752 NULL);
753}
754
f1660027
TT
755/* Make a type without const, volatile, or restrict. */
756
757struct type *
758make_unqualified_type (struct type *type)
759{
760 return make_qualified_type (type,
761 (TYPE_INSTANCE_FLAGS (type)
762 & ~(TYPE_INSTANCE_FLAG_CONST
763 | TYPE_INSTANCE_FLAG_VOLATILE
764 | TYPE_INSTANCE_FLAG_RESTRICT)),
765 NULL);
766}
767
a2c2acaf
MW
768/* Make a '_Atomic'-qualified version of TYPE. */
769
770struct type *
771make_atomic_type (struct type *type)
772{
773 return make_qualified_type (type,
774 (TYPE_INSTANCE_FLAGS (type)
775 | TYPE_INSTANCE_FLAG_ATOMIC),
776 NULL);
777}
778
2fdde8f8
DJ
779/* Replace the contents of ntype with the type *type. This changes the
780 contents, rather than the pointer for TYPE_MAIN_TYPE (ntype); thus
781 the changes are propogated to all types in the TYPE_CHAIN.
dd6bda65 782
cda6c68a
JB
783 In order to build recursive types, it's inevitable that we'll need
784 to update types in place --- but this sort of indiscriminate
785 smashing is ugly, and needs to be replaced with something more
2fdde8f8
DJ
786 controlled. TYPE_MAIN_TYPE is a step in this direction; it's not
787 clear if more steps are needed. */
5212577a 788
dd6bda65
DJ
789void
790replace_type (struct type *ntype, struct type *type)
791{
ab5d3da6 792 struct type *chain;
dd6bda65 793
ad766c0a
JB
794 /* These two types had better be in the same objfile. Otherwise,
795 the assignment of one type's main type structure to the other
796 will produce a type with references to objects (names; field
797 lists; etc.) allocated on an objfile other than its own. */
e46dd0f4 798 gdb_assert (TYPE_OBJFILE (ntype) == TYPE_OBJFILE (type));
ad766c0a 799
2fdde8f8 800 *TYPE_MAIN_TYPE (ntype) = *TYPE_MAIN_TYPE (type);
dd6bda65 801
7ba81444
MS
802 /* The type length is not a part of the main type. Update it for
803 each type on the variant chain. */
ab5d3da6 804 chain = ntype;
5f61c20e
JK
805 do
806 {
807 /* Assert that this element of the chain has no address-class bits
808 set in its flags. Such type variants might have type lengths
809 which are supposed to be different from the non-address-class
810 variants. This assertion shouldn't ever be triggered because
811 symbol readers which do construct address-class variants don't
812 call replace_type(). */
813 gdb_assert (TYPE_ADDRESS_CLASS_ALL (chain) == 0);
814
815 TYPE_LENGTH (chain) = TYPE_LENGTH (type);
816 chain = TYPE_CHAIN (chain);
817 }
818 while (ntype != chain);
ab5d3da6 819
2fdde8f8
DJ
820 /* Assert that the two types have equivalent instance qualifiers.
821 This should be true for at least all of our debug readers. */
822 gdb_assert (TYPE_INSTANCE_FLAGS (ntype) == TYPE_INSTANCE_FLAGS (type));
dd6bda65
DJ
823}
824
c906108c
SS
825/* Implement direct support for MEMBER_TYPE in GNU C++.
826 May need to construct such a type if this is the first use.
827 The TYPE is the type of the member. The DOMAIN is the type
828 of the aggregate that the member belongs to. */
829
830struct type *
0d5de010 831lookup_memberptr_type (struct type *type, struct type *domain)
c906108c 832{
52f0bd74 833 struct type *mtype;
c906108c 834
e9bb382b 835 mtype = alloc_type_copy (type);
0d5de010 836 smash_to_memberptr_type (mtype, domain, type);
c16abbde 837 return mtype;
c906108c
SS
838}
839
0d5de010
DJ
840/* Return a pointer-to-method type, for a method of type TO_TYPE. */
841
842struct type *
843lookup_methodptr_type (struct type *to_type)
844{
845 struct type *mtype;
846
e9bb382b 847 mtype = alloc_type_copy (to_type);
0b92b5bb 848 smash_to_methodptr_type (mtype, to_type);
0d5de010
DJ
849 return mtype;
850}
851
7ba81444
MS
852/* Allocate a stub method whose return type is TYPE. This apparently
853 happens for speed of symbol reading, since parsing out the
854 arguments to the method is cpu-intensive, the way we are doing it.
855 So, we will fill in arguments later. This always returns a fresh
856 type. */
c906108c
SS
857
858struct type *
fba45db2 859allocate_stub_method (struct type *type)
c906108c
SS
860{
861 struct type *mtype;
862
e9bb382b 863 mtype = alloc_type_copy (type);
67607e24 864 mtype->set_code (TYPE_CODE_METHOD);
e9bb382b
UW
865 TYPE_LENGTH (mtype) = 1;
866 TYPE_STUB (mtype) = 1;
c906108c 867 TYPE_TARGET_TYPE (mtype) = type;
4bfb94b8 868 /* TYPE_SELF_TYPE (mtype) = unknown yet */
c16abbde 869 return mtype;
c906108c
SS
870}
871
0f59d5fc
PA
872/* See gdbtypes.h. */
873
874bool
875operator== (const dynamic_prop &l, const dynamic_prop &r)
876{
877 if (l.kind != r.kind)
878 return false;
879
880 switch (l.kind)
881 {
882 case PROP_UNDEFINED:
883 return true;
884 case PROP_CONST:
885 return l.data.const_val == r.data.const_val;
886 case PROP_ADDR_OFFSET:
887 case PROP_LOCEXPR:
888 case PROP_LOCLIST:
889 return l.data.baton == r.data.baton;
ef83a141
TT
890 case PROP_VARIANT_PARTS:
891 return l.data.variant_parts == r.data.variant_parts;
892 case PROP_TYPE:
893 return l.data.original_type == r.data.original_type;
0f59d5fc
PA
894 }
895
896 gdb_assert_not_reached ("unhandled dynamic_prop kind");
897}
898
899/* See gdbtypes.h. */
900
901bool
902operator== (const range_bounds &l, const range_bounds &r)
903{
904#define FIELD_EQ(FIELD) (l.FIELD == r.FIELD)
905
906 return (FIELD_EQ (low)
907 && FIELD_EQ (high)
908 && FIELD_EQ (flag_upper_bound_is_count)
4e962e74
TT
909 && FIELD_EQ (flag_bound_evaluated)
910 && FIELD_EQ (bias));
0f59d5fc
PA
911
912#undef FIELD_EQ
913}
914
729efb13
SA
915/* Create a range type with a dynamic range from LOW_BOUND to
916 HIGH_BOUND, inclusive. See create_range_type for further details. */
c906108c
SS
917
918struct type *
729efb13
SA
919create_range_type (struct type *result_type, struct type *index_type,
920 const struct dynamic_prop *low_bound,
4e962e74
TT
921 const struct dynamic_prop *high_bound,
922 LONGEST bias)
c906108c 923{
b86352cf
AB
924 /* The INDEX_TYPE should be a type capable of holding the upper and lower
925 bounds, as such a zero sized, or void type makes no sense. */
78134374 926 gdb_assert (index_type->code () != TYPE_CODE_VOID);
b86352cf
AB
927 gdb_assert (TYPE_LENGTH (index_type) > 0);
928
c906108c 929 if (result_type == NULL)
e9bb382b 930 result_type = alloc_type_copy (index_type);
67607e24 931 result_type->set_code (TYPE_CODE_RANGE);
c906108c 932 TYPE_TARGET_TYPE (result_type) = index_type;
74a9bb82 933 if (TYPE_STUB (index_type))
876cecd0 934 TYPE_TARGET_STUB (result_type) = 1;
c906108c
SS
935 else
936 TYPE_LENGTH (result_type) = TYPE_LENGTH (check_typedef (index_type));
729efb13 937
43bbcdc2
PH
938 TYPE_RANGE_DATA (result_type) = (struct range_bounds *)
939 TYPE_ZALLOC (result_type, sizeof (struct range_bounds));
729efb13
SA
940 TYPE_RANGE_DATA (result_type)->low = *low_bound;
941 TYPE_RANGE_DATA (result_type)->high = *high_bound;
4e962e74 942 TYPE_RANGE_DATA (result_type)->bias = bias;
c906108c 943
5bbd8269
AB
944 /* Initialize the stride to be a constant, the value will already be zero
945 thanks to the use of TYPE_ZALLOC above. */
946 TYPE_RANGE_DATA (result_type)->stride.kind = PROP_CONST;
947
729efb13 948 if (low_bound->kind == PROP_CONST && low_bound->data.const_val >= 0)
876cecd0 949 TYPE_UNSIGNED (result_type) = 1;
c906108c 950
45e44d27
JB
951 /* Ada allows the declaration of range types whose upper bound is
952 less than the lower bound, so checking the lower bound is not
953 enough. Make sure we do not mark a range type whose upper bound
954 is negative as unsigned. */
955 if (high_bound->kind == PROP_CONST && high_bound->data.const_val < 0)
956 TYPE_UNSIGNED (result_type) = 0;
957
a05cf17a
TT
958 TYPE_ENDIANITY_NOT_DEFAULT (result_type)
959 = TYPE_ENDIANITY_NOT_DEFAULT (index_type);
960
262452ec 961 return result_type;
c906108c
SS
962}
963
5bbd8269
AB
964/* See gdbtypes.h. */
965
966struct type *
967create_range_type_with_stride (struct type *result_type,
968 struct type *index_type,
969 const struct dynamic_prop *low_bound,
970 const struct dynamic_prop *high_bound,
971 LONGEST bias,
972 const struct dynamic_prop *stride,
973 bool byte_stride_p)
974{
975 result_type = create_range_type (result_type, index_type, low_bound,
976 high_bound, bias);
977
978 gdb_assert (stride != nullptr);
979 TYPE_RANGE_DATA (result_type)->stride = *stride;
980 TYPE_RANGE_DATA (result_type)->flag_is_byte_stride = byte_stride_p;
981
982 return result_type;
983}
984
985
986
729efb13
SA
987/* Create a range type using either a blank type supplied in
988 RESULT_TYPE, or creating a new type, inheriting the objfile from
989 INDEX_TYPE.
990
991 Indices will be of type INDEX_TYPE, and will range from LOW_BOUND
992 to HIGH_BOUND, inclusive.
993
994 FIXME: Maybe we should check the TYPE_CODE of RESULT_TYPE to make
995 sure it is TYPE_CODE_UNDEF before we bash it into a range type? */
996
997struct type *
998create_static_range_type (struct type *result_type, struct type *index_type,
999 LONGEST low_bound, LONGEST high_bound)
1000{
1001 struct dynamic_prop low, high;
1002
1003 low.kind = PROP_CONST;
1004 low.data.const_val = low_bound;
1005
1006 high.kind = PROP_CONST;
1007 high.data.const_val = high_bound;
1008
4e962e74 1009 result_type = create_range_type (result_type, index_type, &low, &high, 0);
729efb13
SA
1010
1011 return result_type;
1012}
1013
80180f79
SA
1014/* Predicate tests whether BOUNDS are static. Returns 1 if all bounds values
1015 are static, otherwise returns 0. */
1016
5bbd8269 1017static bool
80180f79
SA
1018has_static_range (const struct range_bounds *bounds)
1019{
5bbd8269
AB
1020 /* If the range doesn't have a defined stride then its stride field will
1021 be initialized to the constant 0. */
80180f79 1022 return (bounds->low.kind == PROP_CONST
5bbd8269
AB
1023 && bounds->high.kind == PROP_CONST
1024 && bounds->stride.kind == PROP_CONST);
80180f79
SA
1025}
1026
1027
7ba81444
MS
1028/* Set *LOWP and *HIGHP to the lower and upper bounds of discrete type
1029 TYPE. Return 1 if type is a range type, 0 if it is discrete (and
1030 bounds will fit in LONGEST), or -1 otherwise. */
c906108c
SS
1031
1032int
fba45db2 1033get_discrete_bounds (struct type *type, LONGEST *lowp, LONGEST *highp)
c906108c 1034{
f168693b 1035 type = check_typedef (type);
78134374 1036 switch (type->code ())
c906108c
SS
1037 {
1038 case TYPE_CODE_RANGE:
1039 *lowp = TYPE_LOW_BOUND (type);
1040 *highp = TYPE_HIGH_BOUND (type);
1041 return 1;
1042 case TYPE_CODE_ENUM:
1f704f76 1043 if (type->num_fields () > 0)
c906108c
SS
1044 {
1045 /* The enums may not be sorted by value, so search all
0963b4bd 1046 entries. */
c906108c
SS
1047 int i;
1048
14e75d8e 1049 *lowp = *highp = TYPE_FIELD_ENUMVAL (type, 0);
1f704f76 1050 for (i = 0; i < type->num_fields (); i++)
c906108c 1051 {
14e75d8e
JK
1052 if (TYPE_FIELD_ENUMVAL (type, i) < *lowp)
1053 *lowp = TYPE_FIELD_ENUMVAL (type, i);
1054 if (TYPE_FIELD_ENUMVAL (type, i) > *highp)
1055 *highp = TYPE_FIELD_ENUMVAL (type, i);
c906108c
SS
1056 }
1057
7ba81444 1058 /* Set unsigned indicator if warranted. */
c5aa993b 1059 if (*lowp >= 0)
c906108c 1060 {
876cecd0 1061 TYPE_UNSIGNED (type) = 1;
c906108c
SS
1062 }
1063 }
1064 else
1065 {
1066 *lowp = 0;
1067 *highp = -1;
1068 }
1069 return 0;
1070 case TYPE_CODE_BOOL:
1071 *lowp = 0;
1072 *highp = 1;
1073 return 0;
1074 case TYPE_CODE_INT:
c5aa993b 1075 if (TYPE_LENGTH (type) > sizeof (LONGEST)) /* Too big */
c906108c
SS
1076 return -1;
1077 if (!TYPE_UNSIGNED (type))
1078 {
c5aa993b 1079 *lowp = -(1 << (TYPE_LENGTH (type) * TARGET_CHAR_BIT - 1));
c906108c
SS
1080 *highp = -*lowp - 1;
1081 return 0;
1082 }
86a73007 1083 /* fall through */
c906108c
SS
1084 case TYPE_CODE_CHAR:
1085 *lowp = 0;
1086 /* This round-about calculation is to avoid shifting by
7b83ea04 1087 TYPE_LENGTH (type) * TARGET_CHAR_BIT, which will not work
7ba81444 1088 if TYPE_LENGTH (type) == sizeof (LONGEST). */
c906108c
SS
1089 *highp = 1 << (TYPE_LENGTH (type) * TARGET_CHAR_BIT - 1);
1090 *highp = (*highp - 1) | *highp;
1091 return 0;
1092 default:
1093 return -1;
1094 }
1095}
1096
dbc98a8b
KW
1097/* Assuming TYPE is a simple, non-empty array type, compute its upper
1098 and lower bound. Save the low bound into LOW_BOUND if not NULL.
1099 Save the high bound into HIGH_BOUND if not NULL.
1100
0963b4bd 1101 Return 1 if the operation was successful. Return zero otherwise,
dbc98a8b
KW
1102 in which case the values of LOW_BOUND and HIGH_BOUNDS are unmodified.
1103
1104 We now simply use get_discrete_bounds call to get the values
1105 of the low and high bounds.
1106 get_discrete_bounds can return three values:
1107 1, meaning that index is a range,
1108 0, meaning that index is a discrete type,
1109 or -1 for failure. */
1110
1111int
1112get_array_bounds (struct type *type, LONGEST *low_bound, LONGEST *high_bound)
1113{
1114 struct type *index = TYPE_INDEX_TYPE (type);
1115 LONGEST low = 0;
1116 LONGEST high = 0;
1117 int res;
1118
1119 if (index == NULL)
1120 return 0;
1121
1122 res = get_discrete_bounds (index, &low, &high);
1123 if (res == -1)
1124 return 0;
1125
1126 /* Check if the array bounds are undefined. */
1127 if (res == 1
1128 && ((low_bound && TYPE_ARRAY_LOWER_BOUND_IS_UNDEFINED (type))
1129 || (high_bound && TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type))))
1130 return 0;
1131
1132 if (low_bound)
1133 *low_bound = low;
1134
1135 if (high_bound)
1136 *high_bound = high;
1137
1138 return 1;
1139}
1140
aa715135
JG
1141/* Assuming that TYPE is a discrete type and VAL is a valid integer
1142 representation of a value of this type, save the corresponding
1143 position number in POS.
1144
1145 Its differs from VAL only in the case of enumeration types. In
1146 this case, the position number of the value of the first listed
1147 enumeration literal is zero; the position number of the value of
1148 each subsequent enumeration literal is one more than that of its
1149 predecessor in the list.
1150
1151 Return 1 if the operation was successful. Return zero otherwise,
1152 in which case the value of POS is unmodified.
1153*/
1154
1155int
1156discrete_position (struct type *type, LONGEST val, LONGEST *pos)
1157{
78134374 1158 if (type->code () == TYPE_CODE_ENUM)
aa715135
JG
1159 {
1160 int i;
1161
1f704f76 1162 for (i = 0; i < type->num_fields (); i += 1)
aa715135
JG
1163 {
1164 if (val == TYPE_FIELD_ENUMVAL (type, i))
1165 {
1166 *pos = i;
1167 return 1;
1168 }
1169 }
1170 /* Invalid enumeration value. */
1171 return 0;
1172 }
1173 else
1174 {
1175 *pos = val;
1176 return 1;
1177 }
1178}
1179
8dbb1375
HD
1180/* If the array TYPE has static bounds calculate and update its
1181 size, then return true. Otherwise return false and leave TYPE
1182 unchanged. */
1183
1184static bool
1185update_static_array_size (struct type *type)
1186{
78134374 1187 gdb_assert (type->code () == TYPE_CODE_ARRAY);
8dbb1375
HD
1188
1189 struct type *range_type = TYPE_INDEX_TYPE (type);
1190
24e99c6c 1191 if (type->dyn_prop (DYN_PROP_BYTE_STRIDE) == nullptr
8dbb1375
HD
1192 && has_static_range (TYPE_RANGE_DATA (range_type))
1193 && (!type_not_associated (type)
1194 && !type_not_allocated (type)))
1195 {
1196 LONGEST low_bound, high_bound;
1197 int stride;
1198 struct type *element_type;
1199
1200 /* If the array itself doesn't provide a stride value then take
1201 whatever stride the range provides. Don't update BIT_STRIDE as
1202 we don't want to place the stride value from the range into this
1203 arrays bit size field. */
1204 stride = TYPE_FIELD_BITSIZE (type, 0);
1205 if (stride == 0)
1206 stride = TYPE_BIT_STRIDE (range_type);
1207
1208 if (get_discrete_bounds (range_type, &low_bound, &high_bound) < 0)
1209 low_bound = high_bound = 0;
1210 element_type = check_typedef (TYPE_TARGET_TYPE (type));
1211 /* Be careful when setting the array length. Ada arrays can be
1212 empty arrays with the high_bound being smaller than the low_bound.
1213 In such cases, the array length should be zero. */
1214 if (high_bound < low_bound)
1215 TYPE_LENGTH (type) = 0;
1216 else if (stride != 0)
1217 {
1218 /* Ensure that the type length is always positive, even in the
1219 case where (for example in Fortran) we have a negative
1220 stride. It is possible to have a single element array with a
1221 negative stride in Fortran (this doesn't mean anything
1222 special, it's still just a single element array) so do
1223 consider that case when touching this code. */
1224 LONGEST element_count = std::abs (high_bound - low_bound + 1);
1225 TYPE_LENGTH (type)
1226 = ((std::abs (stride) * element_count) + 7) / 8;
1227 }
1228 else
1229 TYPE_LENGTH (type) =
1230 TYPE_LENGTH (element_type) * (high_bound - low_bound + 1);
1231
1232 return true;
1233 }
1234
1235 return false;
1236}
1237
7ba81444
MS
1238/* Create an array type using either a blank type supplied in
1239 RESULT_TYPE, or creating a new type, inheriting the objfile from
1240 RANGE_TYPE.
c906108c
SS
1241
1242 Elements will be of type ELEMENT_TYPE, the indices will be of type
1243 RANGE_TYPE.
1244
a405673c
JB
1245 BYTE_STRIDE_PROP, when not NULL, provides the array's byte stride.
1246 This byte stride property is added to the resulting array type
1247 as a DYN_PROP_BYTE_STRIDE. As a consequence, the BYTE_STRIDE_PROP
1248 argument can only be used to create types that are objfile-owned
1249 (see add_dyn_prop), meaning that either this function must be called
1250 with an objfile-owned RESULT_TYPE, or an objfile-owned RANGE_TYPE.
1251
1252 BIT_STRIDE is taken into account only when BYTE_STRIDE_PROP is NULL.
dc53a7ad
JB
1253 If BIT_STRIDE is not zero, build a packed array type whose element
1254 size is BIT_STRIDE. Otherwise, ignore this parameter.
1255
7ba81444
MS
1256 FIXME: Maybe we should check the TYPE_CODE of RESULT_TYPE to make
1257 sure it is TYPE_CODE_UNDEF before we bash it into an array
1258 type? */
c906108c
SS
1259
1260struct type *
dc53a7ad
JB
1261create_array_type_with_stride (struct type *result_type,
1262 struct type *element_type,
1263 struct type *range_type,
a405673c 1264 struct dynamic_prop *byte_stride_prop,
dc53a7ad 1265 unsigned int bit_stride)
c906108c 1266{
a405673c
JB
1267 if (byte_stride_prop != NULL
1268 && byte_stride_prop->kind == PROP_CONST)
1269 {
1270 /* The byte stride is actually not dynamic. Pretend we were
1271 called with bit_stride set instead of byte_stride_prop.
1272 This will give us the same result type, while avoiding
1273 the need to handle this as a special case. */
1274 bit_stride = byte_stride_prop->data.const_val * 8;
1275 byte_stride_prop = NULL;
1276 }
1277
c906108c 1278 if (result_type == NULL)
e9bb382b
UW
1279 result_type = alloc_type_copy (range_type);
1280
67607e24 1281 result_type->set_code (TYPE_CODE_ARRAY);
c906108c 1282 TYPE_TARGET_TYPE (result_type) = element_type;
5bbd8269 1283
5e33d5f4 1284 result_type->set_num_fields (1);
8dbb1375
HD
1285 TYPE_FIELDS (result_type) =
1286 (struct field *) TYPE_ZALLOC (result_type, sizeof (struct field));
1287 TYPE_INDEX_TYPE (result_type) = range_type;
1288 if (byte_stride_prop != NULL)
5c54719c 1289 result_type->add_dyn_prop (DYN_PROP_BYTE_STRIDE, *byte_stride_prop);
8dbb1375
HD
1290 else if (bit_stride > 0)
1291 TYPE_FIELD_BITSIZE (result_type, 0) = bit_stride;
80180f79 1292
8dbb1375 1293 if (!update_static_array_size (result_type))
80180f79
SA
1294 {
1295 /* This type is dynamic and its length needs to be computed
1296 on demand. In the meantime, avoid leaving the TYPE_LENGTH
1297 undefined by setting it to zero. Although we are not expected
1298 to trust TYPE_LENGTH in this case, setting the size to zero
1299 allows us to avoid allocating objects of random sizes in case
1300 we accidently do. */
1301 TYPE_LENGTH (result_type) = 0;
1302 }
1303
a9ff5f12 1304 /* TYPE_TARGET_STUB will take care of zero length arrays. */
c906108c 1305 if (TYPE_LENGTH (result_type) == 0)
876cecd0 1306 TYPE_TARGET_STUB (result_type) = 1;
c906108c 1307
c16abbde 1308 return result_type;
c906108c
SS
1309}
1310
dc53a7ad
JB
1311/* Same as create_array_type_with_stride but with no bit_stride
1312 (BIT_STRIDE = 0), thus building an unpacked array. */
1313
1314struct type *
1315create_array_type (struct type *result_type,
1316 struct type *element_type,
1317 struct type *range_type)
1318{
1319 return create_array_type_with_stride (result_type, element_type,
a405673c 1320 range_type, NULL, 0);
dc53a7ad
JB
1321}
1322
e3506a9f
UW
1323struct type *
1324lookup_array_range_type (struct type *element_type,
63375b74 1325 LONGEST low_bound, LONGEST high_bound)
e3506a9f 1326{
929b5ad4
JB
1327 struct type *index_type;
1328 struct type *range_type;
1329
1330 if (TYPE_OBJFILE_OWNED (element_type))
1331 index_type = objfile_type (TYPE_OWNER (element_type).objfile)->builtin_int;
1332 else
1333 index_type = builtin_type (get_type_arch (element_type))->builtin_int;
1334 range_type = create_static_range_type (NULL, index_type,
1335 low_bound, high_bound);
d8734c88 1336
e3506a9f
UW
1337 return create_array_type (NULL, element_type, range_type);
1338}
1339
7ba81444
MS
1340/* Create a string type using either a blank type supplied in
1341 RESULT_TYPE, or creating a new type. String types are similar
1342 enough to array of char types that we can use create_array_type to
1343 build the basic type and then bash it into a string type.
c906108c
SS
1344
1345 For fixed length strings, the range type contains 0 as the lower
1346 bound and the length of the string minus one as the upper bound.
1347
7ba81444
MS
1348 FIXME: Maybe we should check the TYPE_CODE of RESULT_TYPE to make
1349 sure it is TYPE_CODE_UNDEF before we bash it into a string
1350 type? */
c906108c
SS
1351
1352struct type *
3b7538c0
UW
1353create_string_type (struct type *result_type,
1354 struct type *string_char_type,
7ba81444 1355 struct type *range_type)
c906108c
SS
1356{
1357 result_type = create_array_type (result_type,
f290d38e 1358 string_char_type,
c906108c 1359 range_type);
67607e24 1360 result_type->set_code (TYPE_CODE_STRING);
c16abbde 1361 return result_type;
c906108c
SS
1362}
1363
e3506a9f
UW
1364struct type *
1365lookup_string_range_type (struct type *string_char_type,
63375b74 1366 LONGEST low_bound, LONGEST high_bound)
e3506a9f
UW
1367{
1368 struct type *result_type;
d8734c88 1369
e3506a9f
UW
1370 result_type = lookup_array_range_type (string_char_type,
1371 low_bound, high_bound);
67607e24 1372 result_type->set_code (TYPE_CODE_STRING);
e3506a9f
UW
1373 return result_type;
1374}
1375
c906108c 1376struct type *
fba45db2 1377create_set_type (struct type *result_type, struct type *domain_type)
c906108c 1378{
c906108c 1379 if (result_type == NULL)
e9bb382b
UW
1380 result_type = alloc_type_copy (domain_type);
1381
67607e24 1382 result_type->set_code (TYPE_CODE_SET);
5e33d5f4 1383 result_type->set_num_fields (1);
224c3ddb
SM
1384 TYPE_FIELDS (result_type)
1385 = (struct field *) TYPE_ZALLOC (result_type, sizeof (struct field));
c906108c 1386
74a9bb82 1387 if (!TYPE_STUB (domain_type))
c906108c 1388 {
f9780d5b 1389 LONGEST low_bound, high_bound, bit_length;
d8734c88 1390
c906108c
SS
1391 if (get_discrete_bounds (domain_type, &low_bound, &high_bound) < 0)
1392 low_bound = high_bound = 0;
1393 bit_length = high_bound - low_bound + 1;
1394 TYPE_LENGTH (result_type)
1395 = (bit_length + TARGET_CHAR_BIT - 1) / TARGET_CHAR_BIT;
f9780d5b 1396 if (low_bound >= 0)
876cecd0 1397 TYPE_UNSIGNED (result_type) = 1;
c906108c
SS
1398 }
1399 TYPE_FIELD_TYPE (result_type, 0) = domain_type;
1400
c16abbde 1401 return result_type;
c906108c
SS
1402}
1403
ea37ba09
DJ
1404/* Convert ARRAY_TYPE to a vector type. This may modify ARRAY_TYPE
1405 and any array types nested inside it. */
1406
1407void
1408make_vector_type (struct type *array_type)
1409{
1410 struct type *inner_array, *elt_type;
1411 int flags;
1412
1413 /* Find the innermost array type, in case the array is
1414 multi-dimensional. */
1415 inner_array = array_type;
78134374 1416 while (TYPE_TARGET_TYPE (inner_array)->code () == TYPE_CODE_ARRAY)
ea37ba09
DJ
1417 inner_array = TYPE_TARGET_TYPE (inner_array);
1418
1419 elt_type = TYPE_TARGET_TYPE (inner_array);
78134374 1420 if (elt_type->code () == TYPE_CODE_INT)
ea37ba09 1421 {
2844d6b5 1422 flags = TYPE_INSTANCE_FLAGS (elt_type) | TYPE_INSTANCE_FLAG_NOTTEXT;
ea37ba09
DJ
1423 elt_type = make_qualified_type (elt_type, flags, NULL);
1424 TYPE_TARGET_TYPE (inner_array) = elt_type;
1425 }
1426
876cecd0 1427 TYPE_VECTOR (array_type) = 1;
ea37ba09
DJ
1428}
1429
794ac428 1430struct type *
ac3aafc7
EZ
1431init_vector_type (struct type *elt_type, int n)
1432{
1433 struct type *array_type;
d8734c88 1434
e3506a9f 1435 array_type = lookup_array_range_type (elt_type, 0, n - 1);
ea37ba09 1436 make_vector_type (array_type);
ac3aafc7
EZ
1437 return array_type;
1438}
1439
09e2d7c7
DE
1440/* Internal routine called by TYPE_SELF_TYPE to return the type that TYPE
1441 belongs to. In c++ this is the class of "this", but TYPE_THIS_TYPE is too
1442 confusing. "self" is a common enough replacement for "this".
1443 TYPE must be one of TYPE_CODE_METHODPTR, TYPE_CODE_MEMBERPTR, or
1444 TYPE_CODE_METHOD. */
1445
1446struct type *
1447internal_type_self_type (struct type *type)
1448{
78134374 1449 switch (type->code ())
09e2d7c7
DE
1450 {
1451 case TYPE_CODE_METHODPTR:
1452 case TYPE_CODE_MEMBERPTR:
eaaf76ab
DE
1453 if (TYPE_SPECIFIC_FIELD (type) == TYPE_SPECIFIC_NONE)
1454 return NULL;
09e2d7c7
DE
1455 gdb_assert (TYPE_SPECIFIC_FIELD (type) == TYPE_SPECIFIC_SELF_TYPE);
1456 return TYPE_MAIN_TYPE (type)->type_specific.self_type;
1457 case TYPE_CODE_METHOD:
eaaf76ab
DE
1458 if (TYPE_SPECIFIC_FIELD (type) == TYPE_SPECIFIC_NONE)
1459 return NULL;
09e2d7c7
DE
1460 gdb_assert (TYPE_SPECIFIC_FIELD (type) == TYPE_SPECIFIC_FUNC);
1461 return TYPE_MAIN_TYPE (type)->type_specific.func_stuff->self_type;
1462 default:
1463 gdb_assert_not_reached ("bad type");
1464 }
1465}
1466
1467/* Set the type of the class that TYPE belongs to.
1468 In c++ this is the class of "this".
1469 TYPE must be one of TYPE_CODE_METHODPTR, TYPE_CODE_MEMBERPTR, or
1470 TYPE_CODE_METHOD. */
1471
1472void
1473set_type_self_type (struct type *type, struct type *self_type)
1474{
78134374 1475 switch (type->code ())
09e2d7c7
DE
1476 {
1477 case TYPE_CODE_METHODPTR:
1478 case TYPE_CODE_MEMBERPTR:
1479 if (TYPE_SPECIFIC_FIELD (type) == TYPE_SPECIFIC_NONE)
1480 TYPE_SPECIFIC_FIELD (type) = TYPE_SPECIFIC_SELF_TYPE;
1481 gdb_assert (TYPE_SPECIFIC_FIELD (type) == TYPE_SPECIFIC_SELF_TYPE);
1482 TYPE_MAIN_TYPE (type)->type_specific.self_type = self_type;
1483 break;
1484 case TYPE_CODE_METHOD:
1485 if (TYPE_SPECIFIC_FIELD (type) == TYPE_SPECIFIC_NONE)
1486 INIT_FUNC_SPECIFIC (type);
1487 gdb_assert (TYPE_SPECIFIC_FIELD (type) == TYPE_SPECIFIC_FUNC);
1488 TYPE_MAIN_TYPE (type)->type_specific.func_stuff->self_type = self_type;
1489 break;
1490 default:
1491 gdb_assert_not_reached ("bad type");
1492 }
1493}
1494
1495/* Smash TYPE to be a type of pointers to members of SELF_TYPE with type
0d5de010
DJ
1496 TO_TYPE. A member pointer is a wierd thing -- it amounts to a
1497 typed offset into a struct, e.g. "an int at offset 8". A MEMBER
1498 TYPE doesn't include the offset (that's the value of the MEMBER
1499 itself), but does include the structure type into which it points
1500 (for some reason).
c906108c 1501
7ba81444
MS
1502 When "smashing" the type, we preserve the objfile that the old type
1503 pointed to, since we aren't changing where the type is actually
c906108c
SS
1504 allocated. */
1505
1506void
09e2d7c7 1507smash_to_memberptr_type (struct type *type, struct type *self_type,
0d5de010 1508 struct type *to_type)
c906108c 1509{
2fdde8f8 1510 smash_type (type);
67607e24 1511 type->set_code (TYPE_CODE_MEMBERPTR);
c906108c 1512 TYPE_TARGET_TYPE (type) = to_type;
09e2d7c7 1513 set_type_self_type (type, self_type);
0d5de010
DJ
1514 /* Assume that a data member pointer is the same size as a normal
1515 pointer. */
50810684
UW
1516 TYPE_LENGTH (type)
1517 = gdbarch_ptr_bit (get_type_arch (to_type)) / TARGET_CHAR_BIT;
c906108c
SS
1518}
1519
0b92b5bb
TT
1520/* Smash TYPE to be a type of pointer to methods type TO_TYPE.
1521
1522 When "smashing" the type, we preserve the objfile that the old type
1523 pointed to, since we aren't changing where the type is actually
1524 allocated. */
1525
1526void
1527smash_to_methodptr_type (struct type *type, struct type *to_type)
1528{
1529 smash_type (type);
67607e24 1530 type->set_code (TYPE_CODE_METHODPTR);
0b92b5bb 1531 TYPE_TARGET_TYPE (type) = to_type;
09e2d7c7 1532 set_type_self_type (type, TYPE_SELF_TYPE (to_type));
0b92b5bb 1533 TYPE_LENGTH (type) = cplus_method_ptr_size (to_type);
0b92b5bb
TT
1534}
1535
09e2d7c7 1536/* Smash TYPE to be a type of method of SELF_TYPE with type TO_TYPE.
c906108c
SS
1537 METHOD just means `function that gets an extra "this" argument'.
1538
7ba81444
MS
1539 When "smashing" the type, we preserve the objfile that the old type
1540 pointed to, since we aren't changing where the type is actually
c906108c
SS
1541 allocated. */
1542
1543void
09e2d7c7 1544smash_to_method_type (struct type *type, struct type *self_type,
ad2f7632
DJ
1545 struct type *to_type, struct field *args,
1546 int nargs, int varargs)
c906108c 1547{
2fdde8f8 1548 smash_type (type);
67607e24 1549 type->set_code (TYPE_CODE_METHOD);
c906108c 1550 TYPE_TARGET_TYPE (type) = to_type;
09e2d7c7 1551 set_type_self_type (type, self_type);
ad2f7632 1552 TYPE_FIELDS (type) = args;
5e33d5f4 1553 type->set_num_fields (nargs);
ad2f7632 1554 if (varargs)
876cecd0 1555 TYPE_VARARGS (type) = 1;
c906108c 1556 TYPE_LENGTH (type) = 1; /* In practice, this is never needed. */
c906108c
SS
1557}
1558
a737d952 1559/* A wrapper of TYPE_NAME which calls error if the type is anonymous.
d8228535
JK
1560 Since GCC PR debug/47510 DWARF provides associated information to detect the
1561 anonymous class linkage name from its typedef.
1562
1563 Parameter TYPE should not yet have CHECK_TYPEDEF applied, this function will
1564 apply it itself. */
1565
1566const char *
a737d952 1567type_name_or_error (struct type *type)
d8228535
JK
1568{
1569 struct type *saved_type = type;
1570 const char *name;
1571 struct objfile *objfile;
1572
f168693b 1573 type = check_typedef (type);
d8228535 1574
7d93a1e0 1575 name = type->name ();
d8228535
JK
1576 if (name != NULL)
1577 return name;
1578
7d93a1e0 1579 name = saved_type->name ();
d8228535
JK
1580 objfile = TYPE_OBJFILE (saved_type);
1581 error (_("Invalid anonymous type %s [in module %s], GCC PR debug/47510 bug?"),
4262abfb
JK
1582 name ? name : "<anonymous>",
1583 objfile ? objfile_name (objfile) : "<arch>");
d8228535
JK
1584}
1585
7ba81444
MS
1586/* Lookup a typedef or primitive type named NAME, visible in lexical
1587 block BLOCK. If NOERR is nonzero, return zero if NAME is not
1588 suitably defined. */
c906108c
SS
1589
1590struct type *
e6c014f2 1591lookup_typename (const struct language_defn *language,
b858499d 1592 const char *name,
34eaf542 1593 const struct block *block, int noerr)
c906108c 1594{
52f0bd74 1595 struct symbol *sym;
c906108c 1596
1994afbf 1597 sym = lookup_symbol_in_language (name, block, VAR_DOMAIN,
d12307c1 1598 language->la_language, NULL).symbol;
c51fe631
DE
1599 if (sym != NULL && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
1600 return SYMBOL_TYPE (sym);
1601
c51fe631
DE
1602 if (noerr)
1603 return NULL;
1604 error (_("No type named %s."), name);
c906108c
SS
1605}
1606
1607struct type *
e6c014f2 1608lookup_unsigned_typename (const struct language_defn *language,
b858499d 1609 const char *name)
c906108c 1610{
224c3ddb 1611 char *uns = (char *) alloca (strlen (name) + 10);
c906108c
SS
1612
1613 strcpy (uns, "unsigned ");
1614 strcpy (uns + 9, name);
b858499d 1615 return lookup_typename (language, uns, NULL, 0);
c906108c
SS
1616}
1617
1618struct type *
b858499d 1619lookup_signed_typename (const struct language_defn *language, const char *name)
c906108c
SS
1620{
1621 struct type *t;
224c3ddb 1622 char *uns = (char *) alloca (strlen (name) + 8);
c906108c
SS
1623
1624 strcpy (uns, "signed ");
1625 strcpy (uns + 7, name);
b858499d 1626 t = lookup_typename (language, uns, NULL, 1);
7ba81444 1627 /* If we don't find "signed FOO" just try again with plain "FOO". */
c906108c
SS
1628 if (t != NULL)
1629 return t;
b858499d 1630 return lookup_typename (language, name, NULL, 0);
c906108c
SS
1631}
1632
1633/* Lookup a structure type named "struct NAME",
1634 visible in lexical block BLOCK. */
1635
1636struct type *
270140bd 1637lookup_struct (const char *name, const struct block *block)
c906108c 1638{
52f0bd74 1639 struct symbol *sym;
c906108c 1640
d12307c1 1641 sym = lookup_symbol (name, block, STRUCT_DOMAIN, 0).symbol;
c906108c
SS
1642
1643 if (sym == NULL)
1644 {
8a3fe4f8 1645 error (_("No struct type named %s."), name);
c906108c 1646 }
78134374 1647 if (SYMBOL_TYPE (sym)->code () != TYPE_CODE_STRUCT)
c906108c 1648 {
7ba81444
MS
1649 error (_("This context has class, union or enum %s, not a struct."),
1650 name);
c906108c
SS
1651 }
1652 return (SYMBOL_TYPE (sym));
1653}
1654
1655/* Lookup a union type named "union NAME",
1656 visible in lexical block BLOCK. */
1657
1658struct type *
270140bd 1659lookup_union (const char *name, const struct block *block)
c906108c 1660{
52f0bd74 1661 struct symbol *sym;
c5aa993b 1662 struct type *t;
c906108c 1663
d12307c1 1664 sym = lookup_symbol (name, block, STRUCT_DOMAIN, 0).symbol;
c906108c
SS
1665
1666 if (sym == NULL)
8a3fe4f8 1667 error (_("No union type named %s."), name);
c906108c 1668
c5aa993b 1669 t = SYMBOL_TYPE (sym);
c906108c 1670
78134374 1671 if (t->code () == TYPE_CODE_UNION)
c16abbde 1672 return t;
c906108c 1673
7ba81444
MS
1674 /* If we get here, it's not a union. */
1675 error (_("This context has class, struct or enum %s, not a union."),
1676 name);
c906108c
SS
1677}
1678
c906108c
SS
1679/* Lookup an enum type named "enum NAME",
1680 visible in lexical block BLOCK. */
1681
1682struct type *
270140bd 1683lookup_enum (const char *name, const struct block *block)
c906108c 1684{
52f0bd74 1685 struct symbol *sym;
c906108c 1686
d12307c1 1687 sym = lookup_symbol (name, block, STRUCT_DOMAIN, 0).symbol;
c906108c
SS
1688 if (sym == NULL)
1689 {
8a3fe4f8 1690 error (_("No enum type named %s."), name);
c906108c 1691 }
78134374 1692 if (SYMBOL_TYPE (sym)->code () != TYPE_CODE_ENUM)
c906108c 1693 {
7ba81444
MS
1694 error (_("This context has class, struct or union %s, not an enum."),
1695 name);
c906108c
SS
1696 }
1697 return (SYMBOL_TYPE (sym));
1698}
1699
1700/* Lookup a template type named "template NAME<TYPE>",
1701 visible in lexical block BLOCK. */
1702
1703struct type *
61f4b350 1704lookup_template_type (const char *name, struct type *type,
270140bd 1705 const struct block *block)
c906108c
SS
1706{
1707 struct symbol *sym;
7ba81444 1708 char *nam = (char *)
7d93a1e0 1709 alloca (strlen (name) + strlen (type->name ()) + 4);
d8734c88 1710
c906108c
SS
1711 strcpy (nam, name);
1712 strcat (nam, "<");
7d93a1e0 1713 strcat (nam, type->name ());
0963b4bd 1714 strcat (nam, " >"); /* FIXME, extra space still introduced in gcc? */
c906108c 1715
d12307c1 1716 sym = lookup_symbol (nam, block, VAR_DOMAIN, 0).symbol;
c906108c
SS
1717
1718 if (sym == NULL)
1719 {
8a3fe4f8 1720 error (_("No template type named %s."), name);
c906108c 1721 }
78134374 1722 if (SYMBOL_TYPE (sym)->code () != TYPE_CODE_STRUCT)
c906108c 1723 {
7ba81444
MS
1724 error (_("This context has class, union or enum %s, not a struct."),
1725 name);
c906108c
SS
1726 }
1727 return (SYMBOL_TYPE (sym));
1728}
1729
ef0bd204 1730/* See gdbtypes.h. */
c906108c 1731
ef0bd204
JB
1732struct_elt
1733lookup_struct_elt (struct type *type, const char *name, int noerr)
c906108c
SS
1734{
1735 int i;
1736
1737 for (;;)
1738 {
f168693b 1739 type = check_typedef (type);
78134374
SM
1740 if (type->code () != TYPE_CODE_PTR
1741 && type->code () != TYPE_CODE_REF)
c906108c
SS
1742 break;
1743 type = TYPE_TARGET_TYPE (type);
1744 }
1745
78134374
SM
1746 if (type->code () != TYPE_CODE_STRUCT
1747 && type->code () != TYPE_CODE_UNION)
c906108c 1748 {
2f408ecb
PA
1749 std::string type_name = type_to_string (type);
1750 error (_("Type %s is not a structure or union type."),
1751 type_name.c_str ());
c906108c
SS
1752 }
1753
1f704f76 1754 for (i = type->num_fields () - 1; i >= TYPE_N_BASECLASSES (type); i--)
c906108c 1755 {
0d5cff50 1756 const char *t_field_name = TYPE_FIELD_NAME (type, i);
c906108c 1757
db577aea 1758 if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
c906108c 1759 {
ef0bd204 1760 return {&TYPE_FIELD (type, i), TYPE_FIELD_BITPOS (type, i)};
c906108c 1761 }
f5a010c0
PM
1762 else if (!t_field_name || *t_field_name == '\0')
1763 {
ef0bd204
JB
1764 struct_elt elt
1765 = lookup_struct_elt (TYPE_FIELD_TYPE (type, i), name, 1);
1766 if (elt.field != NULL)
1767 {
1768 elt.offset += TYPE_FIELD_BITPOS (type, i);
1769 return elt;
1770 }
f5a010c0 1771 }
c906108c
SS
1772 }
1773
1774 /* OK, it's not in this class. Recursively check the baseclasses. */
1775 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1776 {
ef0bd204
JB
1777 struct_elt elt = lookup_struct_elt (TYPE_BASECLASS (type, i), name, 1);
1778 if (elt.field != NULL)
1779 return elt;
c906108c
SS
1780 }
1781
1782 if (noerr)
ef0bd204 1783 return {nullptr, 0};
c5aa993b 1784
2f408ecb
PA
1785 std::string type_name = type_to_string (type);
1786 error (_("Type %s has no component named %s."), type_name.c_str (), name);
c906108c
SS
1787}
1788
ef0bd204
JB
1789/* See gdbtypes.h. */
1790
1791struct type *
1792lookup_struct_elt_type (struct type *type, const char *name, int noerr)
1793{
1794 struct_elt elt = lookup_struct_elt (type, name, noerr);
1795 if (elt.field != NULL)
1796 return FIELD_TYPE (*elt.field);
1797 else
1798 return NULL;
1799}
1800
ed3ef339
DE
1801/* Store in *MAX the largest number representable by unsigned integer type
1802 TYPE. */
1803
1804void
1805get_unsigned_type_max (struct type *type, ULONGEST *max)
1806{
1807 unsigned int n;
1808
f168693b 1809 type = check_typedef (type);
78134374 1810 gdb_assert (type->code () == TYPE_CODE_INT && TYPE_UNSIGNED (type));
ed3ef339
DE
1811 gdb_assert (TYPE_LENGTH (type) <= sizeof (ULONGEST));
1812
1813 /* Written this way to avoid overflow. */
1814 n = TYPE_LENGTH (type) * TARGET_CHAR_BIT;
1815 *max = ((((ULONGEST) 1 << (n - 1)) - 1) << 1) | 1;
1816}
1817
1818/* Store in *MIN, *MAX the smallest and largest numbers representable by
1819 signed integer type TYPE. */
1820
1821void
1822get_signed_type_minmax (struct type *type, LONGEST *min, LONGEST *max)
1823{
1824 unsigned int n;
1825
f168693b 1826 type = check_typedef (type);
78134374 1827 gdb_assert (type->code () == TYPE_CODE_INT && !TYPE_UNSIGNED (type));
ed3ef339
DE
1828 gdb_assert (TYPE_LENGTH (type) <= sizeof (LONGEST));
1829
1830 n = TYPE_LENGTH (type) * TARGET_CHAR_BIT;
1831 *min = -((ULONGEST) 1 << (n - 1));
1832 *max = ((ULONGEST) 1 << (n - 1)) - 1;
1833}
1834
ae6ae975
DE
1835/* Internal routine called by TYPE_VPTR_FIELDNO to return the value of
1836 cplus_stuff.vptr_fieldno.
1837
1838 cplus_stuff is initialized to cplus_struct_default which does not
1839 set vptr_fieldno to -1 for portability reasons (IWBN to use C99
1840 designated initializers). We cope with that here. */
1841
1842int
1843internal_type_vptr_fieldno (struct type *type)
1844{
f168693b 1845 type = check_typedef (type);
78134374
SM
1846 gdb_assert (type->code () == TYPE_CODE_STRUCT
1847 || type->code () == TYPE_CODE_UNION);
ae6ae975
DE
1848 if (!HAVE_CPLUS_STRUCT (type))
1849 return -1;
1850 return TYPE_RAW_CPLUS_SPECIFIC (type)->vptr_fieldno;
1851}
1852
1853/* Set the value of cplus_stuff.vptr_fieldno. */
1854
1855void
1856set_type_vptr_fieldno (struct type *type, int fieldno)
1857{
f168693b 1858 type = check_typedef (type);
78134374
SM
1859 gdb_assert (type->code () == TYPE_CODE_STRUCT
1860 || type->code () == TYPE_CODE_UNION);
ae6ae975
DE
1861 if (!HAVE_CPLUS_STRUCT (type))
1862 ALLOCATE_CPLUS_STRUCT_TYPE (type);
1863 TYPE_RAW_CPLUS_SPECIFIC (type)->vptr_fieldno = fieldno;
1864}
1865
1866/* Internal routine called by TYPE_VPTR_BASETYPE to return the value of
1867 cplus_stuff.vptr_basetype. */
1868
1869struct type *
1870internal_type_vptr_basetype (struct type *type)
1871{
f168693b 1872 type = check_typedef (type);
78134374
SM
1873 gdb_assert (type->code () == TYPE_CODE_STRUCT
1874 || type->code () == TYPE_CODE_UNION);
ae6ae975
DE
1875 gdb_assert (TYPE_SPECIFIC_FIELD (type) == TYPE_SPECIFIC_CPLUS_STUFF);
1876 return TYPE_RAW_CPLUS_SPECIFIC (type)->vptr_basetype;
1877}
1878
1879/* Set the value of cplus_stuff.vptr_basetype. */
1880
1881void
1882set_type_vptr_basetype (struct type *type, struct type *basetype)
1883{
f168693b 1884 type = check_typedef (type);
78134374
SM
1885 gdb_assert (type->code () == TYPE_CODE_STRUCT
1886 || type->code () == TYPE_CODE_UNION);
ae6ae975
DE
1887 if (!HAVE_CPLUS_STRUCT (type))
1888 ALLOCATE_CPLUS_STRUCT_TYPE (type);
1889 TYPE_RAW_CPLUS_SPECIFIC (type)->vptr_basetype = basetype;
1890}
1891
81fe8080
DE
1892/* Lookup the vptr basetype/fieldno values for TYPE.
1893 If found store vptr_basetype in *BASETYPEP if non-NULL, and return
1894 vptr_fieldno. Also, if found and basetype is from the same objfile,
1895 cache the results.
1896 If not found, return -1 and ignore BASETYPEP.
1897 Callers should be aware that in some cases (for example,
c906108c 1898 the type or one of its baseclasses is a stub type and we are
d48cc9dd
DJ
1899 debugging a .o file, or the compiler uses DWARF-2 and is not GCC),
1900 this function will not be able to find the
7ba81444 1901 virtual function table pointer, and vptr_fieldno will remain -1 and
81fe8080 1902 vptr_basetype will remain NULL or incomplete. */
c906108c 1903
81fe8080
DE
1904int
1905get_vptr_fieldno (struct type *type, struct type **basetypep)
c906108c 1906{
f168693b 1907 type = check_typedef (type);
c906108c
SS
1908
1909 if (TYPE_VPTR_FIELDNO (type) < 0)
1910 {
1911 int i;
1912
7ba81444
MS
1913 /* We must start at zero in case the first (and only) baseclass
1914 is virtual (and hence we cannot share the table pointer). */
c906108c
SS
1915 for (i = 0; i < TYPE_N_BASECLASSES (type); i++)
1916 {
81fe8080
DE
1917 struct type *baseclass = check_typedef (TYPE_BASECLASS (type, i));
1918 int fieldno;
1919 struct type *basetype;
1920
1921 fieldno = get_vptr_fieldno (baseclass, &basetype);
1922 if (fieldno >= 0)
c906108c 1923 {
81fe8080 1924 /* If the type comes from a different objfile we can't cache
0963b4bd 1925 it, it may have a different lifetime. PR 2384 */
5ef73790 1926 if (TYPE_OBJFILE (type) == TYPE_OBJFILE (basetype))
81fe8080 1927 {
ae6ae975
DE
1928 set_type_vptr_fieldno (type, fieldno);
1929 set_type_vptr_basetype (type, basetype);
81fe8080
DE
1930 }
1931 if (basetypep)
1932 *basetypep = basetype;
1933 return fieldno;
c906108c
SS
1934 }
1935 }
81fe8080
DE
1936
1937 /* Not found. */
1938 return -1;
1939 }
1940 else
1941 {
1942 if (basetypep)
1943 *basetypep = TYPE_VPTR_BASETYPE (type);
1944 return TYPE_VPTR_FIELDNO (type);
c906108c
SS
1945 }
1946}
1947
44e1a9eb
DJ
1948static void
1949stub_noname_complaint (void)
1950{
b98664d3 1951 complaint (_("stub type has NULL name"));
44e1a9eb
DJ
1952}
1953
a405673c
JB
1954/* Return nonzero if TYPE has a DYN_PROP_BYTE_STRIDE dynamic property
1955 attached to it, and that property has a non-constant value. */
1956
1957static int
1958array_type_has_dynamic_stride (struct type *type)
1959{
24e99c6c 1960 struct dynamic_prop *prop = type->dyn_prop (DYN_PROP_BYTE_STRIDE);
a405673c
JB
1961
1962 return (prop != NULL && prop->kind != PROP_CONST);
1963}
1964
d98b7a16 1965/* Worker for is_dynamic_type. */
80180f79 1966
d98b7a16 1967static int
ee715b5a 1968is_dynamic_type_internal (struct type *type, int top_level)
80180f79
SA
1969{
1970 type = check_typedef (type);
1971
e771e4be 1972 /* We only want to recognize references at the outermost level. */
78134374 1973 if (top_level && type->code () == TYPE_CODE_REF)
e771e4be
PMR
1974 type = check_typedef (TYPE_TARGET_TYPE (type));
1975
3cdcd0ce
JB
1976 /* Types that have a dynamic TYPE_DATA_LOCATION are considered
1977 dynamic, even if the type itself is statically defined.
1978 From a user's point of view, this may appear counter-intuitive;
1979 but it makes sense in this context, because the point is to determine
1980 whether any part of the type needs to be resolved before it can
1981 be exploited. */
1982 if (TYPE_DATA_LOCATION (type) != NULL
1983 && (TYPE_DATA_LOCATION_KIND (type) == PROP_LOCEXPR
1984 || TYPE_DATA_LOCATION_KIND (type) == PROP_LOCLIST))
1985 return 1;
1986
3f2f83dd
KB
1987 if (TYPE_ASSOCIATED_PROP (type))
1988 return 1;
1989
1990 if (TYPE_ALLOCATED_PROP (type))
1991 return 1;
1992
24e99c6c 1993 struct dynamic_prop *prop = type->dyn_prop (DYN_PROP_VARIANT_PARTS);
ef83a141
TT
1994 if (prop != nullptr && prop->kind != PROP_TYPE)
1995 return 1;
1996
f8e89861
TT
1997 if (TYPE_HAS_DYNAMIC_LENGTH (type))
1998 return 1;
1999
78134374 2000 switch (type->code ())
80180f79 2001 {
6f8a3220 2002 case TYPE_CODE_RANGE:
ddb87a81
JB
2003 {
2004 /* A range type is obviously dynamic if it has at least one
2005 dynamic bound. But also consider the range type to be
2006 dynamic when its subtype is dynamic, even if the bounds
2007 of the range type are static. It allows us to assume that
2008 the subtype of a static range type is also static. */
2009 return (!has_static_range (TYPE_RANGE_DATA (type))
ee715b5a 2010 || is_dynamic_type_internal (TYPE_TARGET_TYPE (type), 0));
ddb87a81 2011 }
6f8a3220 2012
216a7e6b
AB
2013 case TYPE_CODE_STRING:
2014 /* Strings are very much like an array of characters, and can be
2015 treated as one here. */
80180f79
SA
2016 case TYPE_CODE_ARRAY:
2017 {
1f704f76 2018 gdb_assert (type->num_fields () == 1);
6f8a3220 2019
a405673c 2020 /* The array is dynamic if either the bounds are dynamic... */
ee715b5a 2021 if (is_dynamic_type_internal (TYPE_INDEX_TYPE (type), 0))
80180f79 2022 return 1;
a405673c
JB
2023 /* ... or the elements it contains have a dynamic contents... */
2024 if (is_dynamic_type_internal (TYPE_TARGET_TYPE (type), 0))
2025 return 1;
2026 /* ... or if it has a dynamic stride... */
2027 if (array_type_has_dynamic_stride (type))
2028 return 1;
2029 return 0;
80180f79 2030 }
012370f6
TT
2031
2032 case TYPE_CODE_STRUCT:
2033 case TYPE_CODE_UNION:
2034 {
2035 int i;
2036
7d79de9a
TT
2037 bool is_cplus = HAVE_CPLUS_STRUCT (type);
2038
1f704f76 2039 for (i = 0; i < type->num_fields (); ++i)
7d79de9a
TT
2040 {
2041 /* Static fields can be ignored here. */
2042 if (field_is_static (&TYPE_FIELD (type, i)))
2043 continue;
2044 /* If the field has dynamic type, then so does TYPE. */
2045 if (is_dynamic_type_internal (TYPE_FIELD_TYPE (type, i), 0))
2046 return 1;
2047 /* If the field is at a fixed offset, then it is not
2048 dynamic. */
2049 if (TYPE_FIELD_LOC_KIND (type, i) != FIELD_LOC_KIND_DWARF_BLOCK)
2050 continue;
2051 /* Do not consider C++ virtual base types to be dynamic
2052 due to the field's offset being dynamic; these are
2053 handled via other means. */
2054 if (is_cplus && BASETYPE_VIA_VIRTUAL (type, i))
2055 continue;
012370f6 2056 return 1;
7d79de9a 2057 }
012370f6
TT
2058 }
2059 break;
80180f79 2060 }
92e2a17f
TT
2061
2062 return 0;
80180f79
SA
2063}
2064
d98b7a16
TT
2065/* See gdbtypes.h. */
2066
2067int
2068is_dynamic_type (struct type *type)
2069{
ee715b5a 2070 return is_dynamic_type_internal (type, 1);
d98b7a16
TT
2071}
2072
df25ebbd 2073static struct type *resolve_dynamic_type_internal
ee715b5a 2074 (struct type *type, struct property_addr_info *addr_stack, int top_level);
d98b7a16 2075
df25ebbd
JB
2076/* Given a dynamic range type (dyn_range_type) and a stack of
2077 struct property_addr_info elements, return a static version
2078 of that type. */
d190df30 2079
80180f79 2080static struct type *
df25ebbd
JB
2081resolve_dynamic_range (struct type *dyn_range_type,
2082 struct property_addr_info *addr_stack)
80180f79
SA
2083{
2084 CORE_ADDR value;
ddb87a81 2085 struct type *static_range_type, *static_target_type;
80180f79 2086 const struct dynamic_prop *prop;
5bbd8269 2087 struct dynamic_prop low_bound, high_bound, stride;
80180f79 2088
78134374 2089 gdb_assert (dyn_range_type->code () == TYPE_CODE_RANGE);
80180f79 2090
6f8a3220 2091 prop = &TYPE_RANGE_DATA (dyn_range_type)->low;
63e43d3a 2092 if (dwarf2_evaluate_property (prop, NULL, addr_stack, &value))
80180f79
SA
2093 {
2094 low_bound.kind = PROP_CONST;
2095 low_bound.data.const_val = value;
2096 }
2097 else
2098 {
2099 low_bound.kind = PROP_UNDEFINED;
2100 low_bound.data.const_val = 0;
2101 }
2102
6f8a3220 2103 prop = &TYPE_RANGE_DATA (dyn_range_type)->high;
63e43d3a 2104 if (dwarf2_evaluate_property (prop, NULL, addr_stack, &value))
80180f79
SA
2105 {
2106 high_bound.kind = PROP_CONST;
2107 high_bound.data.const_val = value;
c451ebe5 2108
6f8a3220 2109 if (TYPE_RANGE_DATA (dyn_range_type)->flag_upper_bound_is_count)
c451ebe5
SA
2110 high_bound.data.const_val
2111 = low_bound.data.const_val + high_bound.data.const_val - 1;
80180f79
SA
2112 }
2113 else
2114 {
2115 high_bound.kind = PROP_UNDEFINED;
2116 high_bound.data.const_val = 0;
2117 }
2118
5bbd8269
AB
2119 bool byte_stride_p = TYPE_RANGE_DATA (dyn_range_type)->flag_is_byte_stride;
2120 prop = &TYPE_RANGE_DATA (dyn_range_type)->stride;
2121 if (dwarf2_evaluate_property (prop, NULL, addr_stack, &value))
2122 {
2123 stride.kind = PROP_CONST;
2124 stride.data.const_val = value;
2125
2126 /* If we have a bit stride that is not an exact number of bytes then
2127 I really don't think this is going to work with current GDB, the
2128 array indexing code in GDB seems to be pretty heavily tied to byte
2129 offsets right now. Assuming 8 bits in a byte. */
2130 struct gdbarch *gdbarch = get_type_arch (dyn_range_type);
2131 int unit_size = gdbarch_addressable_memory_unit_size (gdbarch);
2132 if (!byte_stride_p && (value % (unit_size * 8)) != 0)
2133 error (_("bit strides that are not a multiple of the byte size "
2134 "are currently not supported"));
2135 }
2136 else
2137 {
2138 stride.kind = PROP_UNDEFINED;
2139 stride.data.const_val = 0;
2140 byte_stride_p = true;
2141 }
2142
ddb87a81
JB
2143 static_target_type
2144 = resolve_dynamic_type_internal (TYPE_TARGET_TYPE (dyn_range_type),
ee715b5a 2145 addr_stack, 0);
4e962e74 2146 LONGEST bias = TYPE_RANGE_DATA (dyn_range_type)->bias;
5bbd8269
AB
2147 static_range_type = create_range_type_with_stride
2148 (copy_type (dyn_range_type), static_target_type,
2149 &low_bound, &high_bound, bias, &stride, byte_stride_p);
6f8a3220
JB
2150 TYPE_RANGE_DATA (static_range_type)->flag_bound_evaluated = 1;
2151 return static_range_type;
2152}
2153
216a7e6b
AB
2154/* Resolves dynamic bound values of an array or string type TYPE to static
2155 ones. ADDR_STACK is a stack of struct property_addr_info to be used if
2156 needed during the dynamic resolution. */
6f8a3220
JB
2157
2158static struct type *
216a7e6b
AB
2159resolve_dynamic_array_or_string (struct type *type,
2160 struct property_addr_info *addr_stack)
6f8a3220
JB
2161{
2162 CORE_ADDR value;
2163 struct type *elt_type;
2164 struct type *range_type;
2165 struct type *ary_dim;
3f2f83dd 2166 struct dynamic_prop *prop;
a405673c 2167 unsigned int bit_stride = 0;
6f8a3220 2168
216a7e6b
AB
2169 /* For dynamic type resolution strings can be treated like arrays of
2170 characters. */
78134374
SM
2171 gdb_assert (type->code () == TYPE_CODE_ARRAY
2172 || type->code () == TYPE_CODE_STRING);
6f8a3220 2173
3f2f83dd
KB
2174 type = copy_type (type);
2175
6f8a3220
JB
2176 elt_type = type;
2177 range_type = check_typedef (TYPE_INDEX_TYPE (elt_type));
df25ebbd 2178 range_type = resolve_dynamic_range (range_type, addr_stack);
6f8a3220 2179
3f2f83dd
KB
2180 /* Resolve allocated/associated here before creating a new array type, which
2181 will update the length of the array accordingly. */
2182 prop = TYPE_ALLOCATED_PROP (type);
2183 if (prop != NULL && dwarf2_evaluate_property (prop, NULL, addr_stack, &value))
2184 {
2185 TYPE_DYN_PROP_ADDR (prop) = value;
2186 TYPE_DYN_PROP_KIND (prop) = PROP_CONST;
2187 }
2188 prop = TYPE_ASSOCIATED_PROP (type);
2189 if (prop != NULL && dwarf2_evaluate_property (prop, NULL, addr_stack, &value))
2190 {
2191 TYPE_DYN_PROP_ADDR (prop) = value;
2192 TYPE_DYN_PROP_KIND (prop) = PROP_CONST;
2193 }
2194
80180f79
SA
2195 ary_dim = check_typedef (TYPE_TARGET_TYPE (elt_type));
2196
78134374 2197 if (ary_dim != NULL && ary_dim->code () == TYPE_CODE_ARRAY)
216a7e6b 2198 elt_type = resolve_dynamic_array_or_string (ary_dim, addr_stack);
80180f79
SA
2199 else
2200 elt_type = TYPE_TARGET_TYPE (type);
2201
24e99c6c 2202 prop = type->dyn_prop (DYN_PROP_BYTE_STRIDE);
a405673c
JB
2203 if (prop != NULL)
2204 {
603490bf 2205 if (dwarf2_evaluate_property (prop, NULL, addr_stack, &value))
a405673c 2206 {
7aa91313 2207 type->remove_dyn_prop (DYN_PROP_BYTE_STRIDE);
a405673c
JB
2208 bit_stride = (unsigned int) (value * 8);
2209 }
2210 else
2211 {
2212 /* Could be a bug in our code, but it could also happen
2213 if the DWARF info is not correct. Issue a warning,
2214 and assume no byte/bit stride (leave bit_stride = 0). */
2215 warning (_("cannot determine array stride for type %s"),
7d93a1e0 2216 type->name () ? type->name () : "<no name>");
a405673c
JB
2217 }
2218 }
2219 else
2220 bit_stride = TYPE_FIELD_BITSIZE (type, 0);
2221
2222 return create_array_type_with_stride (type, elt_type, range_type, NULL,
2223 bit_stride);
80180f79
SA
2224}
2225
012370f6 2226/* Resolve dynamic bounds of members of the union TYPE to static
df25ebbd
JB
2227 bounds. ADDR_STACK is a stack of struct property_addr_info
2228 to be used if needed during the dynamic resolution. */
012370f6
TT
2229
2230static struct type *
df25ebbd
JB
2231resolve_dynamic_union (struct type *type,
2232 struct property_addr_info *addr_stack)
012370f6
TT
2233{
2234 struct type *resolved_type;
2235 int i;
2236 unsigned int max_len = 0;
2237
78134374 2238 gdb_assert (type->code () == TYPE_CODE_UNION);
012370f6
TT
2239
2240 resolved_type = copy_type (type);
2241 TYPE_FIELDS (resolved_type)
224c3ddb 2242 = (struct field *) TYPE_ALLOC (resolved_type,
1f704f76 2243 resolved_type->num_fields ()
224c3ddb 2244 * sizeof (struct field));
012370f6
TT
2245 memcpy (TYPE_FIELDS (resolved_type),
2246 TYPE_FIELDS (type),
1f704f76
SM
2247 resolved_type->num_fields () * sizeof (struct field));
2248 for (i = 0; i < resolved_type->num_fields (); ++i)
012370f6
TT
2249 {
2250 struct type *t;
2251
2252 if (field_is_static (&TYPE_FIELD (type, i)))
2253 continue;
2254
d98b7a16 2255 t = resolve_dynamic_type_internal (TYPE_FIELD_TYPE (resolved_type, i),
ee715b5a 2256 addr_stack, 0);
012370f6
TT
2257 TYPE_FIELD_TYPE (resolved_type, i) = t;
2258 if (TYPE_LENGTH (t) > max_len)
2259 max_len = TYPE_LENGTH (t);
2260 }
2261
2262 TYPE_LENGTH (resolved_type) = max_len;
2263 return resolved_type;
2264}
2265
ef83a141
TT
2266/* See gdbtypes.h. */
2267
2268bool
2269variant::matches (ULONGEST value, bool is_unsigned) const
2270{
2271 for (const discriminant_range &range : discriminants)
2272 if (range.contains (value, is_unsigned))
2273 return true;
2274 return false;
2275}
2276
2277static void
2278compute_variant_fields_inner (struct type *type,
2279 struct property_addr_info *addr_stack,
2280 const variant_part &part,
2281 std::vector<bool> &flags);
2282
2283/* A helper function to determine which variant fields will be active.
2284 This handles both the variant's direct fields, and any variant
2285 parts embedded in this variant. TYPE is the type we're examining.
2286 ADDR_STACK holds information about the concrete object. VARIANT is
2287 the current variant to be handled. FLAGS is where the results are
2288 stored -- this function sets the Nth element in FLAGS if the
2289 corresponding field is enabled. ENABLED is whether this variant is
2290 enabled or not. */
2291
2292static void
2293compute_variant_fields_recurse (struct type *type,
2294 struct property_addr_info *addr_stack,
2295 const variant &variant,
2296 std::vector<bool> &flags,
2297 bool enabled)
2298{
2299 for (int field = variant.first_field; field < variant.last_field; ++field)
2300 flags[field] = enabled;
2301
2302 for (const variant_part &new_part : variant.parts)
2303 {
2304 if (enabled)
2305 compute_variant_fields_inner (type, addr_stack, new_part, flags);
2306 else
2307 {
2308 for (const auto &sub_variant : new_part.variants)
2309 compute_variant_fields_recurse (type, addr_stack, sub_variant,
2310 flags, enabled);
2311 }
2312 }
2313}
2314
2315/* A helper function to determine which variant fields will be active.
2316 This evaluates the discriminant, decides which variant (if any) is
2317 active, and then updates FLAGS to reflect which fields should be
2318 available. TYPE is the type we're examining. ADDR_STACK holds
2319 information about the concrete object. VARIANT is the current
2320 variant to be handled. FLAGS is where the results are stored --
2321 this function sets the Nth element in FLAGS if the corresponding
2322 field is enabled. */
2323
2324static void
2325compute_variant_fields_inner (struct type *type,
2326 struct property_addr_info *addr_stack,
2327 const variant_part &part,
2328 std::vector<bool> &flags)
2329{
2330 /* Evaluate the discriminant. */
2331 gdb::optional<ULONGEST> discr_value;
2332 if (part.discriminant_index != -1)
2333 {
2334 int idx = part.discriminant_index;
2335
2336 if (TYPE_FIELD_LOC_KIND (type, idx) != FIELD_LOC_KIND_BITPOS)
2337 error (_("Cannot determine struct field location"
2338 " (invalid location kind)"));
2339
b249d2c2
TT
2340 if (addr_stack->valaddr.data () != NULL)
2341 discr_value = unpack_field_as_long (type, addr_stack->valaddr.data (),
2342 idx);
ef83a141
TT
2343 else
2344 {
2345 CORE_ADDR addr = (addr_stack->addr
2346 + (TYPE_FIELD_BITPOS (type, idx)
2347 / TARGET_CHAR_BIT));
2348
2349 LONGEST bitsize = TYPE_FIELD_BITSIZE (type, idx);
2350 LONGEST size = bitsize / 8;
2351 if (size == 0)
2352 size = TYPE_LENGTH (TYPE_FIELD_TYPE (type, idx));
2353
2354 gdb_byte bits[sizeof (ULONGEST)];
2355 read_memory (addr, bits, size);
2356
2357 LONGEST bitpos = (TYPE_FIELD_BITPOS (type, idx)
2358 % TARGET_CHAR_BIT);
2359
2360 discr_value = unpack_bits_as_long (TYPE_FIELD_TYPE (type, idx),
2361 bits, bitpos, bitsize);
2362 }
2363 }
2364
2365 /* Go through each variant and see which applies. */
2366 const variant *default_variant = nullptr;
2367 const variant *applied_variant = nullptr;
2368 for (const auto &variant : part.variants)
2369 {
2370 if (variant.is_default ())
2371 default_variant = &variant;
2372 else if (discr_value.has_value ()
2373 && variant.matches (*discr_value, part.is_unsigned))
2374 {
2375 applied_variant = &variant;
2376 break;
2377 }
2378 }
2379 if (applied_variant == nullptr)
2380 applied_variant = default_variant;
2381
2382 for (const auto &variant : part.variants)
2383 compute_variant_fields_recurse (type, addr_stack, variant,
2384 flags, applied_variant == &variant);
2385}
2386
2387/* Determine which variant fields are available in TYPE. The enabled
2388 fields are stored in RESOLVED_TYPE. ADDR_STACK holds information
2389 about the concrete object. PARTS describes the top-level variant
2390 parts for this type. */
2391
2392static void
2393compute_variant_fields (struct type *type,
2394 struct type *resolved_type,
2395 struct property_addr_info *addr_stack,
2396 const gdb::array_view<variant_part> &parts)
2397{
2398 /* Assume all fields are included by default. */
1f704f76 2399 std::vector<bool> flags (resolved_type->num_fields (), true);
ef83a141
TT
2400
2401 /* Now disable fields based on the variants that control them. */
2402 for (const auto &part : parts)
2403 compute_variant_fields_inner (type, addr_stack, part, flags);
2404
5e33d5f4
SM
2405 resolved_type->set_num_fields
2406 (std::count (flags.begin (), flags.end (), true));
ef83a141
TT
2407 TYPE_FIELDS (resolved_type)
2408 = (struct field *) TYPE_ALLOC (resolved_type,
1f704f76 2409 resolved_type->num_fields ()
ef83a141
TT
2410 * sizeof (struct field));
2411 int out = 0;
1f704f76 2412 for (int i = 0; i < type->num_fields (); ++i)
ef83a141
TT
2413 {
2414 if (!flags[i])
2415 continue;
2416
2417 TYPE_FIELD (resolved_type, out) = TYPE_FIELD (type, i);
2418 ++out;
2419 }
2420}
2421
012370f6 2422/* Resolve dynamic bounds of members of the struct TYPE to static
df25ebbd
JB
2423 bounds. ADDR_STACK is a stack of struct property_addr_info to
2424 be used if needed during the dynamic resolution. */
012370f6
TT
2425
2426static struct type *
df25ebbd
JB
2427resolve_dynamic_struct (struct type *type,
2428 struct property_addr_info *addr_stack)
012370f6
TT
2429{
2430 struct type *resolved_type;
2431 int i;
6908c509 2432 unsigned resolved_type_bit_length = 0;
012370f6 2433
78134374 2434 gdb_assert (type->code () == TYPE_CODE_STRUCT);
1f704f76 2435 gdb_assert (type->num_fields () > 0);
012370f6
TT
2436
2437 resolved_type = copy_type (type);
ef83a141 2438
24e99c6c 2439 dynamic_prop *variant_prop = resolved_type->dyn_prop (DYN_PROP_VARIANT_PARTS);
ef83a141
TT
2440 if (variant_prop != nullptr && variant_prop->kind == PROP_VARIANT_PARTS)
2441 {
2442 compute_variant_fields (type, resolved_type, addr_stack,
2443 *variant_prop->data.variant_parts);
2444 /* We want to leave the property attached, so that the Rust code
2445 can tell whether the type was originally an enum. */
2446 variant_prop->kind = PROP_TYPE;
2447 variant_prop->data.original_type = type;
2448 }
2449 else
2450 {
2451 TYPE_FIELDS (resolved_type)
2452 = (struct field *) TYPE_ALLOC (resolved_type,
1f704f76 2453 resolved_type->num_fields ()
ef83a141
TT
2454 * sizeof (struct field));
2455 memcpy (TYPE_FIELDS (resolved_type),
2456 TYPE_FIELDS (type),
1f704f76 2457 resolved_type->num_fields () * sizeof (struct field));
ef83a141
TT
2458 }
2459
1f704f76 2460 for (i = 0; i < resolved_type->num_fields (); ++i)
012370f6 2461 {
6908c509 2462 unsigned new_bit_length;
df25ebbd 2463 struct property_addr_info pinfo;
012370f6 2464
ef83a141 2465 if (field_is_static (&TYPE_FIELD (resolved_type, i)))
012370f6
TT
2466 continue;
2467
7d79de9a
TT
2468 if (TYPE_FIELD_LOC_KIND (resolved_type, i) == FIELD_LOC_KIND_DWARF_BLOCK)
2469 {
2470 struct dwarf2_property_baton baton;
2471 baton.property_type
2472 = lookup_pointer_type (TYPE_FIELD_TYPE (resolved_type, i));
2473 baton.locexpr = *TYPE_FIELD_DWARF_BLOCK (resolved_type, i);
2474
2475 struct dynamic_prop prop;
2476 prop.kind = PROP_LOCEXPR;
2477 prop.data.baton = &baton;
2478
2479 CORE_ADDR addr;
2480 if (dwarf2_evaluate_property (&prop, nullptr, addr_stack, &addr,
2481 true))
2482 SET_FIELD_BITPOS (TYPE_FIELD (resolved_type, i),
2483 TARGET_CHAR_BIT * (addr - addr_stack->addr));
2484 }
2485
6908c509
JB
2486 /* As we know this field is not a static field, the field's
2487 field_loc_kind should be FIELD_LOC_KIND_BITPOS. Verify
2488 this is the case, but only trigger a simple error rather
2489 than an internal error if that fails. While failing
2490 that verification indicates a bug in our code, the error
2491 is not severe enough to suggest to the user he stops
2492 his debugging session because of it. */
ef83a141 2493 if (TYPE_FIELD_LOC_KIND (resolved_type, i) != FIELD_LOC_KIND_BITPOS)
6908c509
JB
2494 error (_("Cannot determine struct field location"
2495 " (invalid location kind)"));
df25ebbd 2496
ef83a141 2497 pinfo.type = check_typedef (TYPE_FIELD_TYPE (resolved_type, i));
c3345124 2498 pinfo.valaddr = addr_stack->valaddr;
9920b434
BH
2499 pinfo.addr
2500 = (addr_stack->addr
2501 + (TYPE_FIELD_BITPOS (resolved_type, i) / TARGET_CHAR_BIT));
df25ebbd
JB
2502 pinfo.next = addr_stack;
2503
2504 TYPE_FIELD_TYPE (resolved_type, i)
2505 = resolve_dynamic_type_internal (TYPE_FIELD_TYPE (resolved_type, i),
ee715b5a 2506 &pinfo, 0);
df25ebbd
JB
2507 gdb_assert (TYPE_FIELD_LOC_KIND (resolved_type, i)
2508 == FIELD_LOC_KIND_BITPOS);
2509
6908c509
JB
2510 new_bit_length = TYPE_FIELD_BITPOS (resolved_type, i);
2511 if (TYPE_FIELD_BITSIZE (resolved_type, i) != 0)
2512 new_bit_length += TYPE_FIELD_BITSIZE (resolved_type, i);
2513 else
2514 new_bit_length += (TYPE_LENGTH (TYPE_FIELD_TYPE (resolved_type, i))
2515 * TARGET_CHAR_BIT);
2516
2517 /* Normally, we would use the position and size of the last field
2518 to determine the size of the enclosing structure. But GCC seems
2519 to be encoding the position of some fields incorrectly when
2520 the struct contains a dynamic field that is not placed last.
2521 So we compute the struct size based on the field that has
2522 the highest position + size - probably the best we can do. */
2523 if (new_bit_length > resolved_type_bit_length)
2524 resolved_type_bit_length = new_bit_length;
012370f6
TT
2525 }
2526
9920b434
BH
2527 /* The length of a type won't change for fortran, but it does for C and Ada.
2528 For fortran the size of dynamic fields might change over time but not the
2529 type length of the structure. If we adapt it, we run into problems
2530 when calculating the element offset for arrays of structs. */
2531 if (current_language->la_language != language_fortran)
2532 TYPE_LENGTH (resolved_type)
2533 = (resolved_type_bit_length + TARGET_CHAR_BIT - 1) / TARGET_CHAR_BIT;
6908c509 2534
9e195661
PMR
2535 /* The Ada language uses this field as a cache for static fixed types: reset
2536 it as RESOLVED_TYPE must have its own static fixed type. */
2537 TYPE_TARGET_TYPE (resolved_type) = NULL;
2538
012370f6
TT
2539 return resolved_type;
2540}
2541
d98b7a16 2542/* Worker for resolved_dynamic_type. */
80180f79 2543
d98b7a16 2544static struct type *
df25ebbd 2545resolve_dynamic_type_internal (struct type *type,
ee715b5a
PMR
2546 struct property_addr_info *addr_stack,
2547 int top_level)
80180f79
SA
2548{
2549 struct type *real_type = check_typedef (type);
f8e89861 2550 struct type *resolved_type = nullptr;
d9823cbb 2551 struct dynamic_prop *prop;
3cdcd0ce 2552 CORE_ADDR value;
80180f79 2553
ee715b5a 2554 if (!is_dynamic_type_internal (real_type, top_level))
80180f79
SA
2555 return type;
2556
f8e89861
TT
2557 gdb::optional<CORE_ADDR> type_length;
2558 prop = TYPE_DYNAMIC_LENGTH (type);
2559 if (prop != NULL
2560 && dwarf2_evaluate_property (prop, NULL, addr_stack, &value))
2561 type_length = value;
2562
78134374 2563 if (type->code () == TYPE_CODE_TYPEDEF)
6f8a3220 2564 {
cac9b138
JK
2565 resolved_type = copy_type (type);
2566 TYPE_TARGET_TYPE (resolved_type)
ee715b5a
PMR
2567 = resolve_dynamic_type_internal (TYPE_TARGET_TYPE (type), addr_stack,
2568 top_level);
5537b577
JK
2569 }
2570 else
2571 {
2572 /* Before trying to resolve TYPE, make sure it is not a stub. */
2573 type = real_type;
012370f6 2574
78134374 2575 switch (type->code ())
5537b577 2576 {
e771e4be
PMR
2577 case TYPE_CODE_REF:
2578 {
2579 struct property_addr_info pinfo;
2580
2581 pinfo.type = check_typedef (TYPE_TARGET_TYPE (type));
b249d2c2
TT
2582 pinfo.valaddr = {};
2583 if (addr_stack->valaddr.data () != NULL)
2584 pinfo.addr = extract_typed_address (addr_stack->valaddr.data (),
2585 type);
c3345124
JB
2586 else
2587 pinfo.addr = read_memory_typed_address (addr_stack->addr, type);
e771e4be
PMR
2588 pinfo.next = addr_stack;
2589
2590 resolved_type = copy_type (type);
2591 TYPE_TARGET_TYPE (resolved_type)
2592 = resolve_dynamic_type_internal (TYPE_TARGET_TYPE (type),
2593 &pinfo, top_level);
2594 break;
2595 }
2596
216a7e6b
AB
2597 case TYPE_CODE_STRING:
2598 /* Strings are very much like an array of characters, and can be
2599 treated as one here. */
5537b577 2600 case TYPE_CODE_ARRAY:
216a7e6b 2601 resolved_type = resolve_dynamic_array_or_string (type, addr_stack);
5537b577
JK
2602 break;
2603
2604 case TYPE_CODE_RANGE:
df25ebbd 2605 resolved_type = resolve_dynamic_range (type, addr_stack);
5537b577
JK
2606 break;
2607
2608 case TYPE_CODE_UNION:
df25ebbd 2609 resolved_type = resolve_dynamic_union (type, addr_stack);
5537b577
JK
2610 break;
2611
2612 case TYPE_CODE_STRUCT:
df25ebbd 2613 resolved_type = resolve_dynamic_struct (type, addr_stack);
5537b577
JK
2614 break;
2615 }
6f8a3220 2616 }
80180f79 2617
f8e89861
TT
2618 if (resolved_type == nullptr)
2619 return type;
2620
2621 if (type_length.has_value ())
2622 {
2623 TYPE_LENGTH (resolved_type) = *type_length;
7aa91313 2624 resolved_type->remove_dyn_prop (DYN_PROP_BYTE_SIZE);
f8e89861
TT
2625 }
2626
3cdcd0ce
JB
2627 /* Resolve data_location attribute. */
2628 prop = TYPE_DATA_LOCATION (resolved_type);
63e43d3a
PMR
2629 if (prop != NULL
2630 && dwarf2_evaluate_property (prop, NULL, addr_stack, &value))
3cdcd0ce 2631 {
d9823cbb
KB
2632 TYPE_DYN_PROP_ADDR (prop) = value;
2633 TYPE_DYN_PROP_KIND (prop) = PROP_CONST;
3cdcd0ce 2634 }
3cdcd0ce 2635
80180f79
SA
2636 return resolved_type;
2637}
2638
d98b7a16
TT
2639/* See gdbtypes.h */
2640
2641struct type *
b249d2c2
TT
2642resolve_dynamic_type (struct type *type,
2643 gdb::array_view<const gdb_byte> valaddr,
c3345124 2644 CORE_ADDR addr)
d98b7a16 2645{
c3345124
JB
2646 struct property_addr_info pinfo
2647 = {check_typedef (type), valaddr, addr, NULL};
df25ebbd 2648
ee715b5a 2649 return resolve_dynamic_type_internal (type, &pinfo, 1);
d98b7a16
TT
2650}
2651
d9823cbb
KB
2652/* See gdbtypes.h */
2653
24e99c6c
SM
2654dynamic_prop *
2655type::dyn_prop (dynamic_prop_node_kind prop_kind) const
d9823cbb 2656{
98d48915 2657 dynamic_prop_list *node = this->main_type->dyn_prop_list;
d9823cbb
KB
2658
2659 while (node != NULL)
2660 {
2661 if (node->prop_kind == prop_kind)
283a9958 2662 return &node->prop;
d9823cbb
KB
2663 node = node->next;
2664 }
2665 return NULL;
2666}
2667
2668/* See gdbtypes.h */
2669
2670void
5c54719c 2671type::add_dyn_prop (dynamic_prop_node_kind prop_kind, dynamic_prop prop)
d9823cbb
KB
2672{
2673 struct dynamic_prop_list *temp;
2674
5c54719c 2675 gdb_assert (TYPE_OBJFILE_OWNED (this));
d9823cbb 2676
5c54719c 2677 temp = XOBNEW (&TYPE_OBJFILE (this)->objfile_obstack,
50a82047 2678 struct dynamic_prop_list);
d9823cbb 2679 temp->prop_kind = prop_kind;
283a9958 2680 temp->prop = prop;
98d48915 2681 temp->next = this->main_type->dyn_prop_list;
d9823cbb 2682
98d48915 2683 this->main_type->dyn_prop_list = temp;
d9823cbb
KB
2684}
2685
7aa91313 2686/* See gdbtypes.h. */
9920b434
BH
2687
2688void
7aa91313 2689type::remove_dyn_prop (dynamic_prop_node_kind kind)
9920b434
BH
2690{
2691 struct dynamic_prop_list *prev_node, *curr_node;
2692
98d48915 2693 curr_node = this->main_type->dyn_prop_list;
9920b434
BH
2694 prev_node = NULL;
2695
2696 while (NULL != curr_node)
2697 {
7aa91313 2698 if (curr_node->prop_kind == kind)
9920b434
BH
2699 {
2700 /* Update the linked list but don't free anything.
2701 The property was allocated on objstack and it is not known
2702 if we are on top of it. Nevertheless, everything is released
2703 when the complete objstack is freed. */
2704 if (NULL == prev_node)
98d48915 2705 this->main_type->dyn_prop_list = curr_node->next;
9920b434
BH
2706 else
2707 prev_node->next = curr_node->next;
2708
2709 return;
2710 }
2711
2712 prev_node = curr_node;
2713 curr_node = curr_node->next;
2714 }
2715}
d9823cbb 2716
92163a10
JK
2717/* Find the real type of TYPE. This function returns the real type,
2718 after removing all layers of typedefs, and completing opaque or stub
2719 types. Completion changes the TYPE argument, but stripping of
2720 typedefs does not.
2721
2722 Instance flags (e.g. const/volatile) are preserved as typedefs are
2723 stripped. If necessary a new qualified form of the underlying type
2724 is created.
2725
2726 NOTE: This will return a typedef if TYPE_TARGET_TYPE for the typedef has
2727 not been computed and we're either in the middle of reading symbols, or
2728 there was no name for the typedef in the debug info.
2729
9bc118a5
DE
2730 NOTE: Lookup of opaque types can throw errors for invalid symbol files.
2731 QUITs in the symbol reading code can also throw.
2732 Thus this function can throw an exception.
2733
92163a10
JK
2734 If TYPE is a TYPE_CODE_TYPEDEF, its length is updated to the length of
2735 the target type.
c906108c
SS
2736
2737 If this is a stubbed struct (i.e. declared as struct foo *), see if
0963b4bd 2738 we can find a full definition in some other file. If so, copy this
7ba81444
MS
2739 definition, so we can use it in future. There used to be a comment
2740 (but not any code) that if we don't find a full definition, we'd
2741 set a flag so we don't spend time in the future checking the same
2742 type. That would be a mistake, though--we might load in more
92163a10 2743 symbols which contain a full definition for the type. */
c906108c
SS
2744
2745struct type *
a02fd225 2746check_typedef (struct type *type)
c906108c
SS
2747{
2748 struct type *orig_type = type;
92163a10
JK
2749 /* While we're removing typedefs, we don't want to lose qualifiers.
2750 E.g., const/volatile. */
2751 int instance_flags = TYPE_INSTANCE_FLAGS (type);
a02fd225 2752
423c0af8
MS
2753 gdb_assert (type);
2754
78134374 2755 while (type->code () == TYPE_CODE_TYPEDEF)
c906108c
SS
2756 {
2757 if (!TYPE_TARGET_TYPE (type))
2758 {
0d5cff50 2759 const char *name;
c906108c
SS
2760 struct symbol *sym;
2761
2762 /* It is dangerous to call lookup_symbol if we are currently
7ba81444 2763 reading a symtab. Infinite recursion is one danger. */
c906108c 2764 if (currently_reading_symtab)
92163a10 2765 return make_qualified_type (type, instance_flags, NULL);
c906108c 2766
7d93a1e0 2767 name = type->name ();
e86ca25f
TT
2768 /* FIXME: shouldn't we look in STRUCT_DOMAIN and/or
2769 VAR_DOMAIN as appropriate? */
c906108c
SS
2770 if (name == NULL)
2771 {
23136709 2772 stub_noname_complaint ();
92163a10 2773 return make_qualified_type (type, instance_flags, NULL);
c906108c 2774 }
d12307c1 2775 sym = lookup_symbol (name, 0, STRUCT_DOMAIN, 0).symbol;
c906108c
SS
2776 if (sym)
2777 TYPE_TARGET_TYPE (type) = SYMBOL_TYPE (sym);
7ba81444 2778 else /* TYPE_CODE_UNDEF */
e9bb382b 2779 TYPE_TARGET_TYPE (type) = alloc_type_arch (get_type_arch (type));
c906108c
SS
2780 }
2781 type = TYPE_TARGET_TYPE (type);
c906108c 2782
92163a10
JK
2783 /* Preserve the instance flags as we traverse down the typedef chain.
2784
2785 Handling address spaces/classes is nasty, what do we do if there's a
2786 conflict?
2787 E.g., what if an outer typedef marks the type as class_1 and an inner
2788 typedef marks the type as class_2?
2789 This is the wrong place to do such error checking. We leave it to
2790 the code that created the typedef in the first place to flag the
2791 error. We just pick the outer address space (akin to letting the
2792 outer cast in a chain of casting win), instead of assuming
2793 "it can't happen". */
2794 {
2795 const int ALL_SPACES = (TYPE_INSTANCE_FLAG_CODE_SPACE
2796 | TYPE_INSTANCE_FLAG_DATA_SPACE);
2797 const int ALL_CLASSES = TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL;
2798 int new_instance_flags = TYPE_INSTANCE_FLAGS (type);
2799
2800 /* Treat code vs data spaces and address classes separately. */
2801 if ((instance_flags & ALL_SPACES) != 0)
2802 new_instance_flags &= ~ALL_SPACES;
2803 if ((instance_flags & ALL_CLASSES) != 0)
2804 new_instance_flags &= ~ALL_CLASSES;
2805
2806 instance_flags |= new_instance_flags;
2807 }
2808 }
a02fd225 2809
7ba81444
MS
2810 /* If this is a struct/class/union with no fields, then check
2811 whether a full definition exists somewhere else. This is for
2812 systems where a type definition with no fields is issued for such
2813 types, instead of identifying them as stub types in the first
2814 place. */
c5aa993b 2815
7ba81444
MS
2816 if (TYPE_IS_OPAQUE (type)
2817 && opaque_type_resolution
2818 && !currently_reading_symtab)
c906108c 2819 {
7d93a1e0 2820 const char *name = type->name ();
c5aa993b 2821 struct type *newtype;
d8734c88 2822
c906108c
SS
2823 if (name == NULL)
2824 {
23136709 2825 stub_noname_complaint ();
92163a10 2826 return make_qualified_type (type, instance_flags, NULL);
c906108c
SS
2827 }
2828 newtype = lookup_transparent_type (name);
ad766c0a 2829
c906108c 2830 if (newtype)
ad766c0a 2831 {
7ba81444
MS
2832 /* If the resolved type and the stub are in the same
2833 objfile, then replace the stub type with the real deal.
2834 But if they're in separate objfiles, leave the stub
2835 alone; we'll just look up the transparent type every time
2836 we call check_typedef. We can't create pointers between
2837 types allocated to different objfiles, since they may
2838 have different lifetimes. Trying to copy NEWTYPE over to
2839 TYPE's objfile is pointless, too, since you'll have to
2840 move over any other types NEWTYPE refers to, which could
2841 be an unbounded amount of stuff. */
ad766c0a 2842 if (TYPE_OBJFILE (newtype) == TYPE_OBJFILE (type))
92163a10
JK
2843 type = make_qualified_type (newtype,
2844 TYPE_INSTANCE_FLAGS (type),
2845 type);
ad766c0a
JB
2846 else
2847 type = newtype;
2848 }
c906108c 2849 }
7ba81444
MS
2850 /* Otherwise, rely on the stub flag being set for opaque/stubbed
2851 types. */
74a9bb82 2852 else if (TYPE_STUB (type) && !currently_reading_symtab)
c906108c 2853 {
7d93a1e0 2854 const char *name = type->name ();
e86ca25f
TT
2855 /* FIXME: shouldn't we look in STRUCT_DOMAIN and/or VAR_DOMAIN
2856 as appropriate? */
c906108c 2857 struct symbol *sym;
d8734c88 2858
c906108c
SS
2859 if (name == NULL)
2860 {
23136709 2861 stub_noname_complaint ();
92163a10 2862 return make_qualified_type (type, instance_flags, NULL);
c906108c 2863 }
d12307c1 2864 sym = lookup_symbol (name, 0, STRUCT_DOMAIN, 0).symbol;
c906108c 2865 if (sym)
c26f2453
JB
2866 {
2867 /* Same as above for opaque types, we can replace the stub
92163a10 2868 with the complete type only if they are in the same
c26f2453 2869 objfile. */
78134374 2870 if (TYPE_OBJFILE (SYMBOL_TYPE (sym)) == TYPE_OBJFILE (type))
92163a10
JK
2871 type = make_qualified_type (SYMBOL_TYPE (sym),
2872 TYPE_INSTANCE_FLAGS (type),
2873 type);
c26f2453
JB
2874 else
2875 type = SYMBOL_TYPE (sym);
2876 }
c906108c
SS
2877 }
2878
74a9bb82 2879 if (TYPE_TARGET_STUB (type))
c906108c 2880 {
c906108c
SS
2881 struct type *target_type = check_typedef (TYPE_TARGET_TYPE (type));
2882
74a9bb82 2883 if (TYPE_STUB (target_type) || TYPE_TARGET_STUB (target_type))
c5aa993b 2884 {
73e2eb35 2885 /* Nothing we can do. */
c5aa993b 2886 }
78134374 2887 else if (type->code () == TYPE_CODE_RANGE)
c906108c
SS
2888 {
2889 TYPE_LENGTH (type) = TYPE_LENGTH (target_type);
876cecd0 2890 TYPE_TARGET_STUB (type) = 0;
c906108c 2891 }
78134374 2892 else if (type->code () == TYPE_CODE_ARRAY
8dbb1375
HD
2893 && update_static_array_size (type))
2894 TYPE_TARGET_STUB (type) = 0;
c906108c 2895 }
92163a10
JK
2896
2897 type = make_qualified_type (type, instance_flags, NULL);
2898
7ba81444 2899 /* Cache TYPE_LENGTH for future use. */
c906108c 2900 TYPE_LENGTH (orig_type) = TYPE_LENGTH (type);
92163a10 2901
c906108c
SS
2902 return type;
2903}
2904
7ba81444 2905/* Parse a type expression in the string [P..P+LENGTH). If an error
48319d1f 2906 occurs, silently return a void type. */
c91ecb25 2907
b9362cc7 2908static struct type *
48319d1f 2909safe_parse_type (struct gdbarch *gdbarch, char *p, int length)
c91ecb25
ND
2910{
2911 struct ui_file *saved_gdb_stderr;
34365054 2912 struct type *type = NULL; /* Initialize to keep gcc happy. */
c91ecb25 2913
7ba81444 2914 /* Suppress error messages. */
c91ecb25 2915 saved_gdb_stderr = gdb_stderr;
d7e74731 2916 gdb_stderr = &null_stream;
c91ecb25 2917
7ba81444 2918 /* Call parse_and_eval_type() without fear of longjmp()s. */
a70b8144 2919 try
8e7b59a5
KS
2920 {
2921 type = parse_and_eval_type (p, length);
2922 }
230d2906 2923 catch (const gdb_exception_error &except)
492d29ea
PA
2924 {
2925 type = builtin_type (gdbarch)->builtin_void;
2926 }
c91ecb25 2927
7ba81444 2928 /* Stop suppressing error messages. */
c91ecb25
ND
2929 gdb_stderr = saved_gdb_stderr;
2930
2931 return type;
2932}
2933
c906108c
SS
2934/* Ugly hack to convert method stubs into method types.
2935
7ba81444
MS
2936 He ain't kiddin'. This demangles the name of the method into a
2937 string including argument types, parses out each argument type,
2938 generates a string casting a zero to that type, evaluates the
2939 string, and stuffs the resulting type into an argtype vector!!!
2940 Then it knows the type of the whole function (including argument
2941 types for overloading), which info used to be in the stab's but was
2942 removed to hack back the space required for them. */
c906108c 2943
de17c821 2944static void
fba45db2 2945check_stub_method (struct type *type, int method_id, int signature_id)
c906108c 2946{
50810684 2947 struct gdbarch *gdbarch = get_type_arch (type);
c906108c
SS
2948 struct fn_field *f;
2949 char *mangled_name = gdb_mangle_name (type, method_id, signature_id);
8de20a37
TT
2950 char *demangled_name = gdb_demangle (mangled_name,
2951 DMGL_PARAMS | DMGL_ANSI);
c906108c
SS
2952 char *argtypetext, *p;
2953 int depth = 0, argcount = 1;
ad2f7632 2954 struct field *argtypes;
c906108c
SS
2955 struct type *mtype;
2956
2957 /* Make sure we got back a function string that we can use. */
2958 if (demangled_name)
2959 p = strchr (demangled_name, '(');
502dcf4e
AC
2960 else
2961 p = NULL;
c906108c
SS
2962
2963 if (demangled_name == NULL || p == NULL)
7ba81444
MS
2964 error (_("Internal: Cannot demangle mangled name `%s'."),
2965 mangled_name);
c906108c
SS
2966
2967 /* Now, read in the parameters that define this type. */
2968 p += 1;
2969 argtypetext = p;
2970 while (*p)
2971 {
070ad9f0 2972 if (*p == '(' || *p == '<')
c906108c
SS
2973 {
2974 depth += 1;
2975 }
070ad9f0 2976 else if (*p == ')' || *p == '>')
c906108c
SS
2977 {
2978 depth -= 1;
2979 }
2980 else if (*p == ',' && depth == 0)
2981 {
2982 argcount += 1;
2983 }
2984
2985 p += 1;
2986 }
2987
ad2f7632 2988 /* If we read one argument and it was ``void'', don't count it. */
61012eef 2989 if (startswith (argtypetext, "(void)"))
ad2f7632 2990 argcount -= 1;
c906108c 2991
ad2f7632
DJ
2992 /* We need one extra slot, for the THIS pointer. */
2993
2994 argtypes = (struct field *)
2995 TYPE_ALLOC (type, (argcount + 1) * sizeof (struct field));
c906108c 2996 p = argtypetext;
4a1970e4
DJ
2997
2998 /* Add THIS pointer for non-static methods. */
2999 f = TYPE_FN_FIELDLIST1 (type, method_id);
3000 if (TYPE_FN_FIELD_STATIC_P (f, signature_id))
3001 argcount = 0;
3002 else
3003 {
ad2f7632 3004 argtypes[0].type = lookup_pointer_type (type);
4a1970e4
DJ
3005 argcount = 1;
3006 }
c906108c 3007
0963b4bd 3008 if (*p != ')') /* () means no args, skip while. */
c906108c
SS
3009 {
3010 depth = 0;
3011 while (*p)
3012 {
3013 if (depth <= 0 && (*p == ',' || *p == ')'))
3014 {
ad2f7632
DJ
3015 /* Avoid parsing of ellipsis, they will be handled below.
3016 Also avoid ``void'' as above. */
3017 if (strncmp (argtypetext, "...", p - argtypetext) != 0
3018 && strncmp (argtypetext, "void", p - argtypetext) != 0)
c906108c 3019 {
ad2f7632 3020 argtypes[argcount].type =
48319d1f 3021 safe_parse_type (gdbarch, argtypetext, p - argtypetext);
c906108c
SS
3022 argcount += 1;
3023 }
3024 argtypetext = p + 1;
3025 }
3026
070ad9f0 3027 if (*p == '(' || *p == '<')
c906108c
SS
3028 {
3029 depth += 1;
3030 }
070ad9f0 3031 else if (*p == ')' || *p == '>')
c906108c
SS
3032 {
3033 depth -= 1;
3034 }
3035
3036 p += 1;
3037 }
3038 }
3039
c906108c
SS
3040 TYPE_FN_FIELD_PHYSNAME (f, signature_id) = mangled_name;
3041
3042 /* Now update the old "stub" type into a real type. */
3043 mtype = TYPE_FN_FIELD_TYPE (f, signature_id);
09e2d7c7
DE
3044 /* MTYPE may currently be a function (TYPE_CODE_FUNC).
3045 We want a method (TYPE_CODE_METHOD). */
3046 smash_to_method_type (mtype, type, TYPE_TARGET_TYPE (mtype),
3047 argtypes, argcount, p[-2] == '.');
876cecd0 3048 TYPE_STUB (mtype) = 0;
c906108c 3049 TYPE_FN_FIELD_STUB (f, signature_id) = 0;
ad2f7632
DJ
3050
3051 xfree (demangled_name);
c906108c
SS
3052}
3053
7ba81444
MS
3054/* This is the external interface to check_stub_method, above. This
3055 function unstubs all of the signatures for TYPE's METHOD_ID method
3056 name. After calling this function TYPE_FN_FIELD_STUB will be
3057 cleared for each signature and TYPE_FN_FIELDLIST_NAME will be
3058 correct.
de17c821
DJ
3059
3060 This function unfortunately can not die until stabs do. */
3061
3062void
3063check_stub_method_group (struct type *type, int method_id)
3064{
3065 int len = TYPE_FN_FIELDLIST_LENGTH (type, method_id);
3066 struct fn_field *f = TYPE_FN_FIELDLIST1 (type, method_id);
de17c821 3067
041be526
SM
3068 for (int j = 0; j < len; j++)
3069 {
3070 if (TYPE_FN_FIELD_STUB (f, j))
de17c821 3071 check_stub_method (type, method_id, j);
de17c821
DJ
3072 }
3073}
3074
405feb71 3075/* Ensure it is in .rodata (if available) by working around GCC PR 44690. */
9655fd1a 3076const struct cplus_struct_type cplus_struct_default = { };
c906108c
SS
3077
3078void
fba45db2 3079allocate_cplus_struct_type (struct type *type)
c906108c 3080{
b4ba55a1
JB
3081 if (HAVE_CPLUS_STRUCT (type))
3082 /* Structure was already allocated. Nothing more to do. */
3083 return;
3084
3085 TYPE_SPECIFIC_FIELD (type) = TYPE_SPECIFIC_CPLUS_STUFF;
3086 TYPE_RAW_CPLUS_SPECIFIC (type) = (struct cplus_struct_type *)
3087 TYPE_ALLOC (type, sizeof (struct cplus_struct_type));
3088 *(TYPE_RAW_CPLUS_SPECIFIC (type)) = cplus_struct_default;
ae6ae975 3089 set_type_vptr_fieldno (type, -1);
c906108c
SS
3090}
3091
b4ba55a1
JB
3092const struct gnat_aux_type gnat_aux_default =
3093 { NULL };
3094
3095/* Set the TYPE's type-specific kind to TYPE_SPECIFIC_GNAT_STUFF,
3096 and allocate the associated gnat-specific data. The gnat-specific
3097 data is also initialized to gnat_aux_default. */
5212577a 3098
b4ba55a1
JB
3099void
3100allocate_gnat_aux_type (struct type *type)
3101{
3102 TYPE_SPECIFIC_FIELD (type) = TYPE_SPECIFIC_GNAT_STUFF;
3103 TYPE_GNAT_SPECIFIC (type) = (struct gnat_aux_type *)
3104 TYPE_ALLOC (type, sizeof (struct gnat_aux_type));
3105 *(TYPE_GNAT_SPECIFIC (type)) = gnat_aux_default;
3106}
3107
ae438bc5
UW
3108/* Helper function to initialize a newly allocated type. Set type code
3109 to CODE and initialize the type-specific fields accordingly. */
3110
3111static void
3112set_type_code (struct type *type, enum type_code code)
3113{
67607e24 3114 type->set_code (code);
ae438bc5
UW
3115
3116 switch (code)
3117 {
3118 case TYPE_CODE_STRUCT:
3119 case TYPE_CODE_UNION:
3120 case TYPE_CODE_NAMESPACE:
3121 INIT_CPLUS_SPECIFIC (type);
3122 break;
3123 case TYPE_CODE_FLT:
3124 TYPE_SPECIFIC_FIELD (type) = TYPE_SPECIFIC_FLOATFORMAT;
3125 break;
3126 case TYPE_CODE_FUNC:
3127 INIT_FUNC_SPECIFIC (type);
3128 break;
3129 }
3130}
3131
19f392bc
UW
3132/* Helper function to verify floating-point format and size.
3133 BIT is the type size in bits; if BIT equals -1, the size is
3134 determined by the floatformat. Returns size to be used. */
3135
3136static int
0db7851f 3137verify_floatformat (int bit, const struct floatformat *floatformat)
19f392bc 3138{
0db7851f 3139 gdb_assert (floatformat != NULL);
9b790ce7 3140
19f392bc 3141 if (bit == -1)
0db7851f 3142 bit = floatformat->totalsize;
19f392bc 3143
0db7851f
UW
3144 gdb_assert (bit >= 0);
3145 gdb_assert (bit >= floatformat->totalsize);
19f392bc
UW
3146
3147 return bit;
3148}
3149
0db7851f
UW
3150/* Return the floating-point format for a floating-point variable of
3151 type TYPE. */
3152
3153const struct floatformat *
3154floatformat_from_type (const struct type *type)
3155{
78134374 3156 gdb_assert (type->code () == TYPE_CODE_FLT);
0db7851f
UW
3157 gdb_assert (TYPE_FLOATFORMAT (type));
3158 return TYPE_FLOATFORMAT (type);
3159}
3160
c906108c
SS
3161/* Helper function to initialize the standard scalar types.
3162
86f62fd7
TT
3163 If NAME is non-NULL, then it is used to initialize the type name.
3164 Note that NAME is not copied; it is required to have a lifetime at
3165 least as long as OBJFILE. */
c906108c
SS
3166
3167struct type *
77b7c781 3168init_type (struct objfile *objfile, enum type_code code, int bit,
19f392bc 3169 const char *name)
c906108c 3170{
52f0bd74 3171 struct type *type;
c906108c
SS
3172
3173 type = alloc_type (objfile);
ae438bc5 3174 set_type_code (type, code);
77b7c781
UW
3175 gdb_assert ((bit % TARGET_CHAR_BIT) == 0);
3176 TYPE_LENGTH (type) = bit / TARGET_CHAR_BIT;
d0e39ea2 3177 type->set_name (name);
c906108c 3178
c16abbde 3179 return type;
c906108c 3180}
19f392bc 3181
46a4882b
PA
3182/* Allocate a TYPE_CODE_ERROR type structure associated with OBJFILE,
3183 to use with variables that have no debug info. NAME is the type
3184 name. */
3185
3186static struct type *
3187init_nodebug_var_type (struct objfile *objfile, const char *name)
3188{
3189 return init_type (objfile, TYPE_CODE_ERROR, 0, name);
3190}
3191
19f392bc
UW
3192/* Allocate a TYPE_CODE_INT type structure associated with OBJFILE.
3193 BIT is the type size in bits. If UNSIGNED_P is non-zero, set
3194 the type's TYPE_UNSIGNED flag. NAME is the type name. */
3195
3196struct type *
3197init_integer_type (struct objfile *objfile,
3198 int bit, int unsigned_p, const char *name)
3199{
3200 struct type *t;
3201
77b7c781 3202 t = init_type (objfile, TYPE_CODE_INT, bit, name);
19f392bc
UW
3203 if (unsigned_p)
3204 TYPE_UNSIGNED (t) = 1;
3205
3206 return t;
3207}
3208
3209/* Allocate a TYPE_CODE_CHAR type structure associated with OBJFILE.
3210 BIT is the type size in bits. If UNSIGNED_P is non-zero, set
3211 the type's TYPE_UNSIGNED flag. NAME is the type name. */
3212
3213struct type *
3214init_character_type (struct objfile *objfile,
3215 int bit, int unsigned_p, const char *name)
3216{
3217 struct type *t;
3218
77b7c781 3219 t = init_type (objfile, TYPE_CODE_CHAR, bit, name);
19f392bc
UW
3220 if (unsigned_p)
3221 TYPE_UNSIGNED (t) = 1;
3222
3223 return t;
3224}
3225
3226/* Allocate a TYPE_CODE_BOOL type structure associated with OBJFILE.
3227 BIT is the type size in bits. If UNSIGNED_P is non-zero, set
3228 the type's TYPE_UNSIGNED flag. NAME is the type name. */
3229
3230struct type *
3231init_boolean_type (struct objfile *objfile,
3232 int bit, int unsigned_p, const char *name)
3233{
3234 struct type *t;
3235
77b7c781 3236 t = init_type (objfile, TYPE_CODE_BOOL, bit, name);
19f392bc
UW
3237 if (unsigned_p)
3238 TYPE_UNSIGNED (t) = 1;
3239
3240 return t;
3241}
3242
3243/* Allocate a TYPE_CODE_FLT type structure associated with OBJFILE.
3244 BIT is the type size in bits; if BIT equals -1, the size is
3245 determined by the floatformat. NAME is the type name. Set the
103a685e
TT
3246 TYPE_FLOATFORMAT from FLOATFORMATS. BYTE_ORDER is the byte order
3247 to use. If it is BFD_ENDIAN_UNKNOWN (the default), then the byte
3248 order of the objfile's architecture is used. */
19f392bc
UW
3249
3250struct type *
3251init_float_type (struct objfile *objfile,
3252 int bit, const char *name,
103a685e
TT
3253 const struct floatformat **floatformats,
3254 enum bfd_endian byte_order)
19f392bc 3255{
103a685e
TT
3256 if (byte_order == BFD_ENDIAN_UNKNOWN)
3257 {
08feed99 3258 struct gdbarch *gdbarch = objfile->arch ();
103a685e
TT
3259 byte_order = gdbarch_byte_order (gdbarch);
3260 }
3261 const struct floatformat *fmt = floatformats[byte_order];
19f392bc
UW
3262 struct type *t;
3263
0db7851f 3264 bit = verify_floatformat (bit, fmt);
77b7c781 3265 t = init_type (objfile, TYPE_CODE_FLT, bit, name);
0db7851f 3266 TYPE_FLOATFORMAT (t) = fmt;
19f392bc
UW
3267
3268 return t;
3269}
3270
3271/* Allocate a TYPE_CODE_DECFLOAT type structure associated with OBJFILE.
3272 BIT is the type size in bits. NAME is the type name. */
3273
3274struct type *
3275init_decfloat_type (struct objfile *objfile, int bit, const char *name)
3276{
3277 struct type *t;
3278
77b7c781 3279 t = init_type (objfile, TYPE_CODE_DECFLOAT, bit, name);
19f392bc
UW
3280 return t;
3281}
3282
5b930b45
TT
3283/* Allocate a TYPE_CODE_COMPLEX type structure. NAME is the type
3284 name. TARGET_TYPE is the component type. */
19f392bc
UW
3285
3286struct type *
5b930b45 3287init_complex_type (const char *name, struct type *target_type)
19f392bc
UW
3288{
3289 struct type *t;
3290
78134374
SM
3291 gdb_assert (target_type->code () == TYPE_CODE_INT
3292 || target_type->code () == TYPE_CODE_FLT);
5b930b45
TT
3293
3294 if (TYPE_MAIN_TYPE (target_type)->flds_bnds.complex_type == nullptr)
3295 {
3296 if (name == nullptr)
3297 {
3298 char *new_name
3299 = (char *) TYPE_ALLOC (target_type,
7d93a1e0 3300 strlen (target_type->name ())
5b930b45
TT
3301 + strlen ("_Complex ") + 1);
3302 strcpy (new_name, "_Complex ");
7d93a1e0 3303 strcat (new_name, target_type->name ());
5b930b45
TT
3304 name = new_name;
3305 }
3306
3307 t = alloc_type_copy (target_type);
3308 set_type_code (t, TYPE_CODE_COMPLEX);
3309 TYPE_LENGTH (t) = 2 * TYPE_LENGTH (target_type);
d0e39ea2 3310 t->set_name (name);
5b930b45
TT
3311
3312 TYPE_TARGET_TYPE (t) = target_type;
3313 TYPE_MAIN_TYPE (target_type)->flds_bnds.complex_type = t;
3314 }
3315
3316 return TYPE_MAIN_TYPE (target_type)->flds_bnds.complex_type;
19f392bc
UW
3317}
3318
3319/* Allocate a TYPE_CODE_PTR type structure associated with OBJFILE.
3320 BIT is the pointer type size in bits. NAME is the type name.
3321 TARGET_TYPE is the pointer target type. Always sets the pointer type's
3322 TYPE_UNSIGNED flag. */
3323
3324struct type *
3325init_pointer_type (struct objfile *objfile,
3326 int bit, const char *name, struct type *target_type)
3327{
3328 struct type *t;
3329
77b7c781 3330 t = init_type (objfile, TYPE_CODE_PTR, bit, name);
19f392bc
UW
3331 TYPE_TARGET_TYPE (t) = target_type;
3332 TYPE_UNSIGNED (t) = 1;
3333 return t;
3334}
3335
2b4424c3
TT
3336/* See gdbtypes.h. */
3337
3338unsigned
3339type_raw_align (struct type *type)
3340{
3341 if (type->align_log2 != 0)
3342 return 1 << (type->align_log2 - 1);
3343 return 0;
3344}
3345
3346/* See gdbtypes.h. */
3347
3348unsigned
3349type_align (struct type *type)
3350{
5561fc30 3351 /* Check alignment provided in the debug information. */
2b4424c3
TT
3352 unsigned raw_align = type_raw_align (type);
3353 if (raw_align != 0)
3354 return raw_align;
3355
5561fc30
AB
3356 /* Allow the architecture to provide an alignment. */
3357 struct gdbarch *arch = get_type_arch (type);
3358 ULONGEST align = gdbarch_type_align (arch, type);
3359 if (align != 0)
3360 return align;
3361
78134374 3362 switch (type->code ())
2b4424c3
TT
3363 {
3364 case TYPE_CODE_PTR:
3365 case TYPE_CODE_FUNC:
3366 case TYPE_CODE_FLAGS:
3367 case TYPE_CODE_INT:
75ba10dc 3368 case TYPE_CODE_RANGE:
2b4424c3
TT
3369 case TYPE_CODE_FLT:
3370 case TYPE_CODE_ENUM:
3371 case TYPE_CODE_REF:
3372 case TYPE_CODE_RVALUE_REF:
3373 case TYPE_CODE_CHAR:
3374 case TYPE_CODE_BOOL:
3375 case TYPE_CODE_DECFLOAT:
70cd633e
AB
3376 case TYPE_CODE_METHODPTR:
3377 case TYPE_CODE_MEMBERPTR:
5561fc30 3378 align = type_length_units (check_typedef (type));
2b4424c3
TT
3379 break;
3380
3381 case TYPE_CODE_ARRAY:
3382 case TYPE_CODE_COMPLEX:
3383 case TYPE_CODE_TYPEDEF:
3384 align = type_align (TYPE_TARGET_TYPE (type));
3385 break;
3386
3387 case TYPE_CODE_STRUCT:
3388 case TYPE_CODE_UNION:
3389 {
41077b66 3390 int number_of_non_static_fields = 0;
1f704f76 3391 for (unsigned i = 0; i < type->num_fields (); ++i)
2b4424c3 3392 {
bf9a735e 3393 if (!field_is_static (&TYPE_FIELD (type, i)))
2b4424c3 3394 {
41077b66 3395 number_of_non_static_fields++;
bf9a735e
AB
3396 ULONGEST f_align = type_align (TYPE_FIELD_TYPE (type, i));
3397 if (f_align == 0)
3398 {
3399 /* Don't pretend we know something we don't. */
3400 align = 0;
3401 break;
3402 }
3403 if (f_align > align)
3404 align = f_align;
2b4424c3 3405 }
2b4424c3 3406 }
41077b66
AB
3407 /* A struct with no fields, or with only static fields has an
3408 alignment of 1. */
3409 if (number_of_non_static_fields == 0)
3410 align = 1;
2b4424c3
TT
3411 }
3412 break;
3413
3414 case TYPE_CODE_SET:
2b4424c3
TT
3415 case TYPE_CODE_STRING:
3416 /* Not sure what to do here, and these can't appear in C or C++
3417 anyway. */
3418 break;
3419
2b4424c3
TT
3420 case TYPE_CODE_VOID:
3421 align = 1;
3422 break;
3423
3424 case TYPE_CODE_ERROR:
3425 case TYPE_CODE_METHOD:
3426 default:
3427 break;
3428 }
3429
3430 if ((align & (align - 1)) != 0)
3431 {
3432 /* Not a power of 2, so pass. */
3433 align = 0;
3434 }
3435
3436 return align;
3437}
3438
3439/* See gdbtypes.h. */
3440
3441bool
3442set_type_align (struct type *type, ULONGEST align)
3443{
3444 /* Must be a power of 2. Zero is ok. */
3445 gdb_assert ((align & (align - 1)) == 0);
3446
3447 unsigned result = 0;
3448 while (align != 0)
3449 {
3450 ++result;
3451 align >>= 1;
3452 }
3453
3454 if (result >= (1 << TYPE_ALIGN_BITS))
3455 return false;
3456
3457 type->align_log2 = result;
3458 return true;
3459}
3460
5212577a
DE
3461\f
3462/* Queries on types. */
c906108c 3463
c906108c 3464int
fba45db2 3465can_dereference (struct type *t)
c906108c 3466{
7ba81444
MS
3467 /* FIXME: Should we return true for references as well as
3468 pointers? */
f168693b 3469 t = check_typedef (t);
c906108c
SS
3470 return
3471 (t != NULL
78134374
SM
3472 && t->code () == TYPE_CODE_PTR
3473 && TYPE_TARGET_TYPE (t)->code () != TYPE_CODE_VOID);
c906108c
SS
3474}
3475
adf40b2e 3476int
fba45db2 3477is_integral_type (struct type *t)
adf40b2e 3478{
f168693b 3479 t = check_typedef (t);
adf40b2e
JM
3480 return
3481 ((t != NULL)
78134374
SM
3482 && ((t->code () == TYPE_CODE_INT)
3483 || (t->code () == TYPE_CODE_ENUM)
3484 || (t->code () == TYPE_CODE_FLAGS)
3485 || (t->code () == TYPE_CODE_CHAR)
3486 || (t->code () == TYPE_CODE_RANGE)
3487 || (t->code () == TYPE_CODE_BOOL)));
adf40b2e
JM
3488}
3489
70100014
UW
3490int
3491is_floating_type (struct type *t)
3492{
3493 t = check_typedef (t);
3494 return
3495 ((t != NULL)
78134374
SM
3496 && ((t->code () == TYPE_CODE_FLT)
3497 || (t->code () == TYPE_CODE_DECFLOAT)));
70100014
UW
3498}
3499
e09342b5
TJB
3500/* Return true if TYPE is scalar. */
3501
220475ed 3502int
e09342b5
TJB
3503is_scalar_type (struct type *type)
3504{
f168693b 3505 type = check_typedef (type);
e09342b5 3506
78134374 3507 switch (type->code ())
e09342b5
TJB
3508 {
3509 case TYPE_CODE_ARRAY:
3510 case TYPE_CODE_STRUCT:
3511 case TYPE_CODE_UNION:
3512 case TYPE_CODE_SET:
3513 case TYPE_CODE_STRING:
e09342b5
TJB
3514 return 0;
3515 default:
3516 return 1;
3517 }
3518}
3519
3520/* Return true if T is scalar, or a composite type which in practice has
90e4670f
TJB
3521 the memory layout of a scalar type. E.g., an array or struct with only
3522 one scalar element inside it, or a union with only scalar elements. */
e09342b5
TJB
3523
3524int
3525is_scalar_type_recursive (struct type *t)
3526{
f168693b 3527 t = check_typedef (t);
e09342b5
TJB
3528
3529 if (is_scalar_type (t))
3530 return 1;
3531 /* Are we dealing with an array or string of known dimensions? */
78134374 3532 else if ((t->code () == TYPE_CODE_ARRAY
1f704f76 3533 || t->code () == TYPE_CODE_STRING) && t->num_fields () == 1
78134374 3534 && TYPE_INDEX_TYPE(t)->code () == TYPE_CODE_RANGE)
e09342b5
TJB
3535 {
3536 LONGEST low_bound, high_bound;
3537 struct type *elt_type = check_typedef (TYPE_TARGET_TYPE (t));
3538
3539 get_discrete_bounds (TYPE_INDEX_TYPE (t), &low_bound, &high_bound);
3540
3541 return high_bound == low_bound && is_scalar_type_recursive (elt_type);
3542 }
3543 /* Are we dealing with a struct with one element? */
1f704f76 3544 else if (t->code () == TYPE_CODE_STRUCT && t->num_fields () == 1)
e09342b5 3545 return is_scalar_type_recursive (TYPE_FIELD_TYPE (t, 0));
78134374 3546 else if (t->code () == TYPE_CODE_UNION)
e09342b5 3547 {
1f704f76 3548 int i, n = t->num_fields ();
e09342b5
TJB
3549
3550 /* If all elements of the union are scalar, then the union is scalar. */
3551 for (i = 0; i < n; i++)
3552 if (!is_scalar_type_recursive (TYPE_FIELD_TYPE (t, i)))
3553 return 0;
3554
3555 return 1;
3556 }
3557
3558 return 0;
3559}
3560
6c659fc2
SC
3561/* Return true is T is a class or a union. False otherwise. */
3562
3563int
3564class_or_union_p (const struct type *t)
3565{
78134374
SM
3566 return (t->code () == TYPE_CODE_STRUCT
3567 || t->code () == TYPE_CODE_UNION);
6c659fc2
SC
3568}
3569
4e8f195d
TT
3570/* A helper function which returns true if types A and B represent the
3571 "same" class type. This is true if the types have the same main
3572 type, or the same name. */
3573
3574int
3575class_types_same_p (const struct type *a, const struct type *b)
3576{
3577 return (TYPE_MAIN_TYPE (a) == TYPE_MAIN_TYPE (b)
7d93a1e0
SM
3578 || (a->name () && b->name ()
3579 && !strcmp (a->name (), b->name ())));
4e8f195d
TT
3580}
3581
a9d5ef47
SW
3582/* If BASE is an ancestor of DCLASS return the distance between them.
3583 otherwise return -1;
3584 eg:
3585
3586 class A {};
3587 class B: public A {};
3588 class C: public B {};
3589 class D: C {};
3590
3591 distance_to_ancestor (A, A, 0) = 0
3592 distance_to_ancestor (A, B, 0) = 1
3593 distance_to_ancestor (A, C, 0) = 2
3594 distance_to_ancestor (A, D, 0) = 3
3595
3596 If PUBLIC is 1 then only public ancestors are considered,
3597 and the function returns the distance only if BASE is a public ancestor
3598 of DCLASS.
3599 Eg:
3600
0963b4bd 3601 distance_to_ancestor (A, D, 1) = -1. */
c906108c 3602
0526b37a 3603static int
fe978cb0 3604distance_to_ancestor (struct type *base, struct type *dclass, int is_public)
c906108c
SS
3605{
3606 int i;
a9d5ef47 3607 int d;
c5aa993b 3608
f168693b
SM
3609 base = check_typedef (base);
3610 dclass = check_typedef (dclass);
c906108c 3611
4e8f195d 3612 if (class_types_same_p (base, dclass))
a9d5ef47 3613 return 0;
c906108c
SS
3614
3615 for (i = 0; i < TYPE_N_BASECLASSES (dclass); i++)
4e8f195d 3616 {
fe978cb0 3617 if (is_public && ! BASETYPE_VIA_PUBLIC (dclass, i))
0526b37a
SW
3618 continue;
3619
fe978cb0 3620 d = distance_to_ancestor (base, TYPE_BASECLASS (dclass, i), is_public);
a9d5ef47
SW
3621 if (d >= 0)
3622 return 1 + d;
4e8f195d 3623 }
c906108c 3624
a9d5ef47 3625 return -1;
c906108c 3626}
4e8f195d 3627
0526b37a
SW
3628/* Check whether BASE is an ancestor or base class or DCLASS
3629 Return 1 if so, and 0 if not.
3630 Note: If BASE and DCLASS are of the same type, this function
3631 will return 1. So for some class A, is_ancestor (A, A) will
3632 return 1. */
3633
3634int
3635is_ancestor (struct type *base, struct type *dclass)
3636{
a9d5ef47 3637 return distance_to_ancestor (base, dclass, 0) >= 0;
0526b37a
SW
3638}
3639
4e8f195d
TT
3640/* Like is_ancestor, but only returns true when BASE is a public
3641 ancestor of DCLASS. */
3642
3643int
3644is_public_ancestor (struct type *base, struct type *dclass)
3645{
a9d5ef47 3646 return distance_to_ancestor (base, dclass, 1) >= 0;
4e8f195d
TT
3647}
3648
3649/* A helper function for is_unique_ancestor. */
3650
3651static int
3652is_unique_ancestor_worker (struct type *base, struct type *dclass,
3653 int *offset,
8af8e3bc
PA
3654 const gdb_byte *valaddr, int embedded_offset,
3655 CORE_ADDR address, struct value *val)
4e8f195d
TT
3656{
3657 int i, count = 0;
3658
f168693b
SM
3659 base = check_typedef (base);
3660 dclass = check_typedef (dclass);
4e8f195d
TT
3661
3662 for (i = 0; i < TYPE_N_BASECLASSES (dclass) && count < 2; ++i)
3663 {
8af8e3bc
PA
3664 struct type *iter;
3665 int this_offset;
4e8f195d 3666
8af8e3bc
PA
3667 iter = check_typedef (TYPE_BASECLASS (dclass, i));
3668
3669 this_offset = baseclass_offset (dclass, i, valaddr, embedded_offset,
3670 address, val);
4e8f195d
TT
3671
3672 if (class_types_same_p (base, iter))
3673 {
3674 /* If this is the first subclass, set *OFFSET and set count
3675 to 1. Otherwise, if this is at the same offset as
3676 previous instances, do nothing. Otherwise, increment
3677 count. */
3678 if (*offset == -1)
3679 {
3680 *offset = this_offset;
3681 count = 1;
3682 }
3683 else if (this_offset == *offset)
3684 {
3685 /* Nothing. */
3686 }
3687 else
3688 ++count;
3689 }
3690 else
3691 count += is_unique_ancestor_worker (base, iter, offset,
8af8e3bc
PA
3692 valaddr,
3693 embedded_offset + this_offset,
3694 address, val);
4e8f195d
TT
3695 }
3696
3697 return count;
3698}
3699
3700/* Like is_ancestor, but only returns true if BASE is a unique base
3701 class of the type of VAL. */
3702
3703int
3704is_unique_ancestor (struct type *base, struct value *val)
3705{
3706 int offset = -1;
3707
3708 return is_unique_ancestor_worker (base, value_type (val), &offset,
8af8e3bc
PA
3709 value_contents_for_printing (val),
3710 value_embedded_offset (val),
3711 value_address (val), val) == 1;
4e8f195d
TT
3712}
3713
7ab4a236
TT
3714/* See gdbtypes.h. */
3715
3716enum bfd_endian
3717type_byte_order (const struct type *type)
3718{
3719 bfd_endian byteorder = gdbarch_byte_order (get_type_arch (type));
3720 if (TYPE_ENDIANITY_NOT_DEFAULT (type))
3721 {
3722 if (byteorder == BFD_ENDIAN_BIG)
3723 return BFD_ENDIAN_LITTLE;
3724 else
3725 {
3726 gdb_assert (byteorder == BFD_ENDIAN_LITTLE);
3727 return BFD_ENDIAN_BIG;
3728 }
3729 }
3730
3731 return byteorder;
3732}
3733
c906108c 3734\f
5212577a 3735/* Overload resolution. */
c906108c 3736
6403aeea
SW
3737/* Return the sum of the rank of A with the rank of B. */
3738
3739struct rank
3740sum_ranks (struct rank a, struct rank b)
3741{
3742 struct rank c;
3743 c.rank = a.rank + b.rank;
a9d5ef47 3744 c.subrank = a.subrank + b.subrank;
6403aeea
SW
3745 return c;
3746}
3747
3748/* Compare rank A and B and return:
3749 0 if a = b
3750 1 if a is better than b
3751 -1 if b is better than a. */
3752
3753int
3754compare_ranks (struct rank a, struct rank b)
3755{
3756 if (a.rank == b.rank)
a9d5ef47
SW
3757 {
3758 if (a.subrank == b.subrank)
3759 return 0;
3760 if (a.subrank < b.subrank)
3761 return 1;
3762 if (a.subrank > b.subrank)
3763 return -1;
3764 }
6403aeea
SW
3765
3766 if (a.rank < b.rank)
3767 return 1;
3768
0963b4bd 3769 /* a.rank > b.rank */
6403aeea
SW
3770 return -1;
3771}
c5aa993b 3772
0963b4bd 3773/* Functions for overload resolution begin here. */
c906108c
SS
3774
3775/* Compare two badness vectors A and B and return the result.
7ba81444
MS
3776 0 => A and B are identical
3777 1 => A and B are incomparable
3778 2 => A is better than B
3779 3 => A is worse than B */
c906108c
SS
3780
3781int
82ceee50 3782compare_badness (const badness_vector &a, const badness_vector &b)
c906108c
SS
3783{
3784 int i;
3785 int tmp;
c5aa993b
JM
3786 short found_pos = 0; /* any positives in c? */
3787 short found_neg = 0; /* any negatives in c? */
3788
82ceee50
PA
3789 /* differing sizes => incomparable */
3790 if (a.size () != b.size ())
c906108c
SS
3791 return 1;
3792
c5aa993b 3793 /* Subtract b from a */
82ceee50 3794 for (i = 0; i < a.size (); i++)
c906108c 3795 {
82ceee50 3796 tmp = compare_ranks (b[i], a[i]);
c906108c 3797 if (tmp > 0)
c5aa993b 3798 found_pos = 1;
c906108c 3799 else if (tmp < 0)
c5aa993b 3800 found_neg = 1;
c906108c
SS
3801 }
3802
3803 if (found_pos)
3804 {
3805 if (found_neg)
c5aa993b 3806 return 1; /* incomparable */
c906108c 3807 else
c5aa993b 3808 return 3; /* A > B */
c906108c 3809 }
c5aa993b
JM
3810 else
3811 /* no positives */
c906108c
SS
3812 {
3813 if (found_neg)
c5aa993b 3814 return 2; /* A < B */
c906108c 3815 else
c5aa993b 3816 return 0; /* A == B */
c906108c
SS
3817 }
3818}
3819
6b1747cd 3820/* Rank a function by comparing its parameter types (PARMS), to the
82ceee50
PA
3821 types of an argument list (ARGS). Return the badness vector. This
3822 has ARGS.size() + 1 entries. */
c906108c 3823
82ceee50 3824badness_vector
6b1747cd
PA
3825rank_function (gdb::array_view<type *> parms,
3826 gdb::array_view<value *> args)
c906108c 3827{
82ceee50
PA
3828 /* add 1 for the length-match rank. */
3829 badness_vector bv;
3830 bv.reserve (1 + args.size ());
c906108c
SS
3831
3832 /* First compare the lengths of the supplied lists.
7ba81444 3833 If there is a mismatch, set it to a high value. */
c5aa993b 3834
c906108c 3835 /* pai/1997-06-03 FIXME: when we have debug info about default
7ba81444
MS
3836 arguments and ellipsis parameter lists, we should consider those
3837 and rank the length-match more finely. */
c906108c 3838
82ceee50
PA
3839 bv.push_back ((args.size () != parms.size ())
3840 ? LENGTH_MISMATCH_BADNESS
3841 : EXACT_MATCH_BADNESS);
c906108c 3842
0963b4bd 3843 /* Now rank all the parameters of the candidate function. */
82ceee50
PA
3844 size_t min_len = std::min (parms.size (), args.size ());
3845
3846 for (size_t i = 0; i < min_len; i++)
3847 bv.push_back (rank_one_type (parms[i], value_type (args[i]),
3848 args[i]));
c906108c 3849
0963b4bd 3850 /* If more arguments than parameters, add dummy entries. */
82ceee50
PA
3851 for (size_t i = min_len; i < args.size (); i++)
3852 bv.push_back (TOO_FEW_PARAMS_BADNESS);
c906108c
SS
3853
3854 return bv;
3855}
3856
973ccf8b
DJ
3857/* Compare the names of two integer types, assuming that any sign
3858 qualifiers have been checked already. We do it this way because
3859 there may be an "int" in the name of one of the types. */
3860
3861static int
3862integer_types_same_name_p (const char *first, const char *second)
3863{
3864 int first_p, second_p;
3865
7ba81444
MS
3866 /* If both are shorts, return 1; if neither is a short, keep
3867 checking. */
973ccf8b
DJ
3868 first_p = (strstr (first, "short") != NULL);
3869 second_p = (strstr (second, "short") != NULL);
3870 if (first_p && second_p)
3871 return 1;
3872 if (first_p || second_p)
3873 return 0;
3874
3875 /* Likewise for long. */
3876 first_p = (strstr (first, "long") != NULL);
3877 second_p = (strstr (second, "long") != NULL);
3878 if (first_p && second_p)
3879 return 1;
3880 if (first_p || second_p)
3881 return 0;
3882
3883 /* Likewise for char. */
3884 first_p = (strstr (first, "char") != NULL);
3885 second_p = (strstr (second, "char") != NULL);
3886 if (first_p && second_p)
3887 return 1;
3888 if (first_p || second_p)
3889 return 0;
3890
3891 /* They must both be ints. */
3892 return 1;
3893}
3894
894882e3
TT
3895/* Compares type A to type B. Returns true if they represent the same
3896 type, false otherwise. */
7062b0a0 3897
894882e3 3898bool
7062b0a0
SW
3899types_equal (struct type *a, struct type *b)
3900{
3901 /* Identical type pointers. */
3902 /* However, this still doesn't catch all cases of same type for b
3903 and a. The reason is that builtin types are different from
3904 the same ones constructed from the object. */
3905 if (a == b)
894882e3 3906 return true;
7062b0a0
SW
3907
3908 /* Resolve typedefs */
78134374 3909 if (a->code () == TYPE_CODE_TYPEDEF)
7062b0a0 3910 a = check_typedef (a);
78134374 3911 if (b->code () == TYPE_CODE_TYPEDEF)
7062b0a0
SW
3912 b = check_typedef (b);
3913
3914 /* If after resolving typedefs a and b are not of the same type
3915 code then they are not equal. */
78134374 3916 if (a->code () != b->code ())
894882e3 3917 return false;
7062b0a0
SW
3918
3919 /* If a and b are both pointers types or both reference types then
3920 they are equal of the same type iff the objects they refer to are
3921 of the same type. */
78134374
SM
3922 if (a->code () == TYPE_CODE_PTR
3923 || a->code () == TYPE_CODE_REF)
7062b0a0
SW
3924 return types_equal (TYPE_TARGET_TYPE (a),
3925 TYPE_TARGET_TYPE (b));
3926
0963b4bd 3927 /* Well, damnit, if the names are exactly the same, I'll say they
7062b0a0
SW
3928 are exactly the same. This happens when we generate method
3929 stubs. The types won't point to the same address, but they
0963b4bd 3930 really are the same. */
7062b0a0 3931
7d93a1e0
SM
3932 if (a->name () && b->name ()
3933 && strcmp (a->name (), b->name ()) == 0)
894882e3 3934 return true;
7062b0a0
SW
3935
3936 /* Check if identical after resolving typedefs. */
3937 if (a == b)
894882e3 3938 return true;
7062b0a0 3939
9ce98649
TT
3940 /* Two function types are equal if their argument and return types
3941 are equal. */
78134374 3942 if (a->code () == TYPE_CODE_FUNC)
9ce98649
TT
3943 {
3944 int i;
3945
1f704f76 3946 if (a->num_fields () != b->num_fields ())
894882e3 3947 return false;
9ce98649
TT
3948
3949 if (!types_equal (TYPE_TARGET_TYPE (a), TYPE_TARGET_TYPE (b)))
894882e3 3950 return false;
9ce98649 3951
1f704f76 3952 for (i = 0; i < a->num_fields (); ++i)
9ce98649 3953 if (!types_equal (TYPE_FIELD_TYPE (a, i), TYPE_FIELD_TYPE (b, i)))
894882e3 3954 return false;
9ce98649 3955
894882e3 3956 return true;
9ce98649
TT
3957 }
3958
894882e3 3959 return false;
7062b0a0 3960}
ca092b61
DE
3961\f
3962/* Deep comparison of types. */
3963
3964/* An entry in the type-equality bcache. */
3965
894882e3 3966struct type_equality_entry
ca092b61 3967{
894882e3
TT
3968 type_equality_entry (struct type *t1, struct type *t2)
3969 : type1 (t1),
3970 type2 (t2)
3971 {
3972 }
ca092b61 3973
894882e3
TT
3974 struct type *type1, *type2;
3975};
ca092b61 3976
894882e3
TT
3977/* A helper function to compare two strings. Returns true if they are
3978 the same, false otherwise. Handles NULLs properly. */
ca092b61 3979
894882e3 3980static bool
ca092b61
DE
3981compare_maybe_null_strings (const char *s, const char *t)
3982{
894882e3
TT
3983 if (s == NULL || t == NULL)
3984 return s == t;
ca092b61
DE
3985 return strcmp (s, t) == 0;
3986}
3987
3988/* A helper function for check_types_worklist that checks two types for
894882e3
TT
3989 "deep" equality. Returns true if the types are considered the
3990 same, false otherwise. */
ca092b61 3991
894882e3 3992static bool
ca092b61 3993check_types_equal (struct type *type1, struct type *type2,
894882e3 3994 std::vector<type_equality_entry> *worklist)
ca092b61 3995{
f168693b
SM
3996 type1 = check_typedef (type1);
3997 type2 = check_typedef (type2);
ca092b61
DE
3998
3999 if (type1 == type2)
894882e3 4000 return true;
ca092b61 4001
78134374 4002 if (type1->code () != type2->code ()
ca092b61
DE
4003 || TYPE_LENGTH (type1) != TYPE_LENGTH (type2)
4004 || TYPE_UNSIGNED (type1) != TYPE_UNSIGNED (type2)
4005 || TYPE_NOSIGN (type1) != TYPE_NOSIGN (type2)
34877895 4006 || TYPE_ENDIANITY_NOT_DEFAULT (type1) != TYPE_ENDIANITY_NOT_DEFAULT (type2)
ca092b61
DE
4007 || TYPE_VARARGS (type1) != TYPE_VARARGS (type2)
4008 || TYPE_VECTOR (type1) != TYPE_VECTOR (type2)
4009 || TYPE_NOTTEXT (type1) != TYPE_NOTTEXT (type2)
4010 || TYPE_INSTANCE_FLAGS (type1) != TYPE_INSTANCE_FLAGS (type2)
1f704f76 4011 || type1->num_fields () != type2->num_fields ())
894882e3 4012 return false;
ca092b61 4013
7d93a1e0 4014 if (!compare_maybe_null_strings (type1->name (), type2->name ()))
894882e3 4015 return false;
7d93a1e0 4016 if (!compare_maybe_null_strings (type1->name (), type2->name ()))
894882e3 4017 return false;
ca092b61 4018
78134374 4019 if (type1->code () == TYPE_CODE_RANGE)
ca092b61 4020 {
0f59d5fc 4021 if (*TYPE_RANGE_DATA (type1) != *TYPE_RANGE_DATA (type2))
894882e3 4022 return false;
ca092b61
DE
4023 }
4024 else
4025 {
4026 int i;
4027
1f704f76 4028 for (i = 0; i < type1->num_fields (); ++i)
ca092b61
DE
4029 {
4030 const struct field *field1 = &TYPE_FIELD (type1, i);
4031 const struct field *field2 = &TYPE_FIELD (type2, i);
ca092b61
DE
4032
4033 if (FIELD_ARTIFICIAL (*field1) != FIELD_ARTIFICIAL (*field2)
4034 || FIELD_BITSIZE (*field1) != FIELD_BITSIZE (*field2)
4035 || FIELD_LOC_KIND (*field1) != FIELD_LOC_KIND (*field2))
894882e3 4036 return false;
ca092b61
DE
4037 if (!compare_maybe_null_strings (FIELD_NAME (*field1),
4038 FIELD_NAME (*field2)))
894882e3 4039 return false;
ca092b61
DE
4040 switch (FIELD_LOC_KIND (*field1))
4041 {
4042 case FIELD_LOC_KIND_BITPOS:
4043 if (FIELD_BITPOS (*field1) != FIELD_BITPOS (*field2))
894882e3 4044 return false;
ca092b61
DE
4045 break;
4046 case FIELD_LOC_KIND_ENUMVAL:
4047 if (FIELD_ENUMVAL (*field1) != FIELD_ENUMVAL (*field2))
894882e3 4048 return false;
ca092b61
DE
4049 break;
4050 case FIELD_LOC_KIND_PHYSADDR:
4051 if (FIELD_STATIC_PHYSADDR (*field1)
4052 != FIELD_STATIC_PHYSADDR (*field2))
894882e3 4053 return false;
ca092b61
DE
4054 break;
4055 case FIELD_LOC_KIND_PHYSNAME:
4056 if (!compare_maybe_null_strings (FIELD_STATIC_PHYSNAME (*field1),
4057 FIELD_STATIC_PHYSNAME (*field2)))
894882e3 4058 return false;
ca092b61
DE
4059 break;
4060 case FIELD_LOC_KIND_DWARF_BLOCK:
4061 {
4062 struct dwarf2_locexpr_baton *block1, *block2;
4063
4064 block1 = FIELD_DWARF_BLOCK (*field1);
4065 block2 = FIELD_DWARF_BLOCK (*field2);
4066 if (block1->per_cu != block2->per_cu
4067 || block1->size != block2->size
4068 || memcmp (block1->data, block2->data, block1->size) != 0)
894882e3 4069 return false;
ca092b61
DE
4070 }
4071 break;
4072 default:
4073 internal_error (__FILE__, __LINE__, _("Unsupported field kind "
4074 "%d by check_types_equal"),
4075 FIELD_LOC_KIND (*field1));
4076 }
4077
894882e3 4078 worklist->emplace_back (FIELD_TYPE (*field1), FIELD_TYPE (*field2));
ca092b61
DE
4079 }
4080 }
4081
4082 if (TYPE_TARGET_TYPE (type1) != NULL)
4083 {
ca092b61 4084 if (TYPE_TARGET_TYPE (type2) == NULL)
894882e3 4085 return false;
ca092b61 4086
894882e3
TT
4087 worklist->emplace_back (TYPE_TARGET_TYPE (type1),
4088 TYPE_TARGET_TYPE (type2));
ca092b61
DE
4089 }
4090 else if (TYPE_TARGET_TYPE (type2) != NULL)
894882e3 4091 return false;
ca092b61 4092
894882e3 4093 return true;
ca092b61
DE
4094}
4095
894882e3
TT
4096/* Check types on a worklist for equality. Returns false if any pair
4097 is not equal, true if they are all considered equal. */
ca092b61 4098
894882e3
TT
4099static bool
4100check_types_worklist (std::vector<type_equality_entry> *worklist,
dfb65191 4101 gdb::bcache *cache)
ca092b61 4102{
894882e3 4103 while (!worklist->empty ())
ca092b61 4104 {
ca092b61
DE
4105 int added;
4106
894882e3
TT
4107 struct type_equality_entry entry = std::move (worklist->back ());
4108 worklist->pop_back ();
ca092b61
DE
4109
4110 /* If the type pair has already been visited, we know it is
4111 ok. */
25629dfd 4112 cache->insert (&entry, sizeof (entry), &added);
ca092b61
DE
4113 if (!added)
4114 continue;
4115
894882e3
TT
4116 if (!check_types_equal (entry.type1, entry.type2, worklist))
4117 return false;
ca092b61 4118 }
7062b0a0 4119
894882e3 4120 return true;
ca092b61
DE
4121}
4122
894882e3
TT
4123/* Return true if types TYPE1 and TYPE2 are equal, as determined by a
4124 "deep comparison". Otherwise return false. */
ca092b61 4125
894882e3 4126bool
ca092b61
DE
4127types_deeply_equal (struct type *type1, struct type *type2)
4128{
894882e3 4129 std::vector<type_equality_entry> worklist;
ca092b61
DE
4130
4131 gdb_assert (type1 != NULL && type2 != NULL);
4132
4133 /* Early exit for the simple case. */
4134 if (type1 == type2)
894882e3 4135 return true;
ca092b61 4136
dfb65191 4137 gdb::bcache cache (nullptr, nullptr);
894882e3 4138 worklist.emplace_back (type1, type2);
25629dfd 4139 return check_types_worklist (&worklist, &cache);
ca092b61 4140}
3f2f83dd
KB
4141
4142/* Allocated status of type TYPE. Return zero if type TYPE is allocated.
4143 Otherwise return one. */
4144
4145int
4146type_not_allocated (const struct type *type)
4147{
4148 struct dynamic_prop *prop = TYPE_ALLOCATED_PROP (type);
4149
4150 return (prop && TYPE_DYN_PROP_KIND (prop) == PROP_CONST
4151 && !TYPE_DYN_PROP_ADDR (prop));
4152}
4153
4154/* Associated status of type TYPE. Return zero if type TYPE is associated.
4155 Otherwise return one. */
4156
4157int
4158type_not_associated (const struct type *type)
4159{
4160 struct dynamic_prop *prop = TYPE_ASSOCIATED_PROP (type);
4161
4162 return (prop && TYPE_DYN_PROP_KIND (prop) == PROP_CONST
4163 && !TYPE_DYN_PROP_ADDR (prop));
4164}
9293fc63
SM
4165
4166/* rank_one_type helper for when PARM's type code is TYPE_CODE_PTR. */
4167
4168static struct rank
4169rank_one_type_parm_ptr (struct type *parm, struct type *arg, struct value *value)
4170{
4171 struct rank rank = {0,0};
4172
78134374 4173 switch (arg->code ())
9293fc63
SM
4174 {
4175 case TYPE_CODE_PTR:
4176
4177 /* Allowed pointer conversions are:
4178 (a) pointer to void-pointer conversion. */
78134374 4179 if (TYPE_TARGET_TYPE (parm)->code () == TYPE_CODE_VOID)
9293fc63
SM
4180 return VOID_PTR_CONVERSION_BADNESS;
4181
4182 /* (b) pointer to ancestor-pointer conversion. */
4183 rank.subrank = distance_to_ancestor (TYPE_TARGET_TYPE (parm),
4184 TYPE_TARGET_TYPE (arg),
4185 0);
4186 if (rank.subrank >= 0)
4187 return sum_ranks (BASE_PTR_CONVERSION_BADNESS, rank);
4188
4189 return INCOMPATIBLE_TYPE_BADNESS;
4190 case TYPE_CODE_ARRAY:
4191 {
4192 struct type *t1 = TYPE_TARGET_TYPE (parm);
4193 struct type *t2 = TYPE_TARGET_TYPE (arg);
4194
4195 if (types_equal (t1, t2))
4196 {
4197 /* Make sure they are CV equal. */
4198 if (TYPE_CONST (t1) != TYPE_CONST (t2))
4199 rank.subrank |= CV_CONVERSION_CONST;
4200 if (TYPE_VOLATILE (t1) != TYPE_VOLATILE (t2))
4201 rank.subrank |= CV_CONVERSION_VOLATILE;
4202 if (rank.subrank != 0)
4203 return sum_ranks (CV_CONVERSION_BADNESS, rank);
4204 return EXACT_MATCH_BADNESS;
4205 }
4206 return INCOMPATIBLE_TYPE_BADNESS;
4207 }
4208 case TYPE_CODE_FUNC:
4209 return rank_one_type (TYPE_TARGET_TYPE (parm), arg, NULL);
4210 case TYPE_CODE_INT:
78134374 4211 if (value != NULL && value_type (value)->code () == TYPE_CODE_INT)
9293fc63
SM
4212 {
4213 if (value_as_long (value) == 0)
4214 {
4215 /* Null pointer conversion: allow it to be cast to a pointer.
4216 [4.10.1 of C++ standard draft n3290] */
4217 return NULL_POINTER_CONVERSION_BADNESS;
4218 }
4219 else
4220 {
4221 /* If type checking is disabled, allow the conversion. */
4222 if (!strict_type_checking)
4223 return NS_INTEGER_POINTER_CONVERSION_BADNESS;
4224 }
4225 }
4226 /* fall through */
4227 case TYPE_CODE_ENUM:
4228 case TYPE_CODE_FLAGS:
4229 case TYPE_CODE_CHAR:
4230 case TYPE_CODE_RANGE:
4231 case TYPE_CODE_BOOL:
4232 default:
4233 return INCOMPATIBLE_TYPE_BADNESS;
4234 }
4235}
4236
b9f4512f
SM
4237/* rank_one_type helper for when PARM's type code is TYPE_CODE_ARRAY. */
4238
4239static struct rank
4240rank_one_type_parm_array (struct type *parm, struct type *arg, struct value *value)
4241{
78134374 4242 switch (arg->code ())
b9f4512f
SM
4243 {
4244 case TYPE_CODE_PTR:
4245 case TYPE_CODE_ARRAY:
4246 return rank_one_type (TYPE_TARGET_TYPE (parm),
4247 TYPE_TARGET_TYPE (arg), NULL);
4248 default:
4249 return INCOMPATIBLE_TYPE_BADNESS;
4250 }
4251}
4252
f1f832d6
SM
4253/* rank_one_type helper for when PARM's type code is TYPE_CODE_FUNC. */
4254
4255static struct rank
4256rank_one_type_parm_func (struct type *parm, struct type *arg, struct value *value)
4257{
78134374 4258 switch (arg->code ())
f1f832d6
SM
4259 {
4260 case TYPE_CODE_PTR: /* funcptr -> func */
4261 return rank_one_type (parm, TYPE_TARGET_TYPE (arg), NULL);
4262 default:
4263 return INCOMPATIBLE_TYPE_BADNESS;
4264 }
4265}
4266
34910087
SM
4267/* rank_one_type helper for when PARM's type code is TYPE_CODE_INT. */
4268
4269static struct rank
4270rank_one_type_parm_int (struct type *parm, struct type *arg, struct value *value)
4271{
78134374 4272 switch (arg->code ())
34910087
SM
4273 {
4274 case TYPE_CODE_INT:
4275 if (TYPE_LENGTH (arg) == TYPE_LENGTH (parm))
4276 {
4277 /* Deal with signed, unsigned, and plain chars and
4278 signed and unsigned ints. */
4279 if (TYPE_NOSIGN (parm))
4280 {
4281 /* This case only for character types. */
4282 if (TYPE_NOSIGN (arg))
4283 return EXACT_MATCH_BADNESS; /* plain char -> plain char */
4284 else /* signed/unsigned char -> plain char */
4285 return INTEGER_CONVERSION_BADNESS;
4286 }
4287 else if (TYPE_UNSIGNED (parm))
4288 {
4289 if (TYPE_UNSIGNED (arg))
4290 {
4291 /* unsigned int -> unsigned int, or
4292 unsigned long -> unsigned long */
7d93a1e0
SM
4293 if (integer_types_same_name_p (parm->name (),
4294 arg->name ()))
34910087 4295 return EXACT_MATCH_BADNESS;
7d93a1e0 4296 else if (integer_types_same_name_p (arg->name (),
34910087 4297 "int")
7d93a1e0 4298 && integer_types_same_name_p (parm->name (),
34910087
SM
4299 "long"))
4300 /* unsigned int -> unsigned long */
4301 return INTEGER_PROMOTION_BADNESS;
4302 else
4303 /* unsigned long -> unsigned int */
4304 return INTEGER_CONVERSION_BADNESS;
4305 }
4306 else
4307 {
7d93a1e0 4308 if (integer_types_same_name_p (arg->name (),
34910087 4309 "long")
7d93a1e0 4310 && integer_types_same_name_p (parm->name (),
34910087
SM
4311 "int"))
4312 /* signed long -> unsigned int */
4313 return INTEGER_CONVERSION_BADNESS;
4314 else
4315 /* signed int/long -> unsigned int/long */
4316 return INTEGER_CONVERSION_BADNESS;
4317 }
4318 }
4319 else if (!TYPE_NOSIGN (arg) && !TYPE_UNSIGNED (arg))
4320 {
7d93a1e0
SM
4321 if (integer_types_same_name_p (parm->name (),
4322 arg->name ()))
34910087 4323 return EXACT_MATCH_BADNESS;
7d93a1e0 4324 else if (integer_types_same_name_p (arg->name (),
34910087 4325 "int")
7d93a1e0 4326 && integer_types_same_name_p (parm->name (),
34910087
SM
4327 "long"))
4328 return INTEGER_PROMOTION_BADNESS;
4329 else
4330 return INTEGER_CONVERSION_BADNESS;
4331 }
4332 else
4333 return INTEGER_CONVERSION_BADNESS;
4334 }
4335 else if (TYPE_LENGTH (arg) < TYPE_LENGTH (parm))
4336 return INTEGER_PROMOTION_BADNESS;
4337 else
4338 return INTEGER_CONVERSION_BADNESS;
4339 case TYPE_CODE_ENUM:
4340 case TYPE_CODE_FLAGS:
4341 case TYPE_CODE_CHAR:
4342 case TYPE_CODE_RANGE:
4343 case TYPE_CODE_BOOL:
4344 if (TYPE_DECLARED_CLASS (arg))
4345 return INCOMPATIBLE_TYPE_BADNESS;
4346 return INTEGER_PROMOTION_BADNESS;
4347 case TYPE_CODE_FLT:
4348 return INT_FLOAT_CONVERSION_BADNESS;
4349 case TYPE_CODE_PTR:
4350 return NS_POINTER_CONVERSION_BADNESS;
4351 default:
4352 return INCOMPATIBLE_TYPE_BADNESS;
4353 }
4354}
4355
793cd1d2
SM
4356/* rank_one_type helper for when PARM's type code is TYPE_CODE_ENUM. */
4357
4358static struct rank
4359rank_one_type_parm_enum (struct type *parm, struct type *arg, struct value *value)
4360{
78134374 4361 switch (arg->code ())
793cd1d2
SM
4362 {
4363 case TYPE_CODE_INT:
4364 case TYPE_CODE_CHAR:
4365 case TYPE_CODE_RANGE:
4366 case TYPE_CODE_BOOL:
4367 case TYPE_CODE_ENUM:
4368 if (TYPE_DECLARED_CLASS (parm) || TYPE_DECLARED_CLASS (arg))
4369 return INCOMPATIBLE_TYPE_BADNESS;
4370 return INTEGER_CONVERSION_BADNESS;
4371 case TYPE_CODE_FLT:
4372 return INT_FLOAT_CONVERSION_BADNESS;
4373 default:
4374 return INCOMPATIBLE_TYPE_BADNESS;
4375 }
4376}
4377
41ea4728
SM
4378/* rank_one_type helper for when PARM's type code is TYPE_CODE_CHAR. */
4379
4380static struct rank
4381rank_one_type_parm_char (struct type *parm, struct type *arg, struct value *value)
4382{
78134374 4383 switch (arg->code ())
41ea4728
SM
4384 {
4385 case TYPE_CODE_RANGE:
4386 case TYPE_CODE_BOOL:
4387 case TYPE_CODE_ENUM:
4388 if (TYPE_DECLARED_CLASS (arg))
4389 return INCOMPATIBLE_TYPE_BADNESS;
4390 return INTEGER_CONVERSION_BADNESS;
4391 case TYPE_CODE_FLT:
4392 return INT_FLOAT_CONVERSION_BADNESS;
4393 case TYPE_CODE_INT:
4394 if (TYPE_LENGTH (arg) > TYPE_LENGTH (parm))
4395 return INTEGER_CONVERSION_BADNESS;
4396 else if (TYPE_LENGTH (arg) < TYPE_LENGTH (parm))
4397 return INTEGER_PROMOTION_BADNESS;
4398 /* fall through */
4399 case TYPE_CODE_CHAR:
4400 /* Deal with signed, unsigned, and plain chars for C++ and
4401 with int cases falling through from previous case. */
4402 if (TYPE_NOSIGN (parm))
4403 {
4404 if (TYPE_NOSIGN (arg))
4405 return EXACT_MATCH_BADNESS;
4406 else
4407 return INTEGER_CONVERSION_BADNESS;
4408 }
4409 else if (TYPE_UNSIGNED (parm))
4410 {
4411 if (TYPE_UNSIGNED (arg))
4412 return EXACT_MATCH_BADNESS;
4413 else
4414 return INTEGER_PROMOTION_BADNESS;
4415 }
4416 else if (!TYPE_NOSIGN (arg) && !TYPE_UNSIGNED (arg))
4417 return EXACT_MATCH_BADNESS;
4418 else
4419 return INTEGER_CONVERSION_BADNESS;
4420 default:
4421 return INCOMPATIBLE_TYPE_BADNESS;
4422 }
4423}
4424
0dd322dc
SM
4425/* rank_one_type helper for when PARM's type code is TYPE_CODE_RANGE. */
4426
4427static struct rank
4428rank_one_type_parm_range (struct type *parm, struct type *arg, struct value *value)
4429{
78134374 4430 switch (arg->code ())
0dd322dc
SM
4431 {
4432 case TYPE_CODE_INT:
4433 case TYPE_CODE_CHAR:
4434 case TYPE_CODE_RANGE:
4435 case TYPE_CODE_BOOL:
4436 case TYPE_CODE_ENUM:
4437 return INTEGER_CONVERSION_BADNESS;
4438 case TYPE_CODE_FLT:
4439 return INT_FLOAT_CONVERSION_BADNESS;
4440 default:
4441 return INCOMPATIBLE_TYPE_BADNESS;
4442 }
4443}
4444
2c509035
SM
4445/* rank_one_type helper for when PARM's type code is TYPE_CODE_BOOL. */
4446
4447static struct rank
4448rank_one_type_parm_bool (struct type *parm, struct type *arg, struct value *value)
4449{
78134374 4450 switch (arg->code ())
2c509035
SM
4451 {
4452 /* n3290 draft, section 4.12.1 (conv.bool):
4453
4454 "A prvalue of arithmetic, unscoped enumeration, pointer, or
4455 pointer to member type can be converted to a prvalue of type
4456 bool. A zero value, null pointer value, or null member pointer
4457 value is converted to false; any other value is converted to
4458 true. A prvalue of type std::nullptr_t can be converted to a
4459 prvalue of type bool; the resulting value is false." */
4460 case TYPE_CODE_INT:
4461 case TYPE_CODE_CHAR:
4462 case TYPE_CODE_ENUM:
4463 case TYPE_CODE_FLT:
4464 case TYPE_CODE_MEMBERPTR:
4465 case TYPE_CODE_PTR:
4466 return BOOL_CONVERSION_BADNESS;
4467 case TYPE_CODE_RANGE:
4468 return INCOMPATIBLE_TYPE_BADNESS;
4469 case TYPE_CODE_BOOL:
4470 return EXACT_MATCH_BADNESS;
4471 default:
4472 return INCOMPATIBLE_TYPE_BADNESS;
4473 }
4474}
4475
7f17b20d
SM
4476/* rank_one_type helper for when PARM's type code is TYPE_CODE_FLOAT. */
4477
4478static struct rank
4479rank_one_type_parm_float (struct type *parm, struct type *arg, struct value *value)
4480{
78134374 4481 switch (arg->code ())
7f17b20d
SM
4482 {
4483 case TYPE_CODE_FLT:
4484 if (TYPE_LENGTH (arg) < TYPE_LENGTH (parm))
4485 return FLOAT_PROMOTION_BADNESS;
4486 else if (TYPE_LENGTH (arg) == TYPE_LENGTH (parm))
4487 return EXACT_MATCH_BADNESS;
4488 else
4489 return FLOAT_CONVERSION_BADNESS;
4490 case TYPE_CODE_INT:
4491 case TYPE_CODE_BOOL:
4492 case TYPE_CODE_ENUM:
4493 case TYPE_CODE_RANGE:
4494 case TYPE_CODE_CHAR:
4495 return INT_FLOAT_CONVERSION_BADNESS;
4496 default:
4497 return INCOMPATIBLE_TYPE_BADNESS;
4498 }
4499}
4500
2598a94b
SM
4501/* rank_one_type helper for when PARM's type code is TYPE_CODE_COMPLEX. */
4502
4503static struct rank
4504rank_one_type_parm_complex (struct type *parm, struct type *arg, struct value *value)
4505{
78134374 4506 switch (arg->code ())
2598a94b
SM
4507 { /* Strictly not needed for C++, but... */
4508 case TYPE_CODE_FLT:
4509 return FLOAT_PROMOTION_BADNESS;
4510 case TYPE_CODE_COMPLEX:
4511 return EXACT_MATCH_BADNESS;
4512 default:
4513 return INCOMPATIBLE_TYPE_BADNESS;
4514 }
4515}
4516
595f96a9
SM
4517/* rank_one_type helper for when PARM's type code is TYPE_CODE_STRUCT. */
4518
4519static struct rank
4520rank_one_type_parm_struct (struct type *parm, struct type *arg, struct value *value)
4521{
4522 struct rank rank = {0, 0};
4523
78134374 4524 switch (arg->code ())
595f96a9
SM
4525 {
4526 case TYPE_CODE_STRUCT:
4527 /* Check for derivation */
4528 rank.subrank = distance_to_ancestor (parm, arg, 0);
4529 if (rank.subrank >= 0)
4530 return sum_ranks (BASE_CONVERSION_BADNESS, rank);
4531 /* fall through */
4532 default:
4533 return INCOMPATIBLE_TYPE_BADNESS;
4534 }
4535}
4536
f09ce22d
SM
4537/* rank_one_type helper for when PARM's type code is TYPE_CODE_SET. */
4538
4539static struct rank
4540rank_one_type_parm_set (struct type *parm, struct type *arg, struct value *value)
4541{
78134374 4542 switch (arg->code ())
f09ce22d
SM
4543 {
4544 /* Not in C++ */
4545 case TYPE_CODE_SET:
4546 return rank_one_type (TYPE_FIELD_TYPE (parm, 0),
4547 TYPE_FIELD_TYPE (arg, 0), NULL);
4548 default:
4549 return INCOMPATIBLE_TYPE_BADNESS;
4550 }
4551}
4552
c906108c
SS
4553/* Compare one type (PARM) for compatibility with another (ARG).
4554 * PARM is intended to be the parameter type of a function; and
4555 * ARG is the supplied argument's type. This function tests if
4556 * the latter can be converted to the former.
da096638 4557 * VALUE is the argument's value or NULL if none (or called recursively)
c906108c
SS
4558 *
4559 * Return 0 if they are identical types;
4560 * Otherwise, return an integer which corresponds to how compatible
7ba81444
MS
4561 * PARM is to ARG. The higher the return value, the worse the match.
4562 * Generally the "bad" conversions are all uniformly assigned a 100. */
c906108c 4563
6403aeea 4564struct rank
da096638 4565rank_one_type (struct type *parm, struct type *arg, struct value *value)
c906108c 4566{
a9d5ef47 4567 struct rank rank = {0,0};
7062b0a0 4568
c906108c 4569 /* Resolve typedefs */
78134374 4570 if (parm->code () == TYPE_CODE_TYPEDEF)
c906108c 4571 parm = check_typedef (parm);
78134374 4572 if (arg->code () == TYPE_CODE_TYPEDEF)
c906108c
SS
4573 arg = check_typedef (arg);
4574
e15c3eb4 4575 if (TYPE_IS_REFERENCE (parm) && value != NULL)
15c0a2a9 4576 {
e15c3eb4
KS
4577 if (VALUE_LVAL (value) == not_lval)
4578 {
4579 /* Rvalues should preferably bind to rvalue references or const
4580 lvalue references. */
78134374 4581 if (parm->code () == TYPE_CODE_RVALUE_REF)
e15c3eb4
KS
4582 rank.subrank = REFERENCE_CONVERSION_RVALUE;
4583 else if (TYPE_CONST (TYPE_TARGET_TYPE (parm)))
4584 rank.subrank = REFERENCE_CONVERSION_CONST_LVALUE;
4585 else
4586 return INCOMPATIBLE_TYPE_BADNESS;
4587 return sum_ranks (rank, REFERENCE_CONVERSION_BADNESS);
4588 }
4589 else
4590 {
330f1d38 4591 /* It's illegal to pass an lvalue as an rvalue. */
78134374 4592 if (parm->code () == TYPE_CODE_RVALUE_REF)
330f1d38 4593 return INCOMPATIBLE_TYPE_BADNESS;
e15c3eb4 4594 }
15c0a2a9
AV
4595 }
4596
4597 if (types_equal (parm, arg))
15c0a2a9 4598 {
e15c3eb4
KS
4599 struct type *t1 = parm;
4600 struct type *t2 = arg;
15c0a2a9 4601
e15c3eb4 4602 /* For pointers and references, compare target type. */
78134374 4603 if (parm->code () == TYPE_CODE_PTR || TYPE_IS_REFERENCE (parm))
e15c3eb4
KS
4604 {
4605 t1 = TYPE_TARGET_TYPE (parm);
4606 t2 = TYPE_TARGET_TYPE (arg);
4607 }
15c0a2a9 4608
e15c3eb4
KS
4609 /* Make sure they are CV equal, too. */
4610 if (TYPE_CONST (t1) != TYPE_CONST (t2))
4611 rank.subrank |= CV_CONVERSION_CONST;
4612 if (TYPE_VOLATILE (t1) != TYPE_VOLATILE (t2))
4613 rank.subrank |= CV_CONVERSION_VOLATILE;
4614 if (rank.subrank != 0)
4615 return sum_ranks (CV_CONVERSION_BADNESS, rank);
4616 return EXACT_MATCH_BADNESS;
15c0a2a9
AV
4617 }
4618
db577aea 4619 /* See through references, since we can almost make non-references
7ba81444 4620 references. */
aa006118
AV
4621
4622 if (TYPE_IS_REFERENCE (arg))
da096638 4623 return (sum_ranks (rank_one_type (parm, TYPE_TARGET_TYPE (arg), NULL),
06acc08f 4624 REFERENCE_SEE_THROUGH_BADNESS));
aa006118 4625 if (TYPE_IS_REFERENCE (parm))
da096638 4626 return (sum_ranks (rank_one_type (TYPE_TARGET_TYPE (parm), arg, NULL),
06acc08f 4627 REFERENCE_SEE_THROUGH_BADNESS));
5d161b24 4628 if (overload_debug)
7ba81444 4629 /* Debugging only. */
78134374 4630 fprintf_filtered (gdb_stderr,
7ba81444 4631 "------ Arg is %s [%d], parm is %s [%d]\n",
7d93a1e0
SM
4632 arg->name (), arg->code (),
4633 parm->name (), parm->code ());
c906108c 4634
0963b4bd 4635 /* x -> y means arg of type x being supplied for parameter of type y. */
c906108c 4636
78134374 4637 switch (parm->code ())
c906108c 4638 {
c5aa993b 4639 case TYPE_CODE_PTR:
9293fc63 4640 return rank_one_type_parm_ptr (parm, arg, value);
c5aa993b 4641 case TYPE_CODE_ARRAY:
b9f4512f 4642 return rank_one_type_parm_array (parm, arg, value);
c5aa993b 4643 case TYPE_CODE_FUNC:
f1f832d6 4644 return rank_one_type_parm_func (parm, arg, value);
c5aa993b 4645 case TYPE_CODE_INT:
34910087 4646 return rank_one_type_parm_int (parm, arg, value);
c5aa993b 4647 case TYPE_CODE_ENUM:
793cd1d2 4648 return rank_one_type_parm_enum (parm, arg, value);
c5aa993b 4649 case TYPE_CODE_CHAR:
41ea4728 4650 return rank_one_type_parm_char (parm, arg, value);
c5aa993b 4651 case TYPE_CODE_RANGE:
0dd322dc 4652 return rank_one_type_parm_range (parm, arg, value);
c5aa993b 4653 case TYPE_CODE_BOOL:
2c509035 4654 return rank_one_type_parm_bool (parm, arg, value);
c5aa993b 4655 case TYPE_CODE_FLT:
7f17b20d 4656 return rank_one_type_parm_float (parm, arg, value);
c5aa993b 4657 case TYPE_CODE_COMPLEX:
2598a94b 4658 return rank_one_type_parm_complex (parm, arg, value);
c5aa993b 4659 case TYPE_CODE_STRUCT:
595f96a9 4660 return rank_one_type_parm_struct (parm, arg, value);
c5aa993b 4661 case TYPE_CODE_SET:
f09ce22d 4662 return rank_one_type_parm_set (parm, arg, value);
c5aa993b
JM
4663 default:
4664 return INCOMPATIBLE_TYPE_BADNESS;
78134374 4665 } /* switch (arg->code ()) */
c906108c
SS
4666}
4667
0963b4bd 4668/* End of functions for overload resolution. */
5212577a
DE
4669\f
4670/* Routines to pretty-print types. */
c906108c 4671
c906108c 4672static void
fba45db2 4673print_bit_vector (B_TYPE *bits, int nbits)
c906108c
SS
4674{
4675 int bitno;
4676
4677 for (bitno = 0; bitno < nbits; bitno++)
4678 {
4679 if ((bitno % 8) == 0)
4680 {
4681 puts_filtered (" ");
4682 }
4683 if (B_TST (bits, bitno))
a3f17187 4684 printf_filtered (("1"));
c906108c 4685 else
a3f17187 4686 printf_filtered (("0"));
c906108c
SS
4687 }
4688}
4689
ad2f7632 4690/* Note the first arg should be the "this" pointer, we may not want to
7ba81444
MS
4691 include it since we may get into a infinitely recursive
4692 situation. */
c906108c
SS
4693
4694static void
4c9e8482 4695print_args (struct field *args, int nargs, int spaces)
c906108c
SS
4696{
4697 if (args != NULL)
4698 {
ad2f7632
DJ
4699 int i;
4700
4701 for (i = 0; i < nargs; i++)
4c9e8482
DE
4702 {
4703 printfi_filtered (spaces, "[%d] name '%s'\n", i,
4704 args[i].name != NULL ? args[i].name : "<NULL>");
4705 recursive_dump_type (args[i].type, spaces + 2);
4706 }
c906108c
SS
4707 }
4708}
4709
d6a843b5
JK
4710int
4711field_is_static (struct field *f)
4712{
4713 /* "static" fields are the fields whose location is not relative
4714 to the address of the enclosing struct. It would be nice to
4715 have a dedicated flag that would be set for static fields when
4716 the type is being created. But in practice, checking the field
254e6b9e 4717 loc_kind should give us an accurate answer. */
d6a843b5
JK
4718 return (FIELD_LOC_KIND (*f) == FIELD_LOC_KIND_PHYSNAME
4719 || FIELD_LOC_KIND (*f) == FIELD_LOC_KIND_PHYSADDR);
4720}
4721
c906108c 4722static void
fba45db2 4723dump_fn_fieldlists (struct type *type, int spaces)
c906108c
SS
4724{
4725 int method_idx;
4726 int overload_idx;
4727 struct fn_field *f;
4728
4729 printfi_filtered (spaces, "fn_fieldlists ");
d4f3574e 4730 gdb_print_host_address (TYPE_FN_FIELDLISTS (type), gdb_stdout);
c906108c
SS
4731 printf_filtered ("\n");
4732 for (method_idx = 0; method_idx < TYPE_NFN_FIELDS (type); method_idx++)
4733 {
4734 f = TYPE_FN_FIELDLIST1 (type, method_idx);
4735 printfi_filtered (spaces + 2, "[%d] name '%s' (",
4736 method_idx,
4737 TYPE_FN_FIELDLIST_NAME (type, method_idx));
d4f3574e
SS
4738 gdb_print_host_address (TYPE_FN_FIELDLIST_NAME (type, method_idx),
4739 gdb_stdout);
a3f17187 4740 printf_filtered (_(") length %d\n"),
c906108c
SS
4741 TYPE_FN_FIELDLIST_LENGTH (type, method_idx));
4742 for (overload_idx = 0;
4743 overload_idx < TYPE_FN_FIELDLIST_LENGTH (type, method_idx);
4744 overload_idx++)
4745 {
4746 printfi_filtered (spaces + 4, "[%d] physname '%s' (",
4747 overload_idx,
4748 TYPE_FN_FIELD_PHYSNAME (f, overload_idx));
d4f3574e
SS
4749 gdb_print_host_address (TYPE_FN_FIELD_PHYSNAME (f, overload_idx),
4750 gdb_stdout);
c906108c
SS
4751 printf_filtered (")\n");
4752 printfi_filtered (spaces + 8, "type ");
7ba81444
MS
4753 gdb_print_host_address (TYPE_FN_FIELD_TYPE (f, overload_idx),
4754 gdb_stdout);
c906108c
SS
4755 printf_filtered ("\n");
4756
4757 recursive_dump_type (TYPE_FN_FIELD_TYPE (f, overload_idx),
4758 spaces + 8 + 2);
4759
4760 printfi_filtered (spaces + 8, "args ");
7ba81444
MS
4761 gdb_print_host_address (TYPE_FN_FIELD_ARGS (f, overload_idx),
4762 gdb_stdout);
c906108c 4763 printf_filtered ("\n");
4c9e8482 4764 print_args (TYPE_FN_FIELD_ARGS (f, overload_idx),
1f704f76 4765 TYPE_FN_FIELD_TYPE (f, overload_idx)->num_fields (),
4c9e8482 4766 spaces + 8 + 2);
c906108c 4767 printfi_filtered (spaces + 8, "fcontext ");
d4f3574e
SS
4768 gdb_print_host_address (TYPE_FN_FIELD_FCONTEXT (f, overload_idx),
4769 gdb_stdout);
c906108c
SS
4770 printf_filtered ("\n");
4771
4772 printfi_filtered (spaces + 8, "is_const %d\n",
4773 TYPE_FN_FIELD_CONST (f, overload_idx));
4774 printfi_filtered (spaces + 8, "is_volatile %d\n",
4775 TYPE_FN_FIELD_VOLATILE (f, overload_idx));
4776 printfi_filtered (spaces + 8, "is_private %d\n",
4777 TYPE_FN_FIELD_PRIVATE (f, overload_idx));
4778 printfi_filtered (spaces + 8, "is_protected %d\n",
4779 TYPE_FN_FIELD_PROTECTED (f, overload_idx));
4780 printfi_filtered (spaces + 8, "is_stub %d\n",
4781 TYPE_FN_FIELD_STUB (f, overload_idx));
e35000a7
TBA
4782 printfi_filtered (spaces + 8, "defaulted %d\n",
4783 TYPE_FN_FIELD_DEFAULTED (f, overload_idx));
4784 printfi_filtered (spaces + 8, "is_deleted %d\n",
4785 TYPE_FN_FIELD_DELETED (f, overload_idx));
c906108c
SS
4786 printfi_filtered (spaces + 8, "voffset %u\n",
4787 TYPE_FN_FIELD_VOFFSET (f, overload_idx));
4788 }
4789 }
4790}
4791
4792static void
fba45db2 4793print_cplus_stuff (struct type *type, int spaces)
c906108c 4794{
ae6ae975
DE
4795 printfi_filtered (spaces, "vptr_fieldno %d\n", TYPE_VPTR_FIELDNO (type));
4796 printfi_filtered (spaces, "vptr_basetype ");
4797 gdb_print_host_address (TYPE_VPTR_BASETYPE (type), gdb_stdout);
4798 puts_filtered ("\n");
4799 if (TYPE_VPTR_BASETYPE (type) != NULL)
4800 recursive_dump_type (TYPE_VPTR_BASETYPE (type), spaces + 2);
4801
c906108c
SS
4802 printfi_filtered (spaces, "n_baseclasses %d\n",
4803 TYPE_N_BASECLASSES (type));
4804 printfi_filtered (spaces, "nfn_fields %d\n",
4805 TYPE_NFN_FIELDS (type));
c906108c
SS
4806 if (TYPE_N_BASECLASSES (type) > 0)
4807 {
4808 printfi_filtered (spaces, "virtual_field_bits (%d bits at *",
4809 TYPE_N_BASECLASSES (type));
7ba81444
MS
4810 gdb_print_host_address (TYPE_FIELD_VIRTUAL_BITS (type),
4811 gdb_stdout);
c906108c
SS
4812 printf_filtered (")");
4813
4814 print_bit_vector (TYPE_FIELD_VIRTUAL_BITS (type),
4815 TYPE_N_BASECLASSES (type));
4816 puts_filtered ("\n");
4817 }
1f704f76 4818 if (type->num_fields () > 0)
c906108c
SS
4819 {
4820 if (TYPE_FIELD_PRIVATE_BITS (type) != NULL)
4821 {
7ba81444
MS
4822 printfi_filtered (spaces,
4823 "private_field_bits (%d bits at *",
1f704f76 4824 type->num_fields ());
7ba81444
MS
4825 gdb_print_host_address (TYPE_FIELD_PRIVATE_BITS (type),
4826 gdb_stdout);
c906108c
SS
4827 printf_filtered (")");
4828 print_bit_vector (TYPE_FIELD_PRIVATE_BITS (type),
1f704f76 4829 type->num_fields ());
c906108c
SS
4830 puts_filtered ("\n");
4831 }
4832 if (TYPE_FIELD_PROTECTED_BITS (type) != NULL)
4833 {
7ba81444
MS
4834 printfi_filtered (spaces,
4835 "protected_field_bits (%d bits at *",
1f704f76 4836 type->num_fields ());
7ba81444
MS
4837 gdb_print_host_address (TYPE_FIELD_PROTECTED_BITS (type),
4838 gdb_stdout);
c906108c
SS
4839 printf_filtered (")");
4840 print_bit_vector (TYPE_FIELD_PROTECTED_BITS (type),
1f704f76 4841 type->num_fields ());
c906108c
SS
4842 puts_filtered ("\n");
4843 }
4844 }
4845 if (TYPE_NFN_FIELDS (type) > 0)
4846 {
4847 dump_fn_fieldlists (type, spaces);
4848 }
e35000a7
TBA
4849
4850 printfi_filtered (spaces, "calling_convention %d\n",
4851 TYPE_CPLUS_CALLING_CONVENTION (type));
c906108c
SS
4852}
4853
b4ba55a1
JB
4854/* Print the contents of the TYPE's type_specific union, assuming that
4855 its type-specific kind is TYPE_SPECIFIC_GNAT_STUFF. */
4856
4857static void
4858print_gnat_stuff (struct type *type, int spaces)
4859{
4860 struct type *descriptive_type = TYPE_DESCRIPTIVE_TYPE (type);
4861
8cd00c59
PMR
4862 if (descriptive_type == NULL)
4863 printfi_filtered (spaces + 2, "no descriptive type\n");
4864 else
4865 {
4866 printfi_filtered (spaces + 2, "descriptive type\n");
4867 recursive_dump_type (descriptive_type, spaces + 4);
4868 }
b4ba55a1
JB
4869}
4870
c906108c
SS
4871static struct obstack dont_print_type_obstack;
4872
4873void
fba45db2 4874recursive_dump_type (struct type *type, int spaces)
c906108c
SS
4875{
4876 int idx;
4877
4878 if (spaces == 0)
4879 obstack_begin (&dont_print_type_obstack, 0);
4880
1f704f76 4881 if (type->num_fields () > 0
b4ba55a1 4882 || (HAVE_CPLUS_STRUCT (type) && TYPE_NFN_FIELDS (type) > 0))
c906108c
SS
4883 {
4884 struct type **first_dont_print
7ba81444 4885 = (struct type **) obstack_base (&dont_print_type_obstack);
c906108c 4886
7ba81444
MS
4887 int i = (struct type **)
4888 obstack_next_free (&dont_print_type_obstack) - first_dont_print;
c906108c
SS
4889
4890 while (--i >= 0)
4891 {
4892 if (type == first_dont_print[i])
4893 {
4894 printfi_filtered (spaces, "type node ");
d4f3574e 4895 gdb_print_host_address (type, gdb_stdout);
a3f17187 4896 printf_filtered (_(" <same as already seen type>\n"));
c906108c
SS
4897 return;
4898 }
4899 }
4900
4901 obstack_ptr_grow (&dont_print_type_obstack, type);
4902 }
4903
4904 printfi_filtered (spaces, "type node ");
d4f3574e 4905 gdb_print_host_address (type, gdb_stdout);
c906108c
SS
4906 printf_filtered ("\n");
4907 printfi_filtered (spaces, "name '%s' (",
7d93a1e0
SM
4908 type->name () ? type->name () : "<NULL>");
4909 gdb_print_host_address (type->name (), gdb_stdout);
c906108c 4910 printf_filtered (")\n");
78134374
SM
4911 printfi_filtered (spaces, "code 0x%x ", type->code ());
4912 switch (type->code ())
c906108c 4913 {
c5aa993b
JM
4914 case TYPE_CODE_UNDEF:
4915 printf_filtered ("(TYPE_CODE_UNDEF)");
4916 break;
4917 case TYPE_CODE_PTR:
4918 printf_filtered ("(TYPE_CODE_PTR)");
4919 break;
4920 case TYPE_CODE_ARRAY:
4921 printf_filtered ("(TYPE_CODE_ARRAY)");
4922 break;
4923 case TYPE_CODE_STRUCT:
4924 printf_filtered ("(TYPE_CODE_STRUCT)");
4925 break;
4926 case TYPE_CODE_UNION:
4927 printf_filtered ("(TYPE_CODE_UNION)");
4928 break;
4929 case TYPE_CODE_ENUM:
4930 printf_filtered ("(TYPE_CODE_ENUM)");
4931 break;
4f2aea11
MK
4932 case TYPE_CODE_FLAGS:
4933 printf_filtered ("(TYPE_CODE_FLAGS)");
4934 break;
c5aa993b
JM
4935 case TYPE_CODE_FUNC:
4936 printf_filtered ("(TYPE_CODE_FUNC)");
4937 break;
4938 case TYPE_CODE_INT:
4939 printf_filtered ("(TYPE_CODE_INT)");
4940 break;
4941 case TYPE_CODE_FLT:
4942 printf_filtered ("(TYPE_CODE_FLT)");
4943 break;
4944 case TYPE_CODE_VOID:
4945 printf_filtered ("(TYPE_CODE_VOID)");
4946 break;
4947 case TYPE_CODE_SET:
4948 printf_filtered ("(TYPE_CODE_SET)");
4949 break;
4950 case TYPE_CODE_RANGE:
4951 printf_filtered ("(TYPE_CODE_RANGE)");
4952 break;
4953 case TYPE_CODE_STRING:
4954 printf_filtered ("(TYPE_CODE_STRING)");
4955 break;
4956 case TYPE_CODE_ERROR:
4957 printf_filtered ("(TYPE_CODE_ERROR)");
4958 break;
0d5de010
DJ
4959 case TYPE_CODE_MEMBERPTR:
4960 printf_filtered ("(TYPE_CODE_MEMBERPTR)");
4961 break;
4962 case TYPE_CODE_METHODPTR:
4963 printf_filtered ("(TYPE_CODE_METHODPTR)");
c5aa993b
JM
4964 break;
4965 case TYPE_CODE_METHOD:
4966 printf_filtered ("(TYPE_CODE_METHOD)");
4967 break;
4968 case TYPE_CODE_REF:
4969 printf_filtered ("(TYPE_CODE_REF)");
4970 break;
4971 case TYPE_CODE_CHAR:
4972 printf_filtered ("(TYPE_CODE_CHAR)");
4973 break;
4974 case TYPE_CODE_BOOL:
4975 printf_filtered ("(TYPE_CODE_BOOL)");
4976 break;
e9e79dd9
FF
4977 case TYPE_CODE_COMPLEX:
4978 printf_filtered ("(TYPE_CODE_COMPLEX)");
4979 break;
c5aa993b
JM
4980 case TYPE_CODE_TYPEDEF:
4981 printf_filtered ("(TYPE_CODE_TYPEDEF)");
4982 break;
5c4e30ca
DC
4983 case TYPE_CODE_NAMESPACE:
4984 printf_filtered ("(TYPE_CODE_NAMESPACE)");
4985 break;
c5aa993b
JM
4986 default:
4987 printf_filtered ("(UNKNOWN TYPE CODE)");
4988 break;
c906108c
SS
4989 }
4990 puts_filtered ("\n");
cc1defb1 4991 printfi_filtered (spaces, "length %s\n", pulongest (TYPE_LENGTH (type)));
e9bb382b
UW
4992 if (TYPE_OBJFILE_OWNED (type))
4993 {
4994 printfi_filtered (spaces, "objfile ");
4995 gdb_print_host_address (TYPE_OWNER (type).objfile, gdb_stdout);
4996 }
4997 else
4998 {
4999 printfi_filtered (spaces, "gdbarch ");
5000 gdb_print_host_address (TYPE_OWNER (type).gdbarch, gdb_stdout);
5001 }
c906108c
SS
5002 printf_filtered ("\n");
5003 printfi_filtered (spaces, "target_type ");
d4f3574e 5004 gdb_print_host_address (TYPE_TARGET_TYPE (type), gdb_stdout);
c906108c
SS
5005 printf_filtered ("\n");
5006 if (TYPE_TARGET_TYPE (type) != NULL)
5007 {
5008 recursive_dump_type (TYPE_TARGET_TYPE (type), spaces + 2);
5009 }
5010 printfi_filtered (spaces, "pointer_type ");
d4f3574e 5011 gdb_print_host_address (TYPE_POINTER_TYPE (type), gdb_stdout);
c906108c
SS
5012 printf_filtered ("\n");
5013 printfi_filtered (spaces, "reference_type ");
d4f3574e 5014 gdb_print_host_address (TYPE_REFERENCE_TYPE (type), gdb_stdout);
c906108c 5015 printf_filtered ("\n");
2fdde8f8
DJ
5016 printfi_filtered (spaces, "type_chain ");
5017 gdb_print_host_address (TYPE_CHAIN (type), gdb_stdout);
e9e79dd9 5018 printf_filtered ("\n");
7ba81444
MS
5019 printfi_filtered (spaces, "instance_flags 0x%x",
5020 TYPE_INSTANCE_FLAGS (type));
2fdde8f8
DJ
5021 if (TYPE_CONST (type))
5022 {
a9ff5f12 5023 puts_filtered (" TYPE_CONST");
2fdde8f8
DJ
5024 }
5025 if (TYPE_VOLATILE (type))
5026 {
a9ff5f12 5027 puts_filtered (" TYPE_VOLATILE");
2fdde8f8
DJ
5028 }
5029 if (TYPE_CODE_SPACE (type))
5030 {
a9ff5f12 5031 puts_filtered (" TYPE_CODE_SPACE");
2fdde8f8
DJ
5032 }
5033 if (TYPE_DATA_SPACE (type))
5034 {
a9ff5f12 5035 puts_filtered (" TYPE_DATA_SPACE");
2fdde8f8 5036 }
8b2dbe47
KB
5037 if (TYPE_ADDRESS_CLASS_1 (type))
5038 {
a9ff5f12 5039 puts_filtered (" TYPE_ADDRESS_CLASS_1");
8b2dbe47
KB
5040 }
5041 if (TYPE_ADDRESS_CLASS_2 (type))
5042 {
a9ff5f12 5043 puts_filtered (" TYPE_ADDRESS_CLASS_2");
8b2dbe47 5044 }
06d66ee9
TT
5045 if (TYPE_RESTRICT (type))
5046 {
a9ff5f12 5047 puts_filtered (" TYPE_RESTRICT");
06d66ee9 5048 }
a2c2acaf
MW
5049 if (TYPE_ATOMIC (type))
5050 {
a9ff5f12 5051 puts_filtered (" TYPE_ATOMIC");
a2c2acaf 5052 }
2fdde8f8 5053 puts_filtered ("\n");
876cecd0
TT
5054
5055 printfi_filtered (spaces, "flags");
762a036f 5056 if (TYPE_UNSIGNED (type))
c906108c 5057 {
a9ff5f12 5058 puts_filtered (" TYPE_UNSIGNED");
c906108c 5059 }
762a036f
FF
5060 if (TYPE_NOSIGN (type))
5061 {
a9ff5f12 5062 puts_filtered (" TYPE_NOSIGN");
762a036f 5063 }
34877895
PJ
5064 if (TYPE_ENDIANITY_NOT_DEFAULT (type))
5065 {
5066 puts_filtered (" TYPE_ENDIANITY_NOT_DEFAULT");
5067 }
762a036f 5068 if (TYPE_STUB (type))
c906108c 5069 {
a9ff5f12 5070 puts_filtered (" TYPE_STUB");
c906108c 5071 }
762a036f
FF
5072 if (TYPE_TARGET_STUB (type))
5073 {
a9ff5f12 5074 puts_filtered (" TYPE_TARGET_STUB");
762a036f 5075 }
762a036f
FF
5076 if (TYPE_PROTOTYPED (type))
5077 {
a9ff5f12 5078 puts_filtered (" TYPE_PROTOTYPED");
762a036f 5079 }
762a036f
FF
5080 if (TYPE_VARARGS (type))
5081 {
a9ff5f12 5082 puts_filtered (" TYPE_VARARGS");
762a036f 5083 }
f5f8a009
EZ
5084 /* This is used for things like AltiVec registers on ppc. Gcc emits
5085 an attribute for the array type, which tells whether or not we
5086 have a vector, instead of a regular array. */
5087 if (TYPE_VECTOR (type))
5088 {
a9ff5f12 5089 puts_filtered (" TYPE_VECTOR");
f5f8a009 5090 }
876cecd0
TT
5091 if (TYPE_FIXED_INSTANCE (type))
5092 {
5093 puts_filtered (" TYPE_FIXED_INSTANCE");
5094 }
5095 if (TYPE_STUB_SUPPORTED (type))
5096 {
5097 puts_filtered (" TYPE_STUB_SUPPORTED");
5098 }
5099 if (TYPE_NOTTEXT (type))
5100 {
5101 puts_filtered (" TYPE_NOTTEXT");
5102 }
c906108c 5103 puts_filtered ("\n");
1f704f76 5104 printfi_filtered (spaces, "nfields %d ", type->num_fields ());
d4f3574e 5105 gdb_print_host_address (TYPE_FIELDS (type), gdb_stdout);
c906108c 5106 puts_filtered ("\n");
1f704f76 5107 for (idx = 0; idx < type->num_fields (); idx++)
c906108c 5108 {
78134374 5109 if (type->code () == TYPE_CODE_ENUM)
14e75d8e
JK
5110 printfi_filtered (spaces + 2,
5111 "[%d] enumval %s type ",
5112 idx, plongest (TYPE_FIELD_ENUMVAL (type, idx)));
5113 else
5114 printfi_filtered (spaces + 2,
6b850546
DT
5115 "[%d] bitpos %s bitsize %d type ",
5116 idx, plongest (TYPE_FIELD_BITPOS (type, idx)),
14e75d8e 5117 TYPE_FIELD_BITSIZE (type, idx));
d4f3574e 5118 gdb_print_host_address (TYPE_FIELD_TYPE (type, idx), gdb_stdout);
c906108c
SS
5119 printf_filtered (" name '%s' (",
5120 TYPE_FIELD_NAME (type, idx) != NULL
5121 ? TYPE_FIELD_NAME (type, idx)
5122 : "<NULL>");
d4f3574e 5123 gdb_print_host_address (TYPE_FIELD_NAME (type, idx), gdb_stdout);
c906108c
SS
5124 printf_filtered (")\n");
5125 if (TYPE_FIELD_TYPE (type, idx) != NULL)
5126 {
5127 recursive_dump_type (TYPE_FIELD_TYPE (type, idx), spaces + 4);
5128 }
5129 }
78134374 5130 if (type->code () == TYPE_CODE_RANGE)
43bbcdc2
PH
5131 {
5132 printfi_filtered (spaces, "low %s%s high %s%s\n",
5133 plongest (TYPE_LOW_BOUND (type)),
5134 TYPE_LOW_BOUND_UNDEFINED (type) ? " (undefined)" : "",
5135 plongest (TYPE_HIGH_BOUND (type)),
3e43a32a
MS
5136 TYPE_HIGH_BOUND_UNDEFINED (type)
5137 ? " (undefined)" : "");
43bbcdc2 5138 }
c906108c 5139
b4ba55a1
JB
5140 switch (TYPE_SPECIFIC_FIELD (type))
5141 {
5142 case TYPE_SPECIFIC_CPLUS_STUFF:
5143 printfi_filtered (spaces, "cplus_stuff ");
5144 gdb_print_host_address (TYPE_CPLUS_SPECIFIC (type),
5145 gdb_stdout);
5146 puts_filtered ("\n");
5147 print_cplus_stuff (type, spaces);
5148 break;
8da61cc4 5149
b4ba55a1
JB
5150 case TYPE_SPECIFIC_GNAT_STUFF:
5151 printfi_filtered (spaces, "gnat_stuff ");
5152 gdb_print_host_address (TYPE_GNAT_SPECIFIC (type), gdb_stdout);
5153 puts_filtered ("\n");
5154 print_gnat_stuff (type, spaces);
5155 break;
701c159d 5156
b4ba55a1
JB
5157 case TYPE_SPECIFIC_FLOATFORMAT:
5158 printfi_filtered (spaces, "floatformat ");
0db7851f
UW
5159 if (TYPE_FLOATFORMAT (type) == NULL
5160 || TYPE_FLOATFORMAT (type)->name == NULL)
b4ba55a1
JB
5161 puts_filtered ("(null)");
5162 else
0db7851f 5163 puts_filtered (TYPE_FLOATFORMAT (type)->name);
b4ba55a1
JB
5164 puts_filtered ("\n");
5165 break;
c906108c 5166
b6cdc2c1 5167 case TYPE_SPECIFIC_FUNC:
b4ba55a1
JB
5168 printfi_filtered (spaces, "calling_convention %d\n",
5169 TYPE_CALLING_CONVENTION (type));
b6cdc2c1 5170 /* tail_call_list is not printed. */
b4ba55a1 5171 break;
09e2d7c7
DE
5172
5173 case TYPE_SPECIFIC_SELF_TYPE:
5174 printfi_filtered (spaces, "self_type ");
5175 gdb_print_host_address (TYPE_SELF_TYPE (type), gdb_stdout);
5176 puts_filtered ("\n");
5177 break;
c906108c 5178 }
b4ba55a1 5179
c906108c
SS
5180 if (spaces == 0)
5181 obstack_free (&dont_print_type_obstack, NULL);
5182}
5212577a 5183\f
ae5a43e0
DJ
5184/* Trivial helpers for the libiberty hash table, for mapping one
5185 type to another. */
5186
fd90ace4 5187struct type_pair : public allocate_on_obstack
ae5a43e0 5188{
fd90ace4
YQ
5189 type_pair (struct type *old_, struct type *newobj_)
5190 : old (old_), newobj (newobj_)
5191 {}
5192
5193 struct type * const old, * const newobj;
ae5a43e0
DJ
5194};
5195
5196static hashval_t
5197type_pair_hash (const void *item)
5198{
9a3c8263 5199 const struct type_pair *pair = (const struct type_pair *) item;
d8734c88 5200
ae5a43e0
DJ
5201 return htab_hash_pointer (pair->old);
5202}
5203
5204static int
5205type_pair_eq (const void *item_lhs, const void *item_rhs)
5206{
9a3c8263
SM
5207 const struct type_pair *lhs = (const struct type_pair *) item_lhs;
5208 const struct type_pair *rhs = (const struct type_pair *) item_rhs;
d8734c88 5209
ae5a43e0
DJ
5210 return lhs->old == rhs->old;
5211}
5212
5213/* Allocate the hash table used by copy_type_recursive to walk
5214 types without duplicates. We use OBJFILE's obstack, because
5215 OBJFILE is about to be deleted. */
5216
5217htab_t
5218create_copied_types_hash (struct objfile *objfile)
5219{
5220 return htab_create_alloc_ex (1, type_pair_hash, type_pair_eq,
5221 NULL, &objfile->objfile_obstack,
5222 hashtab_obstack_allocate,
5223 dummy_obstack_deallocate);
5224}
5225
d9823cbb
KB
5226/* Recursively copy (deep copy) a dynamic attribute list of a type. */
5227
5228static struct dynamic_prop_list *
5229copy_dynamic_prop_list (struct obstack *objfile_obstack,
5230 struct dynamic_prop_list *list)
5231{
5232 struct dynamic_prop_list *copy = list;
5233 struct dynamic_prop_list **node_ptr = &copy;
5234
5235 while (*node_ptr != NULL)
5236 {
5237 struct dynamic_prop_list *node_copy;
5238
224c3ddb
SM
5239 node_copy = ((struct dynamic_prop_list *)
5240 obstack_copy (objfile_obstack, *node_ptr,
5241 sizeof (struct dynamic_prop_list)));
283a9958 5242 node_copy->prop = (*node_ptr)->prop;
d9823cbb
KB
5243 *node_ptr = node_copy;
5244
5245 node_ptr = &node_copy->next;
5246 }
5247
5248 return copy;
5249}
5250
7ba81444 5251/* Recursively copy (deep copy) TYPE, if it is associated with
eed8b28a
PP
5252 OBJFILE. Return a new type owned by the gdbarch associated with the type, a
5253 saved type if we have already visited TYPE (using COPIED_TYPES), or TYPE if
5254 it is not associated with OBJFILE. */
ae5a43e0
DJ
5255
5256struct type *
7ba81444
MS
5257copy_type_recursive (struct objfile *objfile,
5258 struct type *type,
ae5a43e0
DJ
5259 htab_t copied_types)
5260{
ae5a43e0
DJ
5261 void **slot;
5262 struct type *new_type;
5263
e9bb382b 5264 if (! TYPE_OBJFILE_OWNED (type))
ae5a43e0
DJ
5265 return type;
5266
7ba81444
MS
5267 /* This type shouldn't be pointing to any types in other objfiles;
5268 if it did, the type might disappear unexpectedly. */
ae5a43e0
DJ
5269 gdb_assert (TYPE_OBJFILE (type) == objfile);
5270
fd90ace4
YQ
5271 struct type_pair pair (type, nullptr);
5272
ae5a43e0
DJ
5273 slot = htab_find_slot (copied_types, &pair, INSERT);
5274 if (*slot != NULL)
fe978cb0 5275 return ((struct type_pair *) *slot)->newobj;
ae5a43e0 5276
e9bb382b 5277 new_type = alloc_type_arch (get_type_arch (type));
ae5a43e0
DJ
5278
5279 /* We must add the new type to the hash table immediately, in case
5280 we encounter this type again during a recursive call below. */
fd90ace4
YQ
5281 struct type_pair *stored
5282 = new (&objfile->objfile_obstack) struct type_pair (type, new_type);
5283
ae5a43e0
DJ
5284 *slot = stored;
5285
876cecd0
TT
5286 /* Copy the common fields of types. For the main type, we simply
5287 copy the entire thing and then update specific fields as needed. */
5288 *TYPE_MAIN_TYPE (new_type) = *TYPE_MAIN_TYPE (type);
e9bb382b
UW
5289 TYPE_OBJFILE_OWNED (new_type) = 0;
5290 TYPE_OWNER (new_type).gdbarch = get_type_arch (type);
876cecd0 5291
7d93a1e0
SM
5292 if (type->name ())
5293 new_type->set_name (xstrdup (type->name ()));
ae5a43e0
DJ
5294
5295 TYPE_INSTANCE_FLAGS (new_type) = TYPE_INSTANCE_FLAGS (type);
5296 TYPE_LENGTH (new_type) = TYPE_LENGTH (type);
5297
5298 /* Copy the fields. */
1f704f76 5299 if (type->num_fields ())
ae5a43e0
DJ
5300 {
5301 int i, nfields;
5302
1f704f76 5303 nfields = type->num_fields ();
2fabdf33
AB
5304 TYPE_FIELDS (new_type) = (struct field *)
5305 TYPE_ZALLOC (new_type, nfields * sizeof (struct field));
ae5a43e0
DJ
5306 for (i = 0; i < nfields; i++)
5307 {
7ba81444
MS
5308 TYPE_FIELD_ARTIFICIAL (new_type, i) =
5309 TYPE_FIELD_ARTIFICIAL (type, i);
ae5a43e0
DJ
5310 TYPE_FIELD_BITSIZE (new_type, i) = TYPE_FIELD_BITSIZE (type, i);
5311 if (TYPE_FIELD_TYPE (type, i))
5312 TYPE_FIELD_TYPE (new_type, i)
5313 = copy_type_recursive (objfile, TYPE_FIELD_TYPE (type, i),
5314 copied_types);
5315 if (TYPE_FIELD_NAME (type, i))
7ba81444
MS
5316 TYPE_FIELD_NAME (new_type, i) =
5317 xstrdup (TYPE_FIELD_NAME (type, i));
d6a843b5 5318 switch (TYPE_FIELD_LOC_KIND (type, i))
ae5a43e0 5319 {
d6a843b5
JK
5320 case FIELD_LOC_KIND_BITPOS:
5321 SET_FIELD_BITPOS (TYPE_FIELD (new_type, i),
5322 TYPE_FIELD_BITPOS (type, i));
5323 break;
14e75d8e
JK
5324 case FIELD_LOC_KIND_ENUMVAL:
5325 SET_FIELD_ENUMVAL (TYPE_FIELD (new_type, i),
5326 TYPE_FIELD_ENUMVAL (type, i));
5327 break;
d6a843b5
JK
5328 case FIELD_LOC_KIND_PHYSADDR:
5329 SET_FIELD_PHYSADDR (TYPE_FIELD (new_type, i),
5330 TYPE_FIELD_STATIC_PHYSADDR (type, i));
5331 break;
5332 case FIELD_LOC_KIND_PHYSNAME:
5333 SET_FIELD_PHYSNAME (TYPE_FIELD (new_type, i),
5334 xstrdup (TYPE_FIELD_STATIC_PHYSNAME (type,
5335 i)));
5336 break;
5337 default:
5338 internal_error (__FILE__, __LINE__,
5339 _("Unexpected type field location kind: %d"),
5340 TYPE_FIELD_LOC_KIND (type, i));
ae5a43e0
DJ
5341 }
5342 }
5343 }
5344
0963b4bd 5345 /* For range types, copy the bounds information. */
78134374 5346 if (type->code () == TYPE_CODE_RANGE)
43bbcdc2 5347 {
2fabdf33
AB
5348 TYPE_RANGE_DATA (new_type) = (struct range_bounds *)
5349 TYPE_ALLOC (new_type, sizeof (struct range_bounds));
43bbcdc2
PH
5350 *TYPE_RANGE_DATA (new_type) = *TYPE_RANGE_DATA (type);
5351 }
5352
98d48915
SM
5353 if (type->main_type->dyn_prop_list != NULL)
5354 new_type->main_type->dyn_prop_list
d9823cbb 5355 = copy_dynamic_prop_list (&objfile->objfile_obstack,
98d48915 5356 type->main_type->dyn_prop_list);
d9823cbb 5357
3cdcd0ce 5358
ae5a43e0
DJ
5359 /* Copy pointers to other types. */
5360 if (TYPE_TARGET_TYPE (type))
7ba81444
MS
5361 TYPE_TARGET_TYPE (new_type) =
5362 copy_type_recursive (objfile,
5363 TYPE_TARGET_TYPE (type),
5364 copied_types);
f6b3afbf 5365
ae5a43e0
DJ
5366 /* Maybe copy the type_specific bits.
5367
5368 NOTE drow/2005-12-09: We do not copy the C++-specific bits like
5369 base classes and methods. There's no fundamental reason why we
5370 can't, but at the moment it is not needed. */
5371
f6b3afbf
DE
5372 switch (TYPE_SPECIFIC_FIELD (type))
5373 {
5374 case TYPE_SPECIFIC_NONE:
5375 break;
5376 case TYPE_SPECIFIC_FUNC:
5377 INIT_FUNC_SPECIFIC (new_type);
5378 TYPE_CALLING_CONVENTION (new_type) = TYPE_CALLING_CONVENTION (type);
5379 TYPE_NO_RETURN (new_type) = TYPE_NO_RETURN (type);
5380 TYPE_TAIL_CALL_LIST (new_type) = NULL;
5381 break;
5382 case TYPE_SPECIFIC_FLOATFORMAT:
5383 TYPE_FLOATFORMAT (new_type) = TYPE_FLOATFORMAT (type);
5384 break;
5385 case TYPE_SPECIFIC_CPLUS_STUFF:
5386 INIT_CPLUS_SPECIFIC (new_type);
5387 break;
5388 case TYPE_SPECIFIC_GNAT_STUFF:
5389 INIT_GNAT_SPECIFIC (new_type);
5390 break;
09e2d7c7
DE
5391 case TYPE_SPECIFIC_SELF_TYPE:
5392 set_type_self_type (new_type,
5393 copy_type_recursive (objfile, TYPE_SELF_TYPE (type),
5394 copied_types));
5395 break;
f6b3afbf
DE
5396 default:
5397 gdb_assert_not_reached ("bad type_specific_kind");
5398 }
ae5a43e0
DJ
5399
5400 return new_type;
5401}
5402
4af88198
JB
5403/* Make a copy of the given TYPE, except that the pointer & reference
5404 types are not preserved.
5405
5406 This function assumes that the given type has an associated objfile.
5407 This objfile is used to allocate the new type. */
5408
5409struct type *
5410copy_type (const struct type *type)
5411{
5412 struct type *new_type;
5413
e9bb382b 5414 gdb_assert (TYPE_OBJFILE_OWNED (type));
4af88198 5415
e9bb382b 5416 new_type = alloc_type_copy (type);
4af88198
JB
5417 TYPE_INSTANCE_FLAGS (new_type) = TYPE_INSTANCE_FLAGS (type);
5418 TYPE_LENGTH (new_type) = TYPE_LENGTH (type);
5419 memcpy (TYPE_MAIN_TYPE (new_type), TYPE_MAIN_TYPE (type),
5420 sizeof (struct main_type));
98d48915
SM
5421 if (type->main_type->dyn_prop_list != NULL)
5422 new_type->main_type->dyn_prop_list
d9823cbb 5423 = copy_dynamic_prop_list (&TYPE_OBJFILE (type) -> objfile_obstack,
98d48915 5424 type->main_type->dyn_prop_list);
4af88198
JB
5425
5426 return new_type;
5427}
5212577a 5428\f
e9bb382b
UW
5429/* Helper functions to initialize architecture-specific types. */
5430
5431/* Allocate a type structure associated with GDBARCH and set its
5432 CODE, LENGTH, and NAME fields. */
5212577a 5433
e9bb382b
UW
5434struct type *
5435arch_type (struct gdbarch *gdbarch,
77b7c781 5436 enum type_code code, int bit, const char *name)
e9bb382b
UW
5437{
5438 struct type *type;
5439
5440 type = alloc_type_arch (gdbarch);
ae438bc5 5441 set_type_code (type, code);
77b7c781
UW
5442 gdb_assert ((bit % TARGET_CHAR_BIT) == 0);
5443 TYPE_LENGTH (type) = bit / TARGET_CHAR_BIT;
e9bb382b
UW
5444
5445 if (name)
d0e39ea2 5446 type->set_name (gdbarch_obstack_strdup (gdbarch, name));
e9bb382b
UW
5447
5448 return type;
5449}
5450
5451/* Allocate a TYPE_CODE_INT type structure associated with GDBARCH.
5452 BIT is the type size in bits. If UNSIGNED_P is non-zero, set
5453 the type's TYPE_UNSIGNED flag. NAME is the type name. */
5212577a 5454
e9bb382b
UW
5455struct type *
5456arch_integer_type (struct gdbarch *gdbarch,
695bfa52 5457 int bit, int unsigned_p, const char *name)
e9bb382b
UW
5458{
5459 struct type *t;
5460
77b7c781 5461 t = arch_type (gdbarch, TYPE_CODE_INT, bit, name);
e9bb382b
UW
5462 if (unsigned_p)
5463 TYPE_UNSIGNED (t) = 1;
e9bb382b
UW
5464
5465 return t;
5466}
5467
5468/* Allocate a TYPE_CODE_CHAR type structure associated with GDBARCH.
5469 BIT is the type size in bits. If UNSIGNED_P is non-zero, set
5470 the type's TYPE_UNSIGNED flag. NAME is the type name. */
5212577a 5471
e9bb382b
UW
5472struct type *
5473arch_character_type (struct gdbarch *gdbarch,
695bfa52 5474 int bit, int unsigned_p, const char *name)
e9bb382b
UW
5475{
5476 struct type *t;
5477
77b7c781 5478 t = arch_type (gdbarch, TYPE_CODE_CHAR, bit, name);
e9bb382b
UW
5479 if (unsigned_p)
5480 TYPE_UNSIGNED (t) = 1;
5481
5482 return t;
5483}
5484
5485/* Allocate a TYPE_CODE_BOOL type structure associated with GDBARCH.
5486 BIT is the type size in bits. If UNSIGNED_P is non-zero, set
5487 the type's TYPE_UNSIGNED flag. NAME is the type name. */
5212577a 5488
e9bb382b
UW
5489struct type *
5490arch_boolean_type (struct gdbarch *gdbarch,
695bfa52 5491 int bit, int unsigned_p, const char *name)
e9bb382b
UW
5492{
5493 struct type *t;
5494
77b7c781 5495 t = arch_type (gdbarch, TYPE_CODE_BOOL, bit, name);
e9bb382b
UW
5496 if (unsigned_p)
5497 TYPE_UNSIGNED (t) = 1;
5498
5499 return t;
5500}
5501
5502/* Allocate a TYPE_CODE_FLT type structure associated with GDBARCH.
5503 BIT is the type size in bits; if BIT equals -1, the size is
5504 determined by the floatformat. NAME is the type name. Set the
5505 TYPE_FLOATFORMAT from FLOATFORMATS. */
5212577a 5506
27067745 5507struct type *
e9bb382b 5508arch_float_type (struct gdbarch *gdbarch,
695bfa52
TT
5509 int bit, const char *name,
5510 const struct floatformat **floatformats)
8da61cc4 5511{
0db7851f 5512 const struct floatformat *fmt = floatformats[gdbarch_byte_order (gdbarch)];
8da61cc4
DJ
5513 struct type *t;
5514
0db7851f 5515 bit = verify_floatformat (bit, fmt);
77b7c781 5516 t = arch_type (gdbarch, TYPE_CODE_FLT, bit, name);
0db7851f 5517 TYPE_FLOATFORMAT (t) = fmt;
b79497cb 5518
8da61cc4
DJ
5519 return t;
5520}
5521
88dfca6c
UW
5522/* Allocate a TYPE_CODE_DECFLOAT type structure associated with GDBARCH.
5523 BIT is the type size in bits. NAME is the type name. */
5524
5525struct type *
5526arch_decfloat_type (struct gdbarch *gdbarch, int bit, const char *name)
5527{
5528 struct type *t;
5529
77b7c781 5530 t = arch_type (gdbarch, TYPE_CODE_DECFLOAT, bit, name);
88dfca6c
UW
5531 return t;
5532}
5533
88dfca6c
UW
5534/* Allocate a TYPE_CODE_PTR type structure associated with GDBARCH.
5535 BIT is the pointer type size in bits. NAME is the type name.
5536 TARGET_TYPE is the pointer target type. Always sets the pointer type's
5537 TYPE_UNSIGNED flag. */
5538
5539struct type *
5540arch_pointer_type (struct gdbarch *gdbarch,
5541 int bit, const char *name, struct type *target_type)
5542{
5543 struct type *t;
5544
77b7c781 5545 t = arch_type (gdbarch, TYPE_CODE_PTR, bit, name);
88dfca6c
UW
5546 TYPE_TARGET_TYPE (t) = target_type;
5547 TYPE_UNSIGNED (t) = 1;
5548 return t;
5549}
5550
e9bb382b 5551/* Allocate a TYPE_CODE_FLAGS type structure associated with GDBARCH.
77b7c781 5552 NAME is the type name. BIT is the size of the flag word in bits. */
5212577a 5553
e9bb382b 5554struct type *
77b7c781 5555arch_flags_type (struct gdbarch *gdbarch, const char *name, int bit)
e9bb382b 5556{
e9bb382b
UW
5557 struct type *type;
5558
77b7c781 5559 type = arch_type (gdbarch, TYPE_CODE_FLAGS, bit, name);
e9bb382b 5560 TYPE_UNSIGNED (type) = 1;
5e33d5f4 5561 type->set_num_fields (0);
81516450 5562 /* Pre-allocate enough space assuming every field is one bit. */
224c3ddb 5563 TYPE_FIELDS (type)
77b7c781 5564 = (struct field *) TYPE_ZALLOC (type, bit * sizeof (struct field));
e9bb382b
UW
5565
5566 return type;
5567}
5568
5569/* Add field to TYPE_CODE_FLAGS type TYPE to indicate the bit at
81516450
DE
5570 position BITPOS is called NAME. Pass NAME as "" for fields that
5571 should not be printed. */
5572
5573void
5574append_flags_type_field (struct type *type, int start_bitpos, int nr_bits,
695bfa52 5575 struct type *field_type, const char *name)
81516450
DE
5576{
5577 int type_bitsize = TYPE_LENGTH (type) * TARGET_CHAR_BIT;
1f704f76 5578 int field_nr = type->num_fields ();
81516450 5579
78134374 5580 gdb_assert (type->code () == TYPE_CODE_FLAGS);
1f704f76 5581 gdb_assert (type->num_fields () + 1 <= type_bitsize);
81516450
DE
5582 gdb_assert (start_bitpos >= 0 && start_bitpos < type_bitsize);
5583 gdb_assert (nr_bits >= 1 && nr_bits <= type_bitsize);
5584 gdb_assert (name != NULL);
5585
5586 TYPE_FIELD_NAME (type, field_nr) = xstrdup (name);
5587 TYPE_FIELD_TYPE (type, field_nr) = field_type;
5588 SET_FIELD_BITPOS (TYPE_FIELD (type, field_nr), start_bitpos);
5589 TYPE_FIELD_BITSIZE (type, field_nr) = nr_bits;
5e33d5f4 5590 type->set_num_fields (type->num_fields () + 1);
81516450
DE
5591}
5592
5593/* Special version of append_flags_type_field to add a flag field.
5594 Add field to TYPE_CODE_FLAGS type TYPE to indicate the bit at
e9bb382b 5595 position BITPOS is called NAME. */
5212577a 5596
e9bb382b 5597void
695bfa52 5598append_flags_type_flag (struct type *type, int bitpos, const char *name)
e9bb382b 5599{
81516450 5600 struct gdbarch *gdbarch = get_type_arch (type);
e9bb382b 5601
81516450
DE
5602 append_flags_type_field (type, bitpos, 1,
5603 builtin_type (gdbarch)->builtin_bool,
5604 name);
e9bb382b
UW
5605}
5606
5607/* Allocate a TYPE_CODE_STRUCT or TYPE_CODE_UNION type structure (as
5608 specified by CODE) associated with GDBARCH. NAME is the type name. */
5212577a 5609
e9bb382b 5610struct type *
695bfa52
TT
5611arch_composite_type (struct gdbarch *gdbarch, const char *name,
5612 enum type_code code)
e9bb382b
UW
5613{
5614 struct type *t;
d8734c88 5615
e9bb382b
UW
5616 gdb_assert (code == TYPE_CODE_STRUCT || code == TYPE_CODE_UNION);
5617 t = arch_type (gdbarch, code, 0, NULL);
d0e39ea2 5618 t->set_name (name);
e9bb382b
UW
5619 INIT_CPLUS_SPECIFIC (t);
5620 return t;
5621}
5622
5623/* Add new field with name NAME and type FIELD to composite type T.
f5dff777
DJ
5624 Do not set the field's position or adjust the type's length;
5625 the caller should do so. Return the new field. */
5212577a 5626
f5dff777 5627struct field *
695bfa52 5628append_composite_type_field_raw (struct type *t, const char *name,
f5dff777 5629 struct type *field)
e9bb382b
UW
5630{
5631 struct field *f;
d8734c88 5632
1f704f76 5633 t->set_num_fields (t->num_fields () + 1);
224c3ddb 5634 TYPE_FIELDS (t) = XRESIZEVEC (struct field, TYPE_FIELDS (t),
1f704f76
SM
5635 t->num_fields ());
5636 f = &(TYPE_FIELDS (t)[t->num_fields () - 1]);
e9bb382b
UW
5637 memset (f, 0, sizeof f[0]);
5638 FIELD_TYPE (f[0]) = field;
5639 FIELD_NAME (f[0]) = name;
f5dff777
DJ
5640 return f;
5641}
5642
5643/* Add new field with name NAME and type FIELD to composite type T.
5644 ALIGNMENT (if non-zero) specifies the minimum field alignment. */
5212577a 5645
f5dff777 5646void
695bfa52 5647append_composite_type_field_aligned (struct type *t, const char *name,
f5dff777
DJ
5648 struct type *field, int alignment)
5649{
5650 struct field *f = append_composite_type_field_raw (t, name, field);
d8734c88 5651
78134374 5652 if (t->code () == TYPE_CODE_UNION)
e9bb382b
UW
5653 {
5654 if (TYPE_LENGTH (t) < TYPE_LENGTH (field))
5655 TYPE_LENGTH (t) = TYPE_LENGTH (field);
5656 }
78134374 5657 else if (t->code () == TYPE_CODE_STRUCT)
e9bb382b
UW
5658 {
5659 TYPE_LENGTH (t) = TYPE_LENGTH (t) + TYPE_LENGTH (field);
1f704f76 5660 if (t->num_fields () > 1)
e9bb382b 5661 {
f41f5e61
PA
5662 SET_FIELD_BITPOS (f[0],
5663 (FIELD_BITPOS (f[-1])
5664 + (TYPE_LENGTH (FIELD_TYPE (f[-1]))
5665 * TARGET_CHAR_BIT)));
e9bb382b
UW
5666
5667 if (alignment)
5668 {
86c3c1fc
AB
5669 int left;
5670
5671 alignment *= TARGET_CHAR_BIT;
5672 left = FIELD_BITPOS (f[0]) % alignment;
d8734c88 5673
e9bb382b
UW
5674 if (left)
5675 {
f41f5e61 5676 SET_FIELD_BITPOS (f[0], FIELD_BITPOS (f[0]) + (alignment - left));
86c3c1fc 5677 TYPE_LENGTH (t) += (alignment - left) / TARGET_CHAR_BIT;
e9bb382b
UW
5678 }
5679 }
5680 }
5681 }
5682}
5683
5684/* Add new field with name NAME and type FIELD to composite type T. */
5212577a 5685
e9bb382b 5686void
695bfa52 5687append_composite_type_field (struct type *t, const char *name,
e9bb382b
UW
5688 struct type *field)
5689{
5690 append_composite_type_field_aligned (t, name, field, 0);
5691}
5692
000177f0
AC
5693static struct gdbarch_data *gdbtypes_data;
5694
5695const struct builtin_type *
5696builtin_type (struct gdbarch *gdbarch)
5697{
9a3c8263 5698 return (const struct builtin_type *) gdbarch_data (gdbarch, gdbtypes_data);
000177f0
AC
5699}
5700
5701static void *
5702gdbtypes_post_init (struct gdbarch *gdbarch)
5703{
5704 struct builtin_type *builtin_type
5705 = GDBARCH_OBSTACK_ZALLOC (gdbarch, struct builtin_type);
5706
46bf5051 5707 /* Basic types. */
e9bb382b 5708 builtin_type->builtin_void
77b7c781 5709 = arch_type (gdbarch, TYPE_CODE_VOID, TARGET_CHAR_BIT, "void");
e9bb382b
UW
5710 builtin_type->builtin_char
5711 = arch_integer_type (gdbarch, TARGET_CHAR_BIT,
5712 !gdbarch_char_signed (gdbarch), "char");
c413c448 5713 TYPE_NOSIGN (builtin_type->builtin_char) = 1;
e9bb382b
UW
5714 builtin_type->builtin_signed_char
5715 = arch_integer_type (gdbarch, TARGET_CHAR_BIT,
5716 0, "signed char");
5717 builtin_type->builtin_unsigned_char
5718 = arch_integer_type (gdbarch, TARGET_CHAR_BIT,
5719 1, "unsigned char");
5720 builtin_type->builtin_short
5721 = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
5722 0, "short");
5723 builtin_type->builtin_unsigned_short
5724 = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
5725 1, "unsigned short");
5726 builtin_type->builtin_int
5727 = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
5728 0, "int");
5729 builtin_type->builtin_unsigned_int
5730 = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
5731 1, "unsigned int");
5732 builtin_type->builtin_long
5733 = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
5734 0, "long");
5735 builtin_type->builtin_unsigned_long
5736 = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
5737 1, "unsigned long");
5738 builtin_type->builtin_long_long
5739 = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
5740 0, "long long");
5741 builtin_type->builtin_unsigned_long_long
5742 = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
5743 1, "unsigned long long");
a6d0f249
AH
5744 builtin_type->builtin_half
5745 = arch_float_type (gdbarch, gdbarch_half_bit (gdbarch),
5746 "half", gdbarch_half_format (gdbarch));
70bd8e24 5747 builtin_type->builtin_float
e9bb382b 5748 = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch),
27067745 5749 "float", gdbarch_float_format (gdbarch));
70bd8e24 5750 builtin_type->builtin_double
e9bb382b 5751 = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
27067745 5752 "double", gdbarch_double_format (gdbarch));
70bd8e24 5753 builtin_type->builtin_long_double
e9bb382b 5754 = arch_float_type (gdbarch, gdbarch_long_double_bit (gdbarch),
27067745 5755 "long double", gdbarch_long_double_format (gdbarch));
70bd8e24 5756 builtin_type->builtin_complex
5b930b45 5757 = init_complex_type ("complex", builtin_type->builtin_float);
70bd8e24 5758 builtin_type->builtin_double_complex
5b930b45 5759 = init_complex_type ("double complex", builtin_type->builtin_double);
e9bb382b 5760 builtin_type->builtin_string
77b7c781 5761 = arch_type (gdbarch, TYPE_CODE_STRING, TARGET_CHAR_BIT, "string");
e9bb382b 5762 builtin_type->builtin_bool
77b7c781 5763 = arch_type (gdbarch, TYPE_CODE_BOOL, TARGET_CHAR_BIT, "bool");
000177f0 5764
7678ef8f
TJB
5765 /* The following three are about decimal floating point types, which
5766 are 32-bits, 64-bits and 128-bits respectively. */
5767 builtin_type->builtin_decfloat
88dfca6c 5768 = arch_decfloat_type (gdbarch, 32, "_Decimal32");
7678ef8f 5769 builtin_type->builtin_decdouble
88dfca6c 5770 = arch_decfloat_type (gdbarch, 64, "_Decimal64");
7678ef8f 5771 builtin_type->builtin_declong
88dfca6c 5772 = arch_decfloat_type (gdbarch, 128, "_Decimal128");
7678ef8f 5773
69feb676 5774 /* "True" character types. */
e9bb382b
UW
5775 builtin_type->builtin_true_char
5776 = arch_character_type (gdbarch, TARGET_CHAR_BIT, 0, "true character");
5777 builtin_type->builtin_true_unsigned_char
5778 = arch_character_type (gdbarch, TARGET_CHAR_BIT, 1, "true character");
69feb676 5779
df4df182 5780 /* Fixed-size integer types. */
e9bb382b
UW
5781 builtin_type->builtin_int0
5782 = arch_integer_type (gdbarch, 0, 0, "int0_t");
5783 builtin_type->builtin_int8
5784 = arch_integer_type (gdbarch, 8, 0, "int8_t");
5785 builtin_type->builtin_uint8
5786 = arch_integer_type (gdbarch, 8, 1, "uint8_t");
5787 builtin_type->builtin_int16
5788 = arch_integer_type (gdbarch, 16, 0, "int16_t");
5789 builtin_type->builtin_uint16
5790 = arch_integer_type (gdbarch, 16, 1, "uint16_t");
d1908f2d
JD
5791 builtin_type->builtin_int24
5792 = arch_integer_type (gdbarch, 24, 0, "int24_t");
5793 builtin_type->builtin_uint24
5794 = arch_integer_type (gdbarch, 24, 1, "uint24_t");
e9bb382b
UW
5795 builtin_type->builtin_int32
5796 = arch_integer_type (gdbarch, 32, 0, "int32_t");
5797 builtin_type->builtin_uint32
5798 = arch_integer_type (gdbarch, 32, 1, "uint32_t");
5799 builtin_type->builtin_int64
5800 = arch_integer_type (gdbarch, 64, 0, "int64_t");
5801 builtin_type->builtin_uint64
5802 = arch_integer_type (gdbarch, 64, 1, "uint64_t");
5803 builtin_type->builtin_int128
5804 = arch_integer_type (gdbarch, 128, 0, "int128_t");
5805 builtin_type->builtin_uint128
5806 = arch_integer_type (gdbarch, 128, 1, "uint128_t");
2844d6b5
KW
5807 TYPE_INSTANCE_FLAGS (builtin_type->builtin_int8) |=
5808 TYPE_INSTANCE_FLAG_NOTTEXT;
5809 TYPE_INSTANCE_FLAGS (builtin_type->builtin_uint8) |=
5810 TYPE_INSTANCE_FLAG_NOTTEXT;
df4df182 5811
9a22f0d0
PM
5812 /* Wide character types. */
5813 builtin_type->builtin_char16
53e710ac 5814 = arch_integer_type (gdbarch, 16, 1, "char16_t");
9a22f0d0 5815 builtin_type->builtin_char32
53e710ac 5816 = arch_integer_type (gdbarch, 32, 1, "char32_t");
53375380
PA
5817 builtin_type->builtin_wchar
5818 = arch_integer_type (gdbarch, gdbarch_wchar_bit (gdbarch),
5819 !gdbarch_wchar_signed (gdbarch), "wchar_t");
9a22f0d0 5820
46bf5051 5821 /* Default data/code pointer types. */
e9bb382b
UW
5822 builtin_type->builtin_data_ptr
5823 = lookup_pointer_type (builtin_type->builtin_void);
5824 builtin_type->builtin_func_ptr
5825 = lookup_pointer_type (lookup_function_type (builtin_type->builtin_void));
0875794a
JK
5826 builtin_type->builtin_func_func
5827 = lookup_function_type (builtin_type->builtin_func_ptr);
46bf5051 5828
78267919 5829 /* This type represents a GDB internal function. */
e9bb382b
UW
5830 builtin_type->internal_fn
5831 = arch_type (gdbarch, TYPE_CODE_INTERNAL_FUNCTION, 0,
5832 "<internal function>");
78267919 5833
e81e7f5e
SC
5834 /* This type represents an xmethod. */
5835 builtin_type->xmethod
5836 = arch_type (gdbarch, TYPE_CODE_XMETHOD, 0, "<xmethod>");
5837
46bf5051
UW
5838 return builtin_type;
5839}
5840
46bf5051
UW
5841/* This set of objfile-based types is intended to be used by symbol
5842 readers as basic types. */
5843
7a102139
TT
5844static const struct objfile_key<struct objfile_type,
5845 gdb::noop_deleter<struct objfile_type>>
5846 objfile_type_data;
46bf5051
UW
5847
5848const struct objfile_type *
5849objfile_type (struct objfile *objfile)
5850{
5851 struct gdbarch *gdbarch;
7a102139 5852 struct objfile_type *objfile_type = objfile_type_data.get (objfile);
46bf5051
UW
5853
5854 if (objfile_type)
5855 return objfile_type;
5856
5857 objfile_type = OBSTACK_CALLOC (&objfile->objfile_obstack,
5858 1, struct objfile_type);
5859
5860 /* Use the objfile architecture to determine basic type properties. */
08feed99 5861 gdbarch = objfile->arch ();
46bf5051
UW
5862
5863 /* Basic types. */
5864 objfile_type->builtin_void
77b7c781 5865 = init_type (objfile, TYPE_CODE_VOID, TARGET_CHAR_BIT, "void");
46bf5051 5866 objfile_type->builtin_char
19f392bc
UW
5867 = init_integer_type (objfile, TARGET_CHAR_BIT,
5868 !gdbarch_char_signed (gdbarch), "char");
c413c448 5869 TYPE_NOSIGN (objfile_type->builtin_char) = 1;
46bf5051 5870 objfile_type->builtin_signed_char
19f392bc
UW
5871 = init_integer_type (objfile, TARGET_CHAR_BIT,
5872 0, "signed char");
46bf5051 5873 objfile_type->builtin_unsigned_char
19f392bc
UW
5874 = init_integer_type (objfile, TARGET_CHAR_BIT,
5875 1, "unsigned char");
46bf5051 5876 objfile_type->builtin_short
19f392bc
UW
5877 = init_integer_type (objfile, gdbarch_short_bit (gdbarch),
5878 0, "short");
46bf5051 5879 objfile_type->builtin_unsigned_short
19f392bc
UW
5880 = init_integer_type (objfile, gdbarch_short_bit (gdbarch),
5881 1, "unsigned short");
46bf5051 5882 objfile_type->builtin_int
19f392bc
UW
5883 = init_integer_type (objfile, gdbarch_int_bit (gdbarch),
5884 0, "int");
46bf5051 5885 objfile_type->builtin_unsigned_int
19f392bc
UW
5886 = init_integer_type (objfile, gdbarch_int_bit (gdbarch),
5887 1, "unsigned int");
46bf5051 5888 objfile_type->builtin_long
19f392bc
UW
5889 = init_integer_type (objfile, gdbarch_long_bit (gdbarch),
5890 0, "long");
46bf5051 5891 objfile_type->builtin_unsigned_long
19f392bc
UW
5892 = init_integer_type (objfile, gdbarch_long_bit (gdbarch),
5893 1, "unsigned long");
46bf5051 5894 objfile_type->builtin_long_long
19f392bc
UW
5895 = init_integer_type (objfile, gdbarch_long_long_bit (gdbarch),
5896 0, "long long");
46bf5051 5897 objfile_type->builtin_unsigned_long_long
19f392bc
UW
5898 = init_integer_type (objfile, gdbarch_long_long_bit (gdbarch),
5899 1, "unsigned long long");
46bf5051 5900 objfile_type->builtin_float
19f392bc
UW
5901 = init_float_type (objfile, gdbarch_float_bit (gdbarch),
5902 "float", gdbarch_float_format (gdbarch));
46bf5051 5903 objfile_type->builtin_double
19f392bc
UW
5904 = init_float_type (objfile, gdbarch_double_bit (gdbarch),
5905 "double", gdbarch_double_format (gdbarch));
46bf5051 5906 objfile_type->builtin_long_double
19f392bc
UW
5907 = init_float_type (objfile, gdbarch_long_double_bit (gdbarch),
5908 "long double", gdbarch_long_double_format (gdbarch));
46bf5051
UW
5909
5910 /* This type represents a type that was unrecognized in symbol read-in. */
5911 objfile_type->builtin_error
19f392bc 5912 = init_type (objfile, TYPE_CODE_ERROR, 0, "<unknown type>");
46bf5051
UW
5913
5914 /* The following set of types is used for symbols with no
5915 debug information. */
5916 objfile_type->nodebug_text_symbol
77b7c781 5917 = init_type (objfile, TYPE_CODE_FUNC, TARGET_CHAR_BIT,
19f392bc 5918 "<text variable, no debug info>");
0875794a 5919 objfile_type->nodebug_text_gnu_ifunc_symbol
77b7c781 5920 = init_type (objfile, TYPE_CODE_FUNC, TARGET_CHAR_BIT,
19f392bc 5921 "<text gnu-indirect-function variable, no debug info>");
19f392bc 5922 TYPE_GNU_IFUNC (objfile_type->nodebug_text_gnu_ifunc_symbol) = 1;
0875794a 5923 objfile_type->nodebug_got_plt_symbol
19f392bc
UW
5924 = init_pointer_type (objfile, gdbarch_addr_bit (gdbarch),
5925 "<text from jump slot in .got.plt, no debug info>",
5926 objfile_type->nodebug_text_symbol);
46bf5051 5927 objfile_type->nodebug_data_symbol
46a4882b 5928 = init_nodebug_var_type (objfile, "<data variable, no debug info>");
46bf5051 5929 objfile_type->nodebug_unknown_symbol
46a4882b 5930 = init_nodebug_var_type (objfile, "<variable (not text or data), no debug info>");
46bf5051 5931 objfile_type->nodebug_tls_symbol
46a4882b 5932 = init_nodebug_var_type (objfile, "<thread local variable, no debug info>");
000177f0
AC
5933
5934 /* NOTE: on some targets, addresses and pointers are not necessarily
0a7cfe2c 5935 the same.
000177f0
AC
5936
5937 The upshot is:
5938 - gdb's `struct type' always describes the target's
5939 representation.
5940 - gdb's `struct value' objects should always hold values in
5941 target form.
5942 - gdb's CORE_ADDR values are addresses in the unified virtual
5943 address space that the assembler and linker work with. Thus,
5944 since target_read_memory takes a CORE_ADDR as an argument, it
5945 can access any memory on the target, even if the processor has
5946 separate code and data address spaces.
5947
46bf5051
UW
5948 In this context, objfile_type->builtin_core_addr is a bit odd:
5949 it's a target type for a value the target will never see. It's
5950 only used to hold the values of (typeless) linker symbols, which
5951 are indeed in the unified virtual address space. */
000177f0 5952
46bf5051 5953 objfile_type->builtin_core_addr
19f392bc
UW
5954 = init_integer_type (objfile, gdbarch_addr_bit (gdbarch), 1,
5955 "__CORE_ADDR");
64c50499 5956
7a102139 5957 objfile_type_data.set (objfile, objfile_type);
46bf5051 5958 return objfile_type;
000177f0
AC
5959}
5960
6c265988 5961void _initialize_gdbtypes ();
c906108c 5962void
6c265988 5963_initialize_gdbtypes ()
c906108c 5964{
5674de60
UW
5965 gdbtypes_data = gdbarch_data_register_post_init (gdbtypes_post_init);
5966
ccce17b0
YQ
5967 add_setshow_zuinteger_cmd ("overload", no_class, &overload_debug,
5968 _("Set debugging of C++ overloading."),
5969 _("Show debugging of C++ overloading."),
5970 _("When enabled, ranking of the "
5971 "functions is displayed."),
5972 NULL,
5973 show_overload_debug,
5974 &setdebuglist, &showdebuglist);
5674de60 5975
7ba81444 5976 /* Add user knob for controlling resolution of opaque types. */
5674de60 5977 add_setshow_boolean_cmd ("opaque-type-resolution", class_support,
3e43a32a
MS
5978 &opaque_type_resolution,
5979 _("Set resolution of opaque struct/class/union"
5980 " types (if set before loading symbols)."),
5981 _("Show resolution of opaque struct/class/union"
5982 " types (if set before loading symbols)."),
5983 NULL, NULL,
5674de60
UW
5984 show_opaque_type_resolution,
5985 &setlist, &showlist);
a451cb65
KS
5986
5987 /* Add an option to permit non-strict type checking. */
5988 add_setshow_boolean_cmd ("type", class_support,
5989 &strict_type_checking,
5990 _("Set strict type checking."),
5991 _("Show strict type checking."),
5992 NULL, NULL,
5993 show_strict_type_checking,
5994 &setchecklist, &showchecklist);
c906108c 5995}
This page took 2.241794 seconds and 4 git commands to generate.