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