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