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