Change regcache list to be an hash map
[deliverable/binutils-gdb.git] / gdb / gdbtypes.c
CommitLineData
c906108c 1/* Support routines for manipulating internal types for GDB.
4f2aea11 2
42a4f53d 3 Copyright (C) 1992-2019 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));
4497 printfi_filtered (spaces + 8, "voffset %u\n",
4498 TYPE_FN_FIELD_VOFFSET (f, overload_idx));
4499 }
4500 }
4501}
4502
4503static void
fba45db2 4504print_cplus_stuff (struct type *type, int spaces)
c906108c 4505{
ae6ae975
DE
4506 printfi_filtered (spaces, "vptr_fieldno %d\n", TYPE_VPTR_FIELDNO (type));
4507 printfi_filtered (spaces, "vptr_basetype ");
4508 gdb_print_host_address (TYPE_VPTR_BASETYPE (type), gdb_stdout);
4509 puts_filtered ("\n");
4510 if (TYPE_VPTR_BASETYPE (type) != NULL)
4511 recursive_dump_type (TYPE_VPTR_BASETYPE (type), spaces + 2);
4512
c906108c
SS
4513 printfi_filtered (spaces, "n_baseclasses %d\n",
4514 TYPE_N_BASECLASSES (type));
4515 printfi_filtered (spaces, "nfn_fields %d\n",
4516 TYPE_NFN_FIELDS (type));
c906108c
SS
4517 if (TYPE_N_BASECLASSES (type) > 0)
4518 {
4519 printfi_filtered (spaces, "virtual_field_bits (%d bits at *",
4520 TYPE_N_BASECLASSES (type));
7ba81444
MS
4521 gdb_print_host_address (TYPE_FIELD_VIRTUAL_BITS (type),
4522 gdb_stdout);
c906108c
SS
4523 printf_filtered (")");
4524
4525 print_bit_vector (TYPE_FIELD_VIRTUAL_BITS (type),
4526 TYPE_N_BASECLASSES (type));
4527 puts_filtered ("\n");
4528 }
4529 if (TYPE_NFIELDS (type) > 0)
4530 {
4531 if (TYPE_FIELD_PRIVATE_BITS (type) != NULL)
4532 {
7ba81444
MS
4533 printfi_filtered (spaces,
4534 "private_field_bits (%d bits at *",
c906108c 4535 TYPE_NFIELDS (type));
7ba81444
MS
4536 gdb_print_host_address (TYPE_FIELD_PRIVATE_BITS (type),
4537 gdb_stdout);
c906108c
SS
4538 printf_filtered (")");
4539 print_bit_vector (TYPE_FIELD_PRIVATE_BITS (type),
4540 TYPE_NFIELDS (type));
4541 puts_filtered ("\n");
4542 }
4543 if (TYPE_FIELD_PROTECTED_BITS (type) != NULL)
4544 {
7ba81444
MS
4545 printfi_filtered (spaces,
4546 "protected_field_bits (%d bits at *",
c906108c 4547 TYPE_NFIELDS (type));
7ba81444
MS
4548 gdb_print_host_address (TYPE_FIELD_PROTECTED_BITS (type),
4549 gdb_stdout);
c906108c
SS
4550 printf_filtered (")");
4551 print_bit_vector (TYPE_FIELD_PROTECTED_BITS (type),
4552 TYPE_NFIELDS (type));
4553 puts_filtered ("\n");
4554 }
4555 }
4556 if (TYPE_NFN_FIELDS (type) > 0)
4557 {
4558 dump_fn_fieldlists (type, spaces);
4559 }
4560}
4561
b4ba55a1
JB
4562/* Print the contents of the TYPE's type_specific union, assuming that
4563 its type-specific kind is TYPE_SPECIFIC_GNAT_STUFF. */
4564
4565static void
4566print_gnat_stuff (struct type *type, int spaces)
4567{
4568 struct type *descriptive_type = TYPE_DESCRIPTIVE_TYPE (type);
4569
8cd00c59
PMR
4570 if (descriptive_type == NULL)
4571 printfi_filtered (spaces + 2, "no descriptive type\n");
4572 else
4573 {
4574 printfi_filtered (spaces + 2, "descriptive type\n");
4575 recursive_dump_type (descriptive_type, spaces + 4);
4576 }
b4ba55a1
JB
4577}
4578
c906108c
SS
4579static struct obstack dont_print_type_obstack;
4580
4581void
fba45db2 4582recursive_dump_type (struct type *type, int spaces)
c906108c
SS
4583{
4584 int idx;
4585
4586 if (spaces == 0)
4587 obstack_begin (&dont_print_type_obstack, 0);
4588
4589 if (TYPE_NFIELDS (type) > 0
b4ba55a1 4590 || (HAVE_CPLUS_STRUCT (type) && TYPE_NFN_FIELDS (type) > 0))
c906108c
SS
4591 {
4592 struct type **first_dont_print
7ba81444 4593 = (struct type **) obstack_base (&dont_print_type_obstack);
c906108c 4594
7ba81444
MS
4595 int i = (struct type **)
4596 obstack_next_free (&dont_print_type_obstack) - first_dont_print;
c906108c
SS
4597
4598 while (--i >= 0)
4599 {
4600 if (type == first_dont_print[i])
4601 {
4602 printfi_filtered (spaces, "type node ");
d4f3574e 4603 gdb_print_host_address (type, gdb_stdout);
a3f17187 4604 printf_filtered (_(" <same as already seen type>\n"));
c906108c
SS
4605 return;
4606 }
4607 }
4608
4609 obstack_ptr_grow (&dont_print_type_obstack, type);
4610 }
4611
4612 printfi_filtered (spaces, "type node ");
d4f3574e 4613 gdb_print_host_address (type, gdb_stdout);
c906108c
SS
4614 printf_filtered ("\n");
4615 printfi_filtered (spaces, "name '%s' (",
4616 TYPE_NAME (type) ? TYPE_NAME (type) : "<NULL>");
d4f3574e 4617 gdb_print_host_address (TYPE_NAME (type), gdb_stdout);
c906108c 4618 printf_filtered (")\n");
c906108c
SS
4619 printfi_filtered (spaces, "code 0x%x ", TYPE_CODE (type));
4620 switch (TYPE_CODE (type))
4621 {
c5aa993b
JM
4622 case TYPE_CODE_UNDEF:
4623 printf_filtered ("(TYPE_CODE_UNDEF)");
4624 break;
4625 case TYPE_CODE_PTR:
4626 printf_filtered ("(TYPE_CODE_PTR)");
4627 break;
4628 case TYPE_CODE_ARRAY:
4629 printf_filtered ("(TYPE_CODE_ARRAY)");
4630 break;
4631 case TYPE_CODE_STRUCT:
4632 printf_filtered ("(TYPE_CODE_STRUCT)");
4633 break;
4634 case TYPE_CODE_UNION:
4635 printf_filtered ("(TYPE_CODE_UNION)");
4636 break;
4637 case TYPE_CODE_ENUM:
4638 printf_filtered ("(TYPE_CODE_ENUM)");
4639 break;
4f2aea11
MK
4640 case TYPE_CODE_FLAGS:
4641 printf_filtered ("(TYPE_CODE_FLAGS)");
4642 break;
c5aa993b
JM
4643 case TYPE_CODE_FUNC:
4644 printf_filtered ("(TYPE_CODE_FUNC)");
4645 break;
4646 case TYPE_CODE_INT:
4647 printf_filtered ("(TYPE_CODE_INT)");
4648 break;
4649 case TYPE_CODE_FLT:
4650 printf_filtered ("(TYPE_CODE_FLT)");
4651 break;
4652 case TYPE_CODE_VOID:
4653 printf_filtered ("(TYPE_CODE_VOID)");
4654 break;
4655 case TYPE_CODE_SET:
4656 printf_filtered ("(TYPE_CODE_SET)");
4657 break;
4658 case TYPE_CODE_RANGE:
4659 printf_filtered ("(TYPE_CODE_RANGE)");
4660 break;
4661 case TYPE_CODE_STRING:
4662 printf_filtered ("(TYPE_CODE_STRING)");
4663 break;
4664 case TYPE_CODE_ERROR:
4665 printf_filtered ("(TYPE_CODE_ERROR)");
4666 break;
0d5de010
DJ
4667 case TYPE_CODE_MEMBERPTR:
4668 printf_filtered ("(TYPE_CODE_MEMBERPTR)");
4669 break;
4670 case TYPE_CODE_METHODPTR:
4671 printf_filtered ("(TYPE_CODE_METHODPTR)");
c5aa993b
JM
4672 break;
4673 case TYPE_CODE_METHOD:
4674 printf_filtered ("(TYPE_CODE_METHOD)");
4675 break;
4676 case TYPE_CODE_REF:
4677 printf_filtered ("(TYPE_CODE_REF)");
4678 break;
4679 case TYPE_CODE_CHAR:
4680 printf_filtered ("(TYPE_CODE_CHAR)");
4681 break;
4682 case TYPE_CODE_BOOL:
4683 printf_filtered ("(TYPE_CODE_BOOL)");
4684 break;
e9e79dd9
FF
4685 case TYPE_CODE_COMPLEX:
4686 printf_filtered ("(TYPE_CODE_COMPLEX)");
4687 break;
c5aa993b
JM
4688 case TYPE_CODE_TYPEDEF:
4689 printf_filtered ("(TYPE_CODE_TYPEDEF)");
4690 break;
5c4e30ca
DC
4691 case TYPE_CODE_NAMESPACE:
4692 printf_filtered ("(TYPE_CODE_NAMESPACE)");
4693 break;
c5aa993b
JM
4694 default:
4695 printf_filtered ("(UNKNOWN TYPE CODE)");
4696 break;
c906108c
SS
4697 }
4698 puts_filtered ("\n");
cc1defb1 4699 printfi_filtered (spaces, "length %s\n", pulongest (TYPE_LENGTH (type)));
e9bb382b
UW
4700 if (TYPE_OBJFILE_OWNED (type))
4701 {
4702 printfi_filtered (spaces, "objfile ");
4703 gdb_print_host_address (TYPE_OWNER (type).objfile, gdb_stdout);
4704 }
4705 else
4706 {
4707 printfi_filtered (spaces, "gdbarch ");
4708 gdb_print_host_address (TYPE_OWNER (type).gdbarch, gdb_stdout);
4709 }
c906108c
SS
4710 printf_filtered ("\n");
4711 printfi_filtered (spaces, "target_type ");
d4f3574e 4712 gdb_print_host_address (TYPE_TARGET_TYPE (type), gdb_stdout);
c906108c
SS
4713 printf_filtered ("\n");
4714 if (TYPE_TARGET_TYPE (type) != NULL)
4715 {
4716 recursive_dump_type (TYPE_TARGET_TYPE (type), spaces + 2);
4717 }
4718 printfi_filtered (spaces, "pointer_type ");
d4f3574e 4719 gdb_print_host_address (TYPE_POINTER_TYPE (type), gdb_stdout);
c906108c
SS
4720 printf_filtered ("\n");
4721 printfi_filtered (spaces, "reference_type ");
d4f3574e 4722 gdb_print_host_address (TYPE_REFERENCE_TYPE (type), gdb_stdout);
c906108c 4723 printf_filtered ("\n");
2fdde8f8
DJ
4724 printfi_filtered (spaces, "type_chain ");
4725 gdb_print_host_address (TYPE_CHAIN (type), gdb_stdout);
e9e79dd9 4726 printf_filtered ("\n");
7ba81444
MS
4727 printfi_filtered (spaces, "instance_flags 0x%x",
4728 TYPE_INSTANCE_FLAGS (type));
2fdde8f8
DJ
4729 if (TYPE_CONST (type))
4730 {
a9ff5f12 4731 puts_filtered (" TYPE_CONST");
2fdde8f8
DJ
4732 }
4733 if (TYPE_VOLATILE (type))
4734 {
a9ff5f12 4735 puts_filtered (" TYPE_VOLATILE");
2fdde8f8
DJ
4736 }
4737 if (TYPE_CODE_SPACE (type))
4738 {
a9ff5f12 4739 puts_filtered (" TYPE_CODE_SPACE");
2fdde8f8
DJ
4740 }
4741 if (TYPE_DATA_SPACE (type))
4742 {
a9ff5f12 4743 puts_filtered (" TYPE_DATA_SPACE");
2fdde8f8 4744 }
8b2dbe47
KB
4745 if (TYPE_ADDRESS_CLASS_1 (type))
4746 {
a9ff5f12 4747 puts_filtered (" TYPE_ADDRESS_CLASS_1");
8b2dbe47
KB
4748 }
4749 if (TYPE_ADDRESS_CLASS_2 (type))
4750 {
a9ff5f12 4751 puts_filtered (" TYPE_ADDRESS_CLASS_2");
8b2dbe47 4752 }
06d66ee9
TT
4753 if (TYPE_RESTRICT (type))
4754 {
a9ff5f12 4755 puts_filtered (" TYPE_RESTRICT");
06d66ee9 4756 }
a2c2acaf
MW
4757 if (TYPE_ATOMIC (type))
4758 {
a9ff5f12 4759 puts_filtered (" TYPE_ATOMIC");
a2c2acaf 4760 }
2fdde8f8 4761 puts_filtered ("\n");
876cecd0
TT
4762
4763 printfi_filtered (spaces, "flags");
762a036f 4764 if (TYPE_UNSIGNED (type))
c906108c 4765 {
a9ff5f12 4766 puts_filtered (" TYPE_UNSIGNED");
c906108c 4767 }
762a036f
FF
4768 if (TYPE_NOSIGN (type))
4769 {
a9ff5f12 4770 puts_filtered (" TYPE_NOSIGN");
762a036f 4771 }
34877895
PJ
4772 if (TYPE_ENDIANITY_NOT_DEFAULT (type))
4773 {
4774 puts_filtered (" TYPE_ENDIANITY_NOT_DEFAULT");
4775 }
762a036f 4776 if (TYPE_STUB (type))
c906108c 4777 {
a9ff5f12 4778 puts_filtered (" TYPE_STUB");
c906108c 4779 }
762a036f
FF
4780 if (TYPE_TARGET_STUB (type))
4781 {
a9ff5f12 4782 puts_filtered (" TYPE_TARGET_STUB");
762a036f 4783 }
762a036f
FF
4784 if (TYPE_PROTOTYPED (type))
4785 {
a9ff5f12 4786 puts_filtered (" TYPE_PROTOTYPED");
762a036f
FF
4787 }
4788 if (TYPE_INCOMPLETE (type))
4789 {
a9ff5f12 4790 puts_filtered (" TYPE_INCOMPLETE");
762a036f 4791 }
762a036f
FF
4792 if (TYPE_VARARGS (type))
4793 {
a9ff5f12 4794 puts_filtered (" TYPE_VARARGS");
762a036f 4795 }
f5f8a009
EZ
4796 /* This is used for things like AltiVec registers on ppc. Gcc emits
4797 an attribute for the array type, which tells whether or not we
4798 have a vector, instead of a regular array. */
4799 if (TYPE_VECTOR (type))
4800 {
a9ff5f12 4801 puts_filtered (" TYPE_VECTOR");
f5f8a009 4802 }
876cecd0
TT
4803 if (TYPE_FIXED_INSTANCE (type))
4804 {
4805 puts_filtered (" TYPE_FIXED_INSTANCE");
4806 }
4807 if (TYPE_STUB_SUPPORTED (type))
4808 {
4809 puts_filtered (" TYPE_STUB_SUPPORTED");
4810 }
4811 if (TYPE_NOTTEXT (type))
4812 {
4813 puts_filtered (" TYPE_NOTTEXT");
4814 }
c906108c
SS
4815 puts_filtered ("\n");
4816 printfi_filtered (spaces, "nfields %d ", TYPE_NFIELDS (type));
d4f3574e 4817 gdb_print_host_address (TYPE_FIELDS (type), gdb_stdout);
c906108c
SS
4818 puts_filtered ("\n");
4819 for (idx = 0; idx < TYPE_NFIELDS (type); idx++)
4820 {
14e75d8e
JK
4821 if (TYPE_CODE (type) == TYPE_CODE_ENUM)
4822 printfi_filtered (spaces + 2,
4823 "[%d] enumval %s type ",
4824 idx, plongest (TYPE_FIELD_ENUMVAL (type, idx)));
4825 else
4826 printfi_filtered (spaces + 2,
6b850546
DT
4827 "[%d] bitpos %s bitsize %d type ",
4828 idx, plongest (TYPE_FIELD_BITPOS (type, idx)),
14e75d8e 4829 TYPE_FIELD_BITSIZE (type, idx));
d4f3574e 4830 gdb_print_host_address (TYPE_FIELD_TYPE (type, idx), gdb_stdout);
c906108c
SS
4831 printf_filtered (" name '%s' (",
4832 TYPE_FIELD_NAME (type, idx) != NULL
4833 ? TYPE_FIELD_NAME (type, idx)
4834 : "<NULL>");
d4f3574e 4835 gdb_print_host_address (TYPE_FIELD_NAME (type, idx), gdb_stdout);
c906108c
SS
4836 printf_filtered (")\n");
4837 if (TYPE_FIELD_TYPE (type, idx) != NULL)
4838 {
4839 recursive_dump_type (TYPE_FIELD_TYPE (type, idx), spaces + 4);
4840 }
4841 }
43bbcdc2
PH
4842 if (TYPE_CODE (type) == TYPE_CODE_RANGE)
4843 {
4844 printfi_filtered (spaces, "low %s%s high %s%s\n",
4845 plongest (TYPE_LOW_BOUND (type)),
4846 TYPE_LOW_BOUND_UNDEFINED (type) ? " (undefined)" : "",
4847 plongest (TYPE_HIGH_BOUND (type)),
3e43a32a
MS
4848 TYPE_HIGH_BOUND_UNDEFINED (type)
4849 ? " (undefined)" : "");
43bbcdc2 4850 }
c906108c 4851
b4ba55a1
JB
4852 switch (TYPE_SPECIFIC_FIELD (type))
4853 {
4854 case TYPE_SPECIFIC_CPLUS_STUFF:
4855 printfi_filtered (spaces, "cplus_stuff ");
4856 gdb_print_host_address (TYPE_CPLUS_SPECIFIC (type),
4857 gdb_stdout);
4858 puts_filtered ("\n");
4859 print_cplus_stuff (type, spaces);
4860 break;
8da61cc4 4861
b4ba55a1
JB
4862 case TYPE_SPECIFIC_GNAT_STUFF:
4863 printfi_filtered (spaces, "gnat_stuff ");
4864 gdb_print_host_address (TYPE_GNAT_SPECIFIC (type), gdb_stdout);
4865 puts_filtered ("\n");
4866 print_gnat_stuff (type, spaces);
4867 break;
701c159d 4868
b4ba55a1
JB
4869 case TYPE_SPECIFIC_FLOATFORMAT:
4870 printfi_filtered (spaces, "floatformat ");
0db7851f
UW
4871 if (TYPE_FLOATFORMAT (type) == NULL
4872 || TYPE_FLOATFORMAT (type)->name == NULL)
b4ba55a1
JB
4873 puts_filtered ("(null)");
4874 else
0db7851f 4875 puts_filtered (TYPE_FLOATFORMAT (type)->name);
b4ba55a1
JB
4876 puts_filtered ("\n");
4877 break;
c906108c 4878
b6cdc2c1 4879 case TYPE_SPECIFIC_FUNC:
b4ba55a1
JB
4880 printfi_filtered (spaces, "calling_convention %d\n",
4881 TYPE_CALLING_CONVENTION (type));
b6cdc2c1 4882 /* tail_call_list is not printed. */
b4ba55a1 4883 break;
09e2d7c7
DE
4884
4885 case TYPE_SPECIFIC_SELF_TYPE:
4886 printfi_filtered (spaces, "self_type ");
4887 gdb_print_host_address (TYPE_SELF_TYPE (type), gdb_stdout);
4888 puts_filtered ("\n");
4889 break;
c906108c 4890 }
b4ba55a1 4891
c906108c
SS
4892 if (spaces == 0)
4893 obstack_free (&dont_print_type_obstack, NULL);
4894}
5212577a 4895\f
ae5a43e0
DJ
4896/* Trivial helpers for the libiberty hash table, for mapping one
4897 type to another. */
4898
fd90ace4 4899struct type_pair : public allocate_on_obstack
ae5a43e0 4900{
fd90ace4
YQ
4901 type_pair (struct type *old_, struct type *newobj_)
4902 : old (old_), newobj (newobj_)
4903 {}
4904
4905 struct type * const old, * const newobj;
ae5a43e0
DJ
4906};
4907
4908static hashval_t
4909type_pair_hash (const void *item)
4910{
9a3c8263 4911 const struct type_pair *pair = (const struct type_pair *) item;
d8734c88 4912
ae5a43e0
DJ
4913 return htab_hash_pointer (pair->old);
4914}
4915
4916static int
4917type_pair_eq (const void *item_lhs, const void *item_rhs)
4918{
9a3c8263
SM
4919 const struct type_pair *lhs = (const struct type_pair *) item_lhs;
4920 const struct type_pair *rhs = (const struct type_pair *) item_rhs;
d8734c88 4921
ae5a43e0
DJ
4922 return lhs->old == rhs->old;
4923}
4924
4925/* Allocate the hash table used by copy_type_recursive to walk
4926 types without duplicates. We use OBJFILE's obstack, because
4927 OBJFILE is about to be deleted. */
4928
4929htab_t
4930create_copied_types_hash (struct objfile *objfile)
4931{
4932 return htab_create_alloc_ex (1, type_pair_hash, type_pair_eq,
4933 NULL, &objfile->objfile_obstack,
4934 hashtab_obstack_allocate,
4935 dummy_obstack_deallocate);
4936}
4937
d9823cbb
KB
4938/* Recursively copy (deep copy) a dynamic attribute list of a type. */
4939
4940static struct dynamic_prop_list *
4941copy_dynamic_prop_list (struct obstack *objfile_obstack,
4942 struct dynamic_prop_list *list)
4943{
4944 struct dynamic_prop_list *copy = list;
4945 struct dynamic_prop_list **node_ptr = &copy;
4946
4947 while (*node_ptr != NULL)
4948 {
4949 struct dynamic_prop_list *node_copy;
4950
224c3ddb
SM
4951 node_copy = ((struct dynamic_prop_list *)
4952 obstack_copy (objfile_obstack, *node_ptr,
4953 sizeof (struct dynamic_prop_list)));
283a9958 4954 node_copy->prop = (*node_ptr)->prop;
d9823cbb
KB
4955 *node_ptr = node_copy;
4956
4957 node_ptr = &node_copy->next;
4958 }
4959
4960 return copy;
4961}
4962
7ba81444 4963/* Recursively copy (deep copy) TYPE, if it is associated with
eed8b28a
PP
4964 OBJFILE. Return a new type owned by the gdbarch associated with the type, a
4965 saved type if we have already visited TYPE (using COPIED_TYPES), or TYPE if
4966 it is not associated with OBJFILE. */
ae5a43e0
DJ
4967
4968struct type *
7ba81444
MS
4969copy_type_recursive (struct objfile *objfile,
4970 struct type *type,
ae5a43e0
DJ
4971 htab_t copied_types)
4972{
ae5a43e0
DJ
4973 void **slot;
4974 struct type *new_type;
4975
e9bb382b 4976 if (! TYPE_OBJFILE_OWNED (type))
ae5a43e0
DJ
4977 return type;
4978
7ba81444
MS
4979 /* This type shouldn't be pointing to any types in other objfiles;
4980 if it did, the type might disappear unexpectedly. */
ae5a43e0
DJ
4981 gdb_assert (TYPE_OBJFILE (type) == objfile);
4982
fd90ace4
YQ
4983 struct type_pair pair (type, nullptr);
4984
ae5a43e0
DJ
4985 slot = htab_find_slot (copied_types, &pair, INSERT);
4986 if (*slot != NULL)
fe978cb0 4987 return ((struct type_pair *) *slot)->newobj;
ae5a43e0 4988
e9bb382b 4989 new_type = alloc_type_arch (get_type_arch (type));
ae5a43e0
DJ
4990
4991 /* We must add the new type to the hash table immediately, in case
4992 we encounter this type again during a recursive call below. */
fd90ace4
YQ
4993 struct type_pair *stored
4994 = new (&objfile->objfile_obstack) struct type_pair (type, new_type);
4995
ae5a43e0
DJ
4996 *slot = stored;
4997
876cecd0
TT
4998 /* Copy the common fields of types. For the main type, we simply
4999 copy the entire thing and then update specific fields as needed. */
5000 *TYPE_MAIN_TYPE (new_type) = *TYPE_MAIN_TYPE (type);
e9bb382b
UW
5001 TYPE_OBJFILE_OWNED (new_type) = 0;
5002 TYPE_OWNER (new_type).gdbarch = get_type_arch (type);
876cecd0 5003
ae5a43e0
DJ
5004 if (TYPE_NAME (type))
5005 TYPE_NAME (new_type) = xstrdup (TYPE_NAME (type));
ae5a43e0
DJ
5006
5007 TYPE_INSTANCE_FLAGS (new_type) = TYPE_INSTANCE_FLAGS (type);
5008 TYPE_LENGTH (new_type) = TYPE_LENGTH (type);
5009
5010 /* Copy the fields. */
ae5a43e0
DJ
5011 if (TYPE_NFIELDS (type))
5012 {
5013 int i, nfields;
5014
5015 nfields = TYPE_NFIELDS (type);
2fabdf33
AB
5016 TYPE_FIELDS (new_type) = (struct field *)
5017 TYPE_ZALLOC (new_type, nfields * sizeof (struct field));
ae5a43e0
DJ
5018 for (i = 0; i < nfields; i++)
5019 {
7ba81444
MS
5020 TYPE_FIELD_ARTIFICIAL (new_type, i) =
5021 TYPE_FIELD_ARTIFICIAL (type, i);
ae5a43e0
DJ
5022 TYPE_FIELD_BITSIZE (new_type, i) = TYPE_FIELD_BITSIZE (type, i);
5023 if (TYPE_FIELD_TYPE (type, i))
5024 TYPE_FIELD_TYPE (new_type, i)
5025 = copy_type_recursive (objfile, TYPE_FIELD_TYPE (type, i),
5026 copied_types);
5027 if (TYPE_FIELD_NAME (type, i))
7ba81444
MS
5028 TYPE_FIELD_NAME (new_type, i) =
5029 xstrdup (TYPE_FIELD_NAME (type, i));
d6a843b5 5030 switch (TYPE_FIELD_LOC_KIND (type, i))
ae5a43e0 5031 {
d6a843b5
JK
5032 case FIELD_LOC_KIND_BITPOS:
5033 SET_FIELD_BITPOS (TYPE_FIELD (new_type, i),
5034 TYPE_FIELD_BITPOS (type, i));
5035 break;
14e75d8e
JK
5036 case FIELD_LOC_KIND_ENUMVAL:
5037 SET_FIELD_ENUMVAL (TYPE_FIELD (new_type, i),
5038 TYPE_FIELD_ENUMVAL (type, i));
5039 break;
d6a843b5
JK
5040 case FIELD_LOC_KIND_PHYSADDR:
5041 SET_FIELD_PHYSADDR (TYPE_FIELD (new_type, i),
5042 TYPE_FIELD_STATIC_PHYSADDR (type, i));
5043 break;
5044 case FIELD_LOC_KIND_PHYSNAME:
5045 SET_FIELD_PHYSNAME (TYPE_FIELD (new_type, i),
5046 xstrdup (TYPE_FIELD_STATIC_PHYSNAME (type,
5047 i)));
5048 break;
5049 default:
5050 internal_error (__FILE__, __LINE__,
5051 _("Unexpected type field location kind: %d"),
5052 TYPE_FIELD_LOC_KIND (type, i));
ae5a43e0
DJ
5053 }
5054 }
5055 }
5056
0963b4bd 5057 /* For range types, copy the bounds information. */
43bbcdc2
PH
5058 if (TYPE_CODE (type) == TYPE_CODE_RANGE)
5059 {
2fabdf33
AB
5060 TYPE_RANGE_DATA (new_type) = (struct range_bounds *)
5061 TYPE_ALLOC (new_type, sizeof (struct range_bounds));
43bbcdc2
PH
5062 *TYPE_RANGE_DATA (new_type) = *TYPE_RANGE_DATA (type);
5063 }
5064
d9823cbb
KB
5065 if (TYPE_DYN_PROP_LIST (type) != NULL)
5066 TYPE_DYN_PROP_LIST (new_type)
5067 = copy_dynamic_prop_list (&objfile->objfile_obstack,
5068 TYPE_DYN_PROP_LIST (type));
5069
3cdcd0ce 5070
ae5a43e0
DJ
5071 /* Copy pointers to other types. */
5072 if (TYPE_TARGET_TYPE (type))
7ba81444
MS
5073 TYPE_TARGET_TYPE (new_type) =
5074 copy_type_recursive (objfile,
5075 TYPE_TARGET_TYPE (type),
5076 copied_types);
f6b3afbf 5077
ae5a43e0
DJ
5078 /* Maybe copy the type_specific bits.
5079
5080 NOTE drow/2005-12-09: We do not copy the C++-specific bits like
5081 base classes and methods. There's no fundamental reason why we
5082 can't, but at the moment it is not needed. */
5083
f6b3afbf
DE
5084 switch (TYPE_SPECIFIC_FIELD (type))
5085 {
5086 case TYPE_SPECIFIC_NONE:
5087 break;
5088 case TYPE_SPECIFIC_FUNC:
5089 INIT_FUNC_SPECIFIC (new_type);
5090 TYPE_CALLING_CONVENTION (new_type) = TYPE_CALLING_CONVENTION (type);
5091 TYPE_NO_RETURN (new_type) = TYPE_NO_RETURN (type);
5092 TYPE_TAIL_CALL_LIST (new_type) = NULL;
5093 break;
5094 case TYPE_SPECIFIC_FLOATFORMAT:
5095 TYPE_FLOATFORMAT (new_type) = TYPE_FLOATFORMAT (type);
5096 break;
5097 case TYPE_SPECIFIC_CPLUS_STUFF:
5098 INIT_CPLUS_SPECIFIC (new_type);
5099 break;
5100 case TYPE_SPECIFIC_GNAT_STUFF:
5101 INIT_GNAT_SPECIFIC (new_type);
5102 break;
09e2d7c7
DE
5103 case TYPE_SPECIFIC_SELF_TYPE:
5104 set_type_self_type (new_type,
5105 copy_type_recursive (objfile, TYPE_SELF_TYPE (type),
5106 copied_types));
5107 break;
f6b3afbf
DE
5108 default:
5109 gdb_assert_not_reached ("bad type_specific_kind");
5110 }
ae5a43e0
DJ
5111
5112 return new_type;
5113}
5114
4af88198
JB
5115/* Make a copy of the given TYPE, except that the pointer & reference
5116 types are not preserved.
5117
5118 This function assumes that the given type has an associated objfile.
5119 This objfile is used to allocate the new type. */
5120
5121struct type *
5122copy_type (const struct type *type)
5123{
5124 struct type *new_type;
5125
e9bb382b 5126 gdb_assert (TYPE_OBJFILE_OWNED (type));
4af88198 5127
e9bb382b 5128 new_type = alloc_type_copy (type);
4af88198
JB
5129 TYPE_INSTANCE_FLAGS (new_type) = TYPE_INSTANCE_FLAGS (type);
5130 TYPE_LENGTH (new_type) = TYPE_LENGTH (type);
5131 memcpy (TYPE_MAIN_TYPE (new_type), TYPE_MAIN_TYPE (type),
5132 sizeof (struct main_type));
d9823cbb
KB
5133 if (TYPE_DYN_PROP_LIST (type) != NULL)
5134 TYPE_DYN_PROP_LIST (new_type)
5135 = copy_dynamic_prop_list (&TYPE_OBJFILE (type) -> objfile_obstack,
5136 TYPE_DYN_PROP_LIST (type));
4af88198
JB
5137
5138 return new_type;
5139}
5212577a 5140\f
e9bb382b
UW
5141/* Helper functions to initialize architecture-specific types. */
5142
5143/* Allocate a type structure associated with GDBARCH and set its
5144 CODE, LENGTH, and NAME fields. */
5212577a 5145
e9bb382b
UW
5146struct type *
5147arch_type (struct gdbarch *gdbarch,
77b7c781 5148 enum type_code code, int bit, const char *name)
e9bb382b
UW
5149{
5150 struct type *type;
5151
5152 type = alloc_type_arch (gdbarch);
ae438bc5 5153 set_type_code (type, code);
77b7c781
UW
5154 gdb_assert ((bit % TARGET_CHAR_BIT) == 0);
5155 TYPE_LENGTH (type) = bit / TARGET_CHAR_BIT;
e9bb382b
UW
5156
5157 if (name)
6c214e7c 5158 TYPE_NAME (type) = gdbarch_obstack_strdup (gdbarch, name);
e9bb382b
UW
5159
5160 return type;
5161}
5162
5163/* Allocate a TYPE_CODE_INT type structure associated with GDBARCH.
5164 BIT is the type size in bits. If UNSIGNED_P is non-zero, set
5165 the type's TYPE_UNSIGNED flag. NAME is the type name. */
5212577a 5166
e9bb382b
UW
5167struct type *
5168arch_integer_type (struct gdbarch *gdbarch,
695bfa52 5169 int bit, int unsigned_p, const char *name)
e9bb382b
UW
5170{
5171 struct type *t;
5172
77b7c781 5173 t = arch_type (gdbarch, TYPE_CODE_INT, bit, name);
e9bb382b
UW
5174 if (unsigned_p)
5175 TYPE_UNSIGNED (t) = 1;
e9bb382b
UW
5176
5177 return t;
5178}
5179
5180/* Allocate a TYPE_CODE_CHAR type structure associated with GDBARCH.
5181 BIT is the type size in bits. If UNSIGNED_P is non-zero, set
5182 the type's TYPE_UNSIGNED flag. NAME is the type name. */
5212577a 5183
e9bb382b
UW
5184struct type *
5185arch_character_type (struct gdbarch *gdbarch,
695bfa52 5186 int bit, int unsigned_p, const char *name)
e9bb382b
UW
5187{
5188 struct type *t;
5189
77b7c781 5190 t = arch_type (gdbarch, TYPE_CODE_CHAR, bit, name);
e9bb382b
UW
5191 if (unsigned_p)
5192 TYPE_UNSIGNED (t) = 1;
5193
5194 return t;
5195}
5196
5197/* Allocate a TYPE_CODE_BOOL type structure associated with GDBARCH.
5198 BIT is the type size in bits. If UNSIGNED_P is non-zero, set
5199 the type's TYPE_UNSIGNED flag. NAME is the type name. */
5212577a 5200
e9bb382b
UW
5201struct type *
5202arch_boolean_type (struct gdbarch *gdbarch,
695bfa52 5203 int bit, int unsigned_p, const char *name)
e9bb382b
UW
5204{
5205 struct type *t;
5206
77b7c781 5207 t = arch_type (gdbarch, TYPE_CODE_BOOL, bit, name);
e9bb382b
UW
5208 if (unsigned_p)
5209 TYPE_UNSIGNED (t) = 1;
5210
5211 return t;
5212}
5213
5214/* Allocate a TYPE_CODE_FLT type structure associated with GDBARCH.
5215 BIT is the type size in bits; if BIT equals -1, the size is
5216 determined by the floatformat. NAME is the type name. Set the
5217 TYPE_FLOATFORMAT from FLOATFORMATS. */
5212577a 5218
27067745 5219struct type *
e9bb382b 5220arch_float_type (struct gdbarch *gdbarch,
695bfa52
TT
5221 int bit, const char *name,
5222 const struct floatformat **floatformats)
8da61cc4 5223{
0db7851f 5224 const struct floatformat *fmt = floatformats[gdbarch_byte_order (gdbarch)];
8da61cc4
DJ
5225 struct type *t;
5226
0db7851f 5227 bit = verify_floatformat (bit, fmt);
77b7c781 5228 t = arch_type (gdbarch, TYPE_CODE_FLT, bit, name);
0db7851f 5229 TYPE_FLOATFORMAT (t) = fmt;
b79497cb 5230
8da61cc4
DJ
5231 return t;
5232}
5233
88dfca6c
UW
5234/* Allocate a TYPE_CODE_DECFLOAT type structure associated with GDBARCH.
5235 BIT is the type size in bits. NAME is the type name. */
5236
5237struct type *
5238arch_decfloat_type (struct gdbarch *gdbarch, int bit, const char *name)
5239{
5240 struct type *t;
5241
77b7c781 5242 t = arch_type (gdbarch, TYPE_CODE_DECFLOAT, bit, name);
88dfca6c
UW
5243 return t;
5244}
5245
e9bb382b
UW
5246/* Allocate a TYPE_CODE_COMPLEX type structure associated with GDBARCH.
5247 NAME is the type name. TARGET_TYPE is the component float type. */
5212577a 5248
27067745 5249struct type *
e9bb382b 5250arch_complex_type (struct gdbarch *gdbarch,
695bfa52 5251 const char *name, struct type *target_type)
27067745
UW
5252{
5253 struct type *t;
d8734c88 5254
e9bb382b 5255 t = arch_type (gdbarch, TYPE_CODE_COMPLEX,
77b7c781 5256 2 * TYPE_LENGTH (target_type) * TARGET_CHAR_BIT, name);
27067745
UW
5257 TYPE_TARGET_TYPE (t) = target_type;
5258 return t;
5259}
5260
88dfca6c
UW
5261/* Allocate a TYPE_CODE_PTR type structure associated with GDBARCH.
5262 BIT is the pointer type size in bits. NAME is the type name.
5263 TARGET_TYPE is the pointer target type. Always sets the pointer type's
5264 TYPE_UNSIGNED flag. */
5265
5266struct type *
5267arch_pointer_type (struct gdbarch *gdbarch,
5268 int bit, const char *name, struct type *target_type)
5269{
5270 struct type *t;
5271
77b7c781 5272 t = arch_type (gdbarch, TYPE_CODE_PTR, bit, name);
88dfca6c
UW
5273 TYPE_TARGET_TYPE (t) = target_type;
5274 TYPE_UNSIGNED (t) = 1;
5275 return t;
5276}
5277
e9bb382b 5278/* Allocate a TYPE_CODE_FLAGS type structure associated with GDBARCH.
77b7c781 5279 NAME is the type name. BIT is the size of the flag word in bits. */
5212577a 5280
e9bb382b 5281struct type *
77b7c781 5282arch_flags_type (struct gdbarch *gdbarch, const char *name, int bit)
e9bb382b 5283{
e9bb382b
UW
5284 struct type *type;
5285
77b7c781 5286 type = arch_type (gdbarch, TYPE_CODE_FLAGS, bit, name);
e9bb382b 5287 TYPE_UNSIGNED (type) = 1;
81516450
DE
5288 TYPE_NFIELDS (type) = 0;
5289 /* Pre-allocate enough space assuming every field is one bit. */
224c3ddb 5290 TYPE_FIELDS (type)
77b7c781 5291 = (struct field *) TYPE_ZALLOC (type, bit * sizeof (struct field));
e9bb382b
UW
5292
5293 return type;
5294}
5295
5296/* Add field to TYPE_CODE_FLAGS type TYPE to indicate the bit at
81516450
DE
5297 position BITPOS is called NAME. Pass NAME as "" for fields that
5298 should not be printed. */
5299
5300void
5301append_flags_type_field (struct type *type, int start_bitpos, int nr_bits,
695bfa52 5302 struct type *field_type, const char *name)
81516450
DE
5303{
5304 int type_bitsize = TYPE_LENGTH (type) * TARGET_CHAR_BIT;
5305 int field_nr = TYPE_NFIELDS (type);
5306
5307 gdb_assert (TYPE_CODE (type) == TYPE_CODE_FLAGS);
5308 gdb_assert (TYPE_NFIELDS (type) + 1 <= type_bitsize);
5309 gdb_assert (start_bitpos >= 0 && start_bitpos < type_bitsize);
5310 gdb_assert (nr_bits >= 1 && nr_bits <= type_bitsize);
5311 gdb_assert (name != NULL);
5312
5313 TYPE_FIELD_NAME (type, field_nr) = xstrdup (name);
5314 TYPE_FIELD_TYPE (type, field_nr) = field_type;
5315 SET_FIELD_BITPOS (TYPE_FIELD (type, field_nr), start_bitpos);
5316 TYPE_FIELD_BITSIZE (type, field_nr) = nr_bits;
5317 ++TYPE_NFIELDS (type);
5318}
5319
5320/* Special version of append_flags_type_field to add a flag field.
5321 Add field to TYPE_CODE_FLAGS type TYPE to indicate the bit at
e9bb382b 5322 position BITPOS is called NAME. */
5212577a 5323
e9bb382b 5324void
695bfa52 5325append_flags_type_flag (struct type *type, int bitpos, const char *name)
e9bb382b 5326{
81516450 5327 struct gdbarch *gdbarch = get_type_arch (type);
e9bb382b 5328
81516450
DE
5329 append_flags_type_field (type, bitpos, 1,
5330 builtin_type (gdbarch)->builtin_bool,
5331 name);
e9bb382b
UW
5332}
5333
5334/* Allocate a TYPE_CODE_STRUCT or TYPE_CODE_UNION type structure (as
5335 specified by CODE) associated with GDBARCH. NAME is the type name. */
5212577a 5336
e9bb382b 5337struct type *
695bfa52
TT
5338arch_composite_type (struct gdbarch *gdbarch, const char *name,
5339 enum type_code code)
e9bb382b
UW
5340{
5341 struct type *t;
d8734c88 5342
e9bb382b
UW
5343 gdb_assert (code == TYPE_CODE_STRUCT || code == TYPE_CODE_UNION);
5344 t = arch_type (gdbarch, code, 0, NULL);
e86ca25f 5345 TYPE_NAME (t) = name;
e9bb382b
UW
5346 INIT_CPLUS_SPECIFIC (t);
5347 return t;
5348}
5349
5350/* Add new field with name NAME and type FIELD to composite type T.
f5dff777
DJ
5351 Do not set the field's position or adjust the type's length;
5352 the caller should do so. Return the new field. */
5212577a 5353
f5dff777 5354struct field *
695bfa52 5355append_composite_type_field_raw (struct type *t, const char *name,
f5dff777 5356 struct type *field)
e9bb382b
UW
5357{
5358 struct field *f;
d8734c88 5359
e9bb382b 5360 TYPE_NFIELDS (t) = TYPE_NFIELDS (t) + 1;
224c3ddb
SM
5361 TYPE_FIELDS (t) = XRESIZEVEC (struct field, TYPE_FIELDS (t),
5362 TYPE_NFIELDS (t));
e9bb382b
UW
5363 f = &(TYPE_FIELDS (t)[TYPE_NFIELDS (t) - 1]);
5364 memset (f, 0, sizeof f[0]);
5365 FIELD_TYPE (f[0]) = field;
5366 FIELD_NAME (f[0]) = name;
f5dff777
DJ
5367 return f;
5368}
5369
5370/* Add new field with name NAME and type FIELD to composite type T.
5371 ALIGNMENT (if non-zero) specifies the minimum field alignment. */
5212577a 5372
f5dff777 5373void
695bfa52 5374append_composite_type_field_aligned (struct type *t, const char *name,
f5dff777
DJ
5375 struct type *field, int alignment)
5376{
5377 struct field *f = append_composite_type_field_raw (t, name, field);
d8734c88 5378
e9bb382b
UW
5379 if (TYPE_CODE (t) == TYPE_CODE_UNION)
5380 {
5381 if (TYPE_LENGTH (t) < TYPE_LENGTH (field))
5382 TYPE_LENGTH (t) = TYPE_LENGTH (field);
5383 }
5384 else if (TYPE_CODE (t) == TYPE_CODE_STRUCT)
5385 {
5386 TYPE_LENGTH (t) = TYPE_LENGTH (t) + TYPE_LENGTH (field);
5387 if (TYPE_NFIELDS (t) > 1)
5388 {
f41f5e61
PA
5389 SET_FIELD_BITPOS (f[0],
5390 (FIELD_BITPOS (f[-1])
5391 + (TYPE_LENGTH (FIELD_TYPE (f[-1]))
5392 * TARGET_CHAR_BIT)));
e9bb382b
UW
5393
5394 if (alignment)
5395 {
86c3c1fc
AB
5396 int left;
5397
5398 alignment *= TARGET_CHAR_BIT;
5399 left = FIELD_BITPOS (f[0]) % alignment;
d8734c88 5400
e9bb382b
UW
5401 if (left)
5402 {
f41f5e61 5403 SET_FIELD_BITPOS (f[0], FIELD_BITPOS (f[0]) + (alignment - left));
86c3c1fc 5404 TYPE_LENGTH (t) += (alignment - left) / TARGET_CHAR_BIT;
e9bb382b
UW
5405 }
5406 }
5407 }
5408 }
5409}
5410
5411/* Add new field with name NAME and type FIELD to composite type T. */
5212577a 5412
e9bb382b 5413void
695bfa52 5414append_composite_type_field (struct type *t, const char *name,
e9bb382b
UW
5415 struct type *field)
5416{
5417 append_composite_type_field_aligned (t, name, field, 0);
5418}
5419
000177f0
AC
5420static struct gdbarch_data *gdbtypes_data;
5421
5422const struct builtin_type *
5423builtin_type (struct gdbarch *gdbarch)
5424{
9a3c8263 5425 return (const struct builtin_type *) gdbarch_data (gdbarch, gdbtypes_data);
000177f0
AC
5426}
5427
5428static void *
5429gdbtypes_post_init (struct gdbarch *gdbarch)
5430{
5431 struct builtin_type *builtin_type
5432 = GDBARCH_OBSTACK_ZALLOC (gdbarch, struct builtin_type);
5433
46bf5051 5434 /* Basic types. */
e9bb382b 5435 builtin_type->builtin_void
77b7c781 5436 = arch_type (gdbarch, TYPE_CODE_VOID, TARGET_CHAR_BIT, "void");
e9bb382b
UW
5437 builtin_type->builtin_char
5438 = arch_integer_type (gdbarch, TARGET_CHAR_BIT,
5439 !gdbarch_char_signed (gdbarch), "char");
c413c448 5440 TYPE_NOSIGN (builtin_type->builtin_char) = 1;
e9bb382b
UW
5441 builtin_type->builtin_signed_char
5442 = arch_integer_type (gdbarch, TARGET_CHAR_BIT,
5443 0, "signed char");
5444 builtin_type->builtin_unsigned_char
5445 = arch_integer_type (gdbarch, TARGET_CHAR_BIT,
5446 1, "unsigned char");
5447 builtin_type->builtin_short
5448 = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
5449 0, "short");
5450 builtin_type->builtin_unsigned_short
5451 = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
5452 1, "unsigned short");
5453 builtin_type->builtin_int
5454 = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
5455 0, "int");
5456 builtin_type->builtin_unsigned_int
5457 = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
5458 1, "unsigned int");
5459 builtin_type->builtin_long
5460 = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
5461 0, "long");
5462 builtin_type->builtin_unsigned_long
5463 = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
5464 1, "unsigned long");
5465 builtin_type->builtin_long_long
5466 = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
5467 0, "long long");
5468 builtin_type->builtin_unsigned_long_long
5469 = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
5470 1, "unsigned long long");
a6d0f249
AH
5471 builtin_type->builtin_half
5472 = arch_float_type (gdbarch, gdbarch_half_bit (gdbarch),
5473 "half", gdbarch_half_format (gdbarch));
70bd8e24 5474 builtin_type->builtin_float
e9bb382b 5475 = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch),
27067745 5476 "float", gdbarch_float_format (gdbarch));
70bd8e24 5477 builtin_type->builtin_double
e9bb382b 5478 = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
27067745 5479 "double", gdbarch_double_format (gdbarch));
70bd8e24 5480 builtin_type->builtin_long_double
e9bb382b 5481 = arch_float_type (gdbarch, gdbarch_long_double_bit (gdbarch),
27067745 5482 "long double", gdbarch_long_double_format (gdbarch));
70bd8e24 5483 builtin_type->builtin_complex
e9bb382b
UW
5484 = arch_complex_type (gdbarch, "complex",
5485 builtin_type->builtin_float);
70bd8e24 5486 builtin_type->builtin_double_complex
e9bb382b
UW
5487 = arch_complex_type (gdbarch, "double complex",
5488 builtin_type->builtin_double);
5489 builtin_type->builtin_string
77b7c781 5490 = arch_type (gdbarch, TYPE_CODE_STRING, TARGET_CHAR_BIT, "string");
e9bb382b 5491 builtin_type->builtin_bool
77b7c781 5492 = arch_type (gdbarch, TYPE_CODE_BOOL, TARGET_CHAR_BIT, "bool");
000177f0 5493
7678ef8f
TJB
5494 /* The following three are about decimal floating point types, which
5495 are 32-bits, 64-bits and 128-bits respectively. */
5496 builtin_type->builtin_decfloat
88dfca6c 5497 = arch_decfloat_type (gdbarch, 32, "_Decimal32");
7678ef8f 5498 builtin_type->builtin_decdouble
88dfca6c 5499 = arch_decfloat_type (gdbarch, 64, "_Decimal64");
7678ef8f 5500 builtin_type->builtin_declong
88dfca6c 5501 = arch_decfloat_type (gdbarch, 128, "_Decimal128");
7678ef8f 5502
69feb676 5503 /* "True" character types. */
e9bb382b
UW
5504 builtin_type->builtin_true_char
5505 = arch_character_type (gdbarch, TARGET_CHAR_BIT, 0, "true character");
5506 builtin_type->builtin_true_unsigned_char
5507 = arch_character_type (gdbarch, TARGET_CHAR_BIT, 1, "true character");
69feb676 5508
df4df182 5509 /* Fixed-size integer types. */
e9bb382b
UW
5510 builtin_type->builtin_int0
5511 = arch_integer_type (gdbarch, 0, 0, "int0_t");
5512 builtin_type->builtin_int8
5513 = arch_integer_type (gdbarch, 8, 0, "int8_t");
5514 builtin_type->builtin_uint8
5515 = arch_integer_type (gdbarch, 8, 1, "uint8_t");
5516 builtin_type->builtin_int16
5517 = arch_integer_type (gdbarch, 16, 0, "int16_t");
5518 builtin_type->builtin_uint16
5519 = arch_integer_type (gdbarch, 16, 1, "uint16_t");
d1908f2d
JD
5520 builtin_type->builtin_int24
5521 = arch_integer_type (gdbarch, 24, 0, "int24_t");
5522 builtin_type->builtin_uint24
5523 = arch_integer_type (gdbarch, 24, 1, "uint24_t");
e9bb382b
UW
5524 builtin_type->builtin_int32
5525 = arch_integer_type (gdbarch, 32, 0, "int32_t");
5526 builtin_type->builtin_uint32
5527 = arch_integer_type (gdbarch, 32, 1, "uint32_t");
5528 builtin_type->builtin_int64
5529 = arch_integer_type (gdbarch, 64, 0, "int64_t");
5530 builtin_type->builtin_uint64
5531 = arch_integer_type (gdbarch, 64, 1, "uint64_t");
5532 builtin_type->builtin_int128
5533 = arch_integer_type (gdbarch, 128, 0, "int128_t");
5534 builtin_type->builtin_uint128
5535 = arch_integer_type (gdbarch, 128, 1, "uint128_t");
2844d6b5
KW
5536 TYPE_INSTANCE_FLAGS (builtin_type->builtin_int8) |=
5537 TYPE_INSTANCE_FLAG_NOTTEXT;
5538 TYPE_INSTANCE_FLAGS (builtin_type->builtin_uint8) |=
5539 TYPE_INSTANCE_FLAG_NOTTEXT;
df4df182 5540
9a22f0d0
PM
5541 /* Wide character types. */
5542 builtin_type->builtin_char16
53e710ac 5543 = arch_integer_type (gdbarch, 16, 1, "char16_t");
9a22f0d0 5544 builtin_type->builtin_char32
53e710ac 5545 = arch_integer_type (gdbarch, 32, 1, "char32_t");
53375380
PA
5546 builtin_type->builtin_wchar
5547 = arch_integer_type (gdbarch, gdbarch_wchar_bit (gdbarch),
5548 !gdbarch_wchar_signed (gdbarch), "wchar_t");
9a22f0d0 5549
46bf5051 5550 /* Default data/code pointer types. */
e9bb382b
UW
5551 builtin_type->builtin_data_ptr
5552 = lookup_pointer_type (builtin_type->builtin_void);
5553 builtin_type->builtin_func_ptr
5554 = lookup_pointer_type (lookup_function_type (builtin_type->builtin_void));
0875794a
JK
5555 builtin_type->builtin_func_func
5556 = lookup_function_type (builtin_type->builtin_func_ptr);
46bf5051 5557
78267919 5558 /* This type represents a GDB internal function. */
e9bb382b
UW
5559 builtin_type->internal_fn
5560 = arch_type (gdbarch, TYPE_CODE_INTERNAL_FUNCTION, 0,
5561 "<internal function>");
78267919 5562
e81e7f5e
SC
5563 /* This type represents an xmethod. */
5564 builtin_type->xmethod
5565 = arch_type (gdbarch, TYPE_CODE_XMETHOD, 0, "<xmethod>");
5566
46bf5051
UW
5567 return builtin_type;
5568}
5569
46bf5051
UW
5570/* This set of objfile-based types is intended to be used by symbol
5571 readers as basic types. */
5572
7a102139
TT
5573static const struct objfile_key<struct objfile_type,
5574 gdb::noop_deleter<struct objfile_type>>
5575 objfile_type_data;
46bf5051
UW
5576
5577const struct objfile_type *
5578objfile_type (struct objfile *objfile)
5579{
5580 struct gdbarch *gdbarch;
7a102139 5581 struct objfile_type *objfile_type = objfile_type_data.get (objfile);
46bf5051
UW
5582
5583 if (objfile_type)
5584 return objfile_type;
5585
5586 objfile_type = OBSTACK_CALLOC (&objfile->objfile_obstack,
5587 1, struct objfile_type);
5588
5589 /* Use the objfile architecture to determine basic type properties. */
5590 gdbarch = get_objfile_arch (objfile);
5591
5592 /* Basic types. */
5593 objfile_type->builtin_void
77b7c781 5594 = init_type (objfile, TYPE_CODE_VOID, TARGET_CHAR_BIT, "void");
46bf5051 5595 objfile_type->builtin_char
19f392bc
UW
5596 = init_integer_type (objfile, TARGET_CHAR_BIT,
5597 !gdbarch_char_signed (gdbarch), "char");
c413c448 5598 TYPE_NOSIGN (objfile_type->builtin_char) = 1;
46bf5051 5599 objfile_type->builtin_signed_char
19f392bc
UW
5600 = init_integer_type (objfile, TARGET_CHAR_BIT,
5601 0, "signed char");
46bf5051 5602 objfile_type->builtin_unsigned_char
19f392bc
UW
5603 = init_integer_type (objfile, TARGET_CHAR_BIT,
5604 1, "unsigned char");
46bf5051 5605 objfile_type->builtin_short
19f392bc
UW
5606 = init_integer_type (objfile, gdbarch_short_bit (gdbarch),
5607 0, "short");
46bf5051 5608 objfile_type->builtin_unsigned_short
19f392bc
UW
5609 = init_integer_type (objfile, gdbarch_short_bit (gdbarch),
5610 1, "unsigned short");
46bf5051 5611 objfile_type->builtin_int
19f392bc
UW
5612 = init_integer_type (objfile, gdbarch_int_bit (gdbarch),
5613 0, "int");
46bf5051 5614 objfile_type->builtin_unsigned_int
19f392bc
UW
5615 = init_integer_type (objfile, gdbarch_int_bit (gdbarch),
5616 1, "unsigned int");
46bf5051 5617 objfile_type->builtin_long
19f392bc
UW
5618 = init_integer_type (objfile, gdbarch_long_bit (gdbarch),
5619 0, "long");
46bf5051 5620 objfile_type->builtin_unsigned_long
19f392bc
UW
5621 = init_integer_type (objfile, gdbarch_long_bit (gdbarch),
5622 1, "unsigned long");
46bf5051 5623 objfile_type->builtin_long_long
19f392bc
UW
5624 = init_integer_type (objfile, gdbarch_long_long_bit (gdbarch),
5625 0, "long long");
46bf5051 5626 objfile_type->builtin_unsigned_long_long
19f392bc
UW
5627 = init_integer_type (objfile, gdbarch_long_long_bit (gdbarch),
5628 1, "unsigned long long");
46bf5051 5629 objfile_type->builtin_float
19f392bc
UW
5630 = init_float_type (objfile, gdbarch_float_bit (gdbarch),
5631 "float", gdbarch_float_format (gdbarch));
46bf5051 5632 objfile_type->builtin_double
19f392bc
UW
5633 = init_float_type (objfile, gdbarch_double_bit (gdbarch),
5634 "double", gdbarch_double_format (gdbarch));
46bf5051 5635 objfile_type->builtin_long_double
19f392bc
UW
5636 = init_float_type (objfile, gdbarch_long_double_bit (gdbarch),
5637 "long double", gdbarch_long_double_format (gdbarch));
46bf5051
UW
5638
5639 /* This type represents a type that was unrecognized in symbol read-in. */
5640 objfile_type->builtin_error
19f392bc 5641 = init_type (objfile, TYPE_CODE_ERROR, 0, "<unknown type>");
46bf5051
UW
5642
5643 /* The following set of types is used for symbols with no
5644 debug information. */
5645 objfile_type->nodebug_text_symbol
77b7c781 5646 = init_type (objfile, TYPE_CODE_FUNC, TARGET_CHAR_BIT,
19f392bc 5647 "<text variable, no debug info>");
0875794a 5648 objfile_type->nodebug_text_gnu_ifunc_symbol
77b7c781 5649 = init_type (objfile, TYPE_CODE_FUNC, TARGET_CHAR_BIT,
19f392bc 5650 "<text gnu-indirect-function variable, no debug info>");
19f392bc 5651 TYPE_GNU_IFUNC (objfile_type->nodebug_text_gnu_ifunc_symbol) = 1;
0875794a 5652 objfile_type->nodebug_got_plt_symbol
19f392bc
UW
5653 = init_pointer_type (objfile, gdbarch_addr_bit (gdbarch),
5654 "<text from jump slot in .got.plt, no debug info>",
5655 objfile_type->nodebug_text_symbol);
46bf5051 5656 objfile_type->nodebug_data_symbol
46a4882b 5657 = init_nodebug_var_type (objfile, "<data variable, no debug info>");
46bf5051 5658 objfile_type->nodebug_unknown_symbol
46a4882b 5659 = init_nodebug_var_type (objfile, "<variable (not text or data), no debug info>");
46bf5051 5660 objfile_type->nodebug_tls_symbol
46a4882b 5661 = init_nodebug_var_type (objfile, "<thread local variable, no debug info>");
000177f0
AC
5662
5663 /* NOTE: on some targets, addresses and pointers are not necessarily
0a7cfe2c 5664 the same.
000177f0
AC
5665
5666 The upshot is:
5667 - gdb's `struct type' always describes the target's
5668 representation.
5669 - gdb's `struct value' objects should always hold values in
5670 target form.
5671 - gdb's CORE_ADDR values are addresses in the unified virtual
5672 address space that the assembler and linker work with. Thus,
5673 since target_read_memory takes a CORE_ADDR as an argument, it
5674 can access any memory on the target, even if the processor has
5675 separate code and data address spaces.
5676
46bf5051
UW
5677 In this context, objfile_type->builtin_core_addr is a bit odd:
5678 it's a target type for a value the target will never see. It's
5679 only used to hold the values of (typeless) linker symbols, which
5680 are indeed in the unified virtual address space. */
000177f0 5681
46bf5051 5682 objfile_type->builtin_core_addr
19f392bc
UW
5683 = init_integer_type (objfile, gdbarch_addr_bit (gdbarch), 1,
5684 "__CORE_ADDR");
64c50499 5685
7a102139 5686 objfile_type_data.set (objfile, objfile_type);
46bf5051 5687 return objfile_type;
000177f0
AC
5688}
5689
c906108c 5690void
fba45db2 5691_initialize_gdbtypes (void)
c906108c 5692{
5674de60
UW
5693 gdbtypes_data = gdbarch_data_register_post_init (gdbtypes_post_init);
5694
ccce17b0
YQ
5695 add_setshow_zuinteger_cmd ("overload", no_class, &overload_debug,
5696 _("Set debugging of C++ overloading."),
5697 _("Show debugging of C++ overloading."),
5698 _("When enabled, ranking of the "
5699 "functions is displayed."),
5700 NULL,
5701 show_overload_debug,
5702 &setdebuglist, &showdebuglist);
5674de60 5703
7ba81444 5704 /* Add user knob for controlling resolution of opaque types. */
5674de60 5705 add_setshow_boolean_cmd ("opaque-type-resolution", class_support,
3e43a32a
MS
5706 &opaque_type_resolution,
5707 _("Set resolution of opaque struct/class/union"
5708 " types (if set before loading symbols)."),
5709 _("Show resolution of opaque struct/class/union"
5710 " types (if set before loading symbols)."),
5711 NULL, NULL,
5674de60
UW
5712 show_opaque_type_resolution,
5713 &setlist, &showlist);
a451cb65
KS
5714
5715 /* Add an option to permit non-strict type checking. */
5716 add_setshow_boolean_cmd ("type", class_support,
5717 &strict_type_checking,
5718 _("Set strict type checking."),
5719 _("Show strict type checking."),
5720 NULL, NULL,
5721 show_strict_type_checking,
5722 &setchecklist, &showchecklist);
c906108c 5723}
This page took 1.960045 seconds and 4 git commands to generate.