daily update
[deliverable/binutils-gdb.git] / gdb / gdbtypes.c
CommitLineData
c906108c 1/* Support routines for manipulating internal types for GDB.
4f2aea11 2
0b302171 3 Copyright (C) 1992-1996, 1998-2012 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"
23#include "gdb_string.h"
24#include "bfd.h"
25#include "symtab.h"
26#include "symfile.h"
27#include "objfiles.h"
28#include "gdbtypes.h"
29#include "expression.h"
30#include "language.h"
31#include "target.h"
32#include "value.h"
33#include "demangle.h"
34#include "complaints.h"
35#include "gdbcmd.h"
015a42b4 36#include "cp-abi.h"
a02fd225 37#include "gdb_assert.h"
ae5a43e0 38#include "hashtab.h"
8e7b59a5 39#include "exceptions.h"
ac3aafc7 40
6403aeea
SW
41/* Initialize BADNESS constants. */
42
a9d5ef47 43const struct rank LENGTH_MISMATCH_BADNESS = {100,0};
6403aeea 44
a9d5ef47
SW
45const struct rank TOO_FEW_PARAMS_BADNESS = {100,0};
46const struct rank INCOMPATIBLE_TYPE_BADNESS = {100,0};
6403aeea 47
a9d5ef47 48const struct rank EXACT_MATCH_BADNESS = {0,0};
6403aeea 49
a9d5ef47
SW
50const struct rank INTEGER_PROMOTION_BADNESS = {1,0};
51const struct rank FLOAT_PROMOTION_BADNESS = {1,0};
52const struct rank BASE_PTR_CONVERSION_BADNESS = {1,0};
53const struct rank INTEGER_CONVERSION_BADNESS = {2,0};
54const struct rank FLOAT_CONVERSION_BADNESS = {2,0};
55const struct rank INT_FLOAT_CONVERSION_BADNESS = {2,0};
56const struct rank VOID_PTR_CONVERSION_BADNESS = {2,0};
5b4f6e25 57const struct rank BOOL_CONVERSION_BADNESS = {3,0};
a9d5ef47
SW
58const struct rank BASE_CONVERSION_BADNESS = {2,0};
59const struct rank REFERENCE_CONVERSION_BADNESS = {2,0};
da096638 60const struct rank NULL_POINTER_CONVERSION_BADNESS = {2,0};
a9d5ef47 61const struct rank NS_POINTER_CONVERSION_BADNESS = {10,0};
a451cb65 62const struct rank NS_INTEGER_POINTER_CONVERSION_BADNESS = {3,0};
6403aeea 63
8da61cc4 64/* Floatformat pairs. */
f9e9243a
UW
65const struct floatformat *floatformats_ieee_half[BFD_ENDIAN_UNKNOWN] = {
66 &floatformat_ieee_half_big,
67 &floatformat_ieee_half_little
68};
8da61cc4
DJ
69const struct floatformat *floatformats_ieee_single[BFD_ENDIAN_UNKNOWN] = {
70 &floatformat_ieee_single_big,
71 &floatformat_ieee_single_little
72};
73const struct floatformat *floatformats_ieee_double[BFD_ENDIAN_UNKNOWN] = {
74 &floatformat_ieee_double_big,
75 &floatformat_ieee_double_little
76};
77const struct floatformat *floatformats_ieee_double_littlebyte_bigword[BFD_ENDIAN_UNKNOWN] = {
78 &floatformat_ieee_double_big,
79 &floatformat_ieee_double_littlebyte_bigword
80};
81const struct floatformat *floatformats_i387_ext[BFD_ENDIAN_UNKNOWN] = {
82 &floatformat_i387_ext,
83 &floatformat_i387_ext
84};
85const struct floatformat *floatformats_m68881_ext[BFD_ENDIAN_UNKNOWN] = {
86 &floatformat_m68881_ext,
87 &floatformat_m68881_ext
88};
89const struct floatformat *floatformats_arm_ext[BFD_ENDIAN_UNKNOWN] = {
90 &floatformat_arm_ext_big,
91 &floatformat_arm_ext_littlebyte_bigword
92};
93const struct floatformat *floatformats_ia64_spill[BFD_ENDIAN_UNKNOWN] = {
94 &floatformat_ia64_spill_big,
95 &floatformat_ia64_spill_little
96};
97const struct floatformat *floatformats_ia64_quad[BFD_ENDIAN_UNKNOWN] = {
98 &floatformat_ia64_quad_big,
99 &floatformat_ia64_quad_little
100};
101const struct floatformat *floatformats_vax_f[BFD_ENDIAN_UNKNOWN] = {
102 &floatformat_vax_f,
103 &floatformat_vax_f
104};
105const struct floatformat *floatformats_vax_d[BFD_ENDIAN_UNKNOWN] = {
106 &floatformat_vax_d,
107 &floatformat_vax_d
108};
b14d30e1
JM
109const struct floatformat *floatformats_ibm_long_double[BFD_ENDIAN_UNKNOWN] = {
110 &floatformat_ibm_long_double,
111 &floatformat_ibm_long_double
112};
8da61cc4 113
2873700e
KS
114/* Should opaque types be resolved? */
115
116static int opaque_type_resolution = 1;
117
118/* A flag to enable printing of debugging information of C++
119 overloading. */
120
121unsigned int overload_debug = 0;
122
a451cb65
KS
123/* A flag to enable strict type checking. */
124
125static int strict_type_checking = 1;
126
2873700e 127/* A function to show whether opaque types are resolved. */
5212577a 128
920d2a44
AC
129static void
130show_opaque_type_resolution (struct ui_file *file, int from_tty,
7ba81444
MS
131 struct cmd_list_element *c,
132 const char *value)
920d2a44 133{
3e43a32a
MS
134 fprintf_filtered (file, _("Resolution of opaque struct/class/union types "
135 "(if set before loading symbols) is %s.\n"),
920d2a44
AC
136 value);
137}
138
2873700e 139/* A function to show whether C++ overload debugging is enabled. */
5212577a 140
920d2a44
AC
141static void
142show_overload_debug (struct ui_file *file, int from_tty,
143 struct cmd_list_element *c, const char *value)
144{
7ba81444
MS
145 fprintf_filtered (file, _("Debugging of C++ overloading is %s.\n"),
146 value);
920d2a44 147}
c906108c 148
a451cb65
KS
149/* A function to show the status of strict type checking. */
150
151static void
152show_strict_type_checking (struct ui_file *file, int from_tty,
153 struct cmd_list_element *c, const char *value)
154{
155 fprintf_filtered (file, _("Strict type checking is %s.\n"), value);
156}
157
5212577a 158\f
e9bb382b
UW
159/* Allocate a new OBJFILE-associated type structure and fill it
160 with some defaults. Space for the type structure is allocated
161 on the objfile's objfile_obstack. */
c906108c
SS
162
163struct type *
fba45db2 164alloc_type (struct objfile *objfile)
c906108c 165{
52f0bd74 166 struct type *type;
c906108c 167
e9bb382b
UW
168 gdb_assert (objfile != NULL);
169
7ba81444 170 /* Alloc the structure and start off with all fields zeroed. */
e9bb382b
UW
171 type = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct type);
172 TYPE_MAIN_TYPE (type) = OBSTACK_ZALLOC (&objfile->objfile_obstack,
173 struct main_type);
174 OBJSTAT (objfile, n_types++);
c906108c 175
e9bb382b
UW
176 TYPE_OBJFILE_OWNED (type) = 1;
177 TYPE_OWNER (type).objfile = objfile;
c906108c 178
7ba81444 179 /* Initialize the fields that might not be zero. */
c906108c
SS
180
181 TYPE_CODE (type) = TYPE_CODE_UNDEF;
c906108c 182 TYPE_VPTR_FIELDNO (type) = -1;
2fdde8f8 183 TYPE_CHAIN (type) = type; /* Chain back to itself. */
c906108c 184
c16abbde 185 return type;
c906108c
SS
186}
187
e9bb382b
UW
188/* Allocate a new GDBARCH-associated type structure and fill it
189 with some defaults. Space for the type structure is allocated
190 on the heap. */
191
192struct type *
193alloc_type_arch (struct gdbarch *gdbarch)
194{
195 struct type *type;
196
197 gdb_assert (gdbarch != NULL);
198
199 /* Alloc the structure and start off with all fields zeroed. */
200
201 type = XZALLOC (struct type);
202 TYPE_MAIN_TYPE (type) = XZALLOC (struct main_type);
203
204 TYPE_OBJFILE_OWNED (type) = 0;
205 TYPE_OWNER (type).gdbarch = gdbarch;
206
207 /* Initialize the fields that might not be zero. */
208
209 TYPE_CODE (type) = TYPE_CODE_UNDEF;
210 TYPE_VPTR_FIELDNO (type) = -1;
211 TYPE_CHAIN (type) = type; /* Chain back to itself. */
212
213 return type;
214}
215
216/* If TYPE is objfile-associated, allocate a new type structure
217 associated with the same objfile. If TYPE is gdbarch-associated,
218 allocate a new type structure associated with the same gdbarch. */
219
220struct type *
221alloc_type_copy (const struct type *type)
222{
223 if (TYPE_OBJFILE_OWNED (type))
224 return alloc_type (TYPE_OWNER (type).objfile);
225 else
226 return alloc_type_arch (TYPE_OWNER (type).gdbarch);
227}
228
229/* If TYPE is gdbarch-associated, return that architecture.
230 If TYPE is objfile-associated, return that objfile's architecture. */
231
232struct gdbarch *
233get_type_arch (const struct type *type)
234{
235 if (TYPE_OBJFILE_OWNED (type))
236 return get_objfile_arch (TYPE_OWNER (type).objfile);
237 else
238 return TYPE_OWNER (type).gdbarch;
239}
240
2fdde8f8
DJ
241/* Alloc a new type instance structure, fill it with some defaults,
242 and point it at OLDTYPE. Allocate the new type instance from the
243 same place as OLDTYPE. */
244
245static struct type *
246alloc_type_instance (struct type *oldtype)
247{
248 struct type *type;
249
250 /* Allocate the structure. */
251
e9bb382b 252 if (! TYPE_OBJFILE_OWNED (oldtype))
1deafd4e 253 type = XZALLOC (struct type);
2fdde8f8 254 else
1deafd4e
PA
255 type = OBSTACK_ZALLOC (&TYPE_OBJFILE (oldtype)->objfile_obstack,
256 struct type);
257
2fdde8f8
DJ
258 TYPE_MAIN_TYPE (type) = TYPE_MAIN_TYPE (oldtype);
259
260 TYPE_CHAIN (type) = type; /* Chain back to itself for now. */
261
c16abbde 262 return type;
2fdde8f8
DJ
263}
264
265/* Clear all remnants of the previous type at TYPE, in preparation for
e9bb382b 266 replacing it with something else. Preserve owner information. */
5212577a 267
2fdde8f8
DJ
268static void
269smash_type (struct type *type)
270{
e9bb382b
UW
271 int objfile_owned = TYPE_OBJFILE_OWNED (type);
272 union type_owner owner = TYPE_OWNER (type);
273
2fdde8f8
DJ
274 memset (TYPE_MAIN_TYPE (type), 0, sizeof (struct main_type));
275
e9bb382b
UW
276 /* Restore owner information. */
277 TYPE_OBJFILE_OWNED (type) = objfile_owned;
278 TYPE_OWNER (type) = owner;
279
2fdde8f8
DJ
280 /* For now, delete the rings. */
281 TYPE_CHAIN (type) = type;
282
283 /* For now, leave the pointer/reference types alone. */
284}
285
c906108c
SS
286/* Lookup a pointer to a type TYPE. TYPEPTR, if nonzero, points
287 to a pointer to memory where the pointer type should be stored.
288 If *TYPEPTR is zero, update it to point to the pointer type we return.
289 We allocate new memory if needed. */
290
291struct type *
fba45db2 292make_pointer_type (struct type *type, struct type **typeptr)
c906108c 293{
52f0bd74 294 struct type *ntype; /* New type */
053cb41b 295 struct type *chain;
c906108c
SS
296
297 ntype = TYPE_POINTER_TYPE (type);
298
c5aa993b 299 if (ntype)
c906108c 300 {
c5aa993b 301 if (typeptr == 0)
7ba81444
MS
302 return ntype; /* Don't care about alloc,
303 and have new type. */
c906108c 304 else if (*typeptr == 0)
c5aa993b 305 {
7ba81444 306 *typeptr = ntype; /* Tracking alloc, and have new type. */
c906108c 307 return ntype;
c5aa993b 308 }
c906108c
SS
309 }
310
311 if (typeptr == 0 || *typeptr == 0) /* We'll need to allocate one. */
312 {
e9bb382b 313 ntype = alloc_type_copy (type);
c906108c
SS
314 if (typeptr)
315 *typeptr = ntype;
316 }
7ba81444 317 else /* We have storage, but need to reset it. */
c906108c
SS
318 {
319 ntype = *typeptr;
053cb41b 320 chain = TYPE_CHAIN (ntype);
2fdde8f8 321 smash_type (ntype);
053cb41b 322 TYPE_CHAIN (ntype) = chain;
c906108c
SS
323 }
324
325 TYPE_TARGET_TYPE (ntype) = type;
326 TYPE_POINTER_TYPE (type) = ntype;
327
5212577a 328 /* FIXME! Assumes the machine has only one representation for pointers! */
c906108c 329
50810684
UW
330 TYPE_LENGTH (ntype)
331 = gdbarch_ptr_bit (get_type_arch (type)) / TARGET_CHAR_BIT;
c906108c
SS
332 TYPE_CODE (ntype) = TYPE_CODE_PTR;
333
67b2adb2 334 /* Mark pointers as unsigned. The target converts between pointers
76e71323 335 and addresses (CORE_ADDRs) using gdbarch_pointer_to_address and
7ba81444 336 gdbarch_address_to_pointer. */
876cecd0 337 TYPE_UNSIGNED (ntype) = 1;
c5aa993b 338
053cb41b
JB
339 /* Update the length of all the other variants of this type. */
340 chain = TYPE_CHAIN (ntype);
341 while (chain != ntype)
342 {
343 TYPE_LENGTH (chain) = TYPE_LENGTH (ntype);
344 chain = TYPE_CHAIN (chain);
345 }
346
c906108c
SS
347 return ntype;
348}
349
350/* Given a type TYPE, return a type of pointers to that type.
351 May need to construct such a type if this is the first use. */
352
353struct type *
fba45db2 354lookup_pointer_type (struct type *type)
c906108c 355{
c5aa993b 356 return make_pointer_type (type, (struct type **) 0);
c906108c
SS
357}
358
7ba81444
MS
359/* Lookup a C++ `reference' to a type TYPE. TYPEPTR, if nonzero,
360 points to a pointer to memory where the reference type should be
361 stored. If *TYPEPTR is zero, update it to point to the reference
362 type we return. We allocate new memory if needed. */
c906108c
SS
363
364struct type *
fba45db2 365make_reference_type (struct type *type, struct type **typeptr)
c906108c 366{
52f0bd74 367 struct type *ntype; /* New type */
1e98b326 368 struct type *chain;
c906108c
SS
369
370 ntype = TYPE_REFERENCE_TYPE (type);
371
c5aa993b 372 if (ntype)
c906108c 373 {
c5aa993b 374 if (typeptr == 0)
7ba81444
MS
375 return ntype; /* Don't care about alloc,
376 and have new type. */
c906108c 377 else if (*typeptr == 0)
c5aa993b 378 {
7ba81444 379 *typeptr = ntype; /* Tracking alloc, and have new type. */
c906108c 380 return ntype;
c5aa993b 381 }
c906108c
SS
382 }
383
384 if (typeptr == 0 || *typeptr == 0) /* We'll need to allocate one. */
385 {
e9bb382b 386 ntype = alloc_type_copy (type);
c906108c
SS
387 if (typeptr)
388 *typeptr = ntype;
389 }
7ba81444 390 else /* We have storage, but need to reset it. */
c906108c
SS
391 {
392 ntype = *typeptr;
1e98b326 393 chain = TYPE_CHAIN (ntype);
2fdde8f8 394 smash_type (ntype);
1e98b326 395 TYPE_CHAIN (ntype) = chain;
c906108c
SS
396 }
397
398 TYPE_TARGET_TYPE (ntype) = type;
399 TYPE_REFERENCE_TYPE (type) = ntype;
400
7ba81444
MS
401 /* FIXME! Assume the machine has only one representation for
402 references, and that it matches the (only) representation for
403 pointers! */
c906108c 404
50810684
UW
405 TYPE_LENGTH (ntype) =
406 gdbarch_ptr_bit (get_type_arch (type)) / TARGET_CHAR_BIT;
c906108c 407 TYPE_CODE (ntype) = TYPE_CODE_REF;
c5aa993b 408
c906108c
SS
409 if (!TYPE_REFERENCE_TYPE (type)) /* Remember it, if don't have one. */
410 TYPE_REFERENCE_TYPE (type) = ntype;
411
1e98b326
JB
412 /* Update the length of all the other variants of this type. */
413 chain = TYPE_CHAIN (ntype);
414 while (chain != ntype)
415 {
416 TYPE_LENGTH (chain) = TYPE_LENGTH (ntype);
417 chain = TYPE_CHAIN (chain);
418 }
419
c906108c
SS
420 return ntype;
421}
422
7ba81444
MS
423/* Same as above, but caller doesn't care about memory allocation
424 details. */
c906108c
SS
425
426struct type *
fba45db2 427lookup_reference_type (struct type *type)
c906108c 428{
c5aa993b 429 return make_reference_type (type, (struct type **) 0);
c906108c
SS
430}
431
7ba81444
MS
432/* Lookup a function type that returns type TYPE. TYPEPTR, if
433 nonzero, points to a pointer to memory where the function type
434 should be stored. If *TYPEPTR is zero, update it to point to the
0c8b41f1 435 function type we return. We allocate new memory if needed. */
c906108c
SS
436
437struct type *
0c8b41f1 438make_function_type (struct type *type, struct type **typeptr)
c906108c 439{
52f0bd74 440 struct type *ntype; /* New type */
c906108c
SS
441
442 if (typeptr == 0 || *typeptr == 0) /* We'll need to allocate one. */
443 {
e9bb382b 444 ntype = alloc_type_copy (type);
c906108c
SS
445 if (typeptr)
446 *typeptr = ntype;
447 }
7ba81444 448 else /* We have storage, but need to reset it. */
c906108c
SS
449 {
450 ntype = *typeptr;
2fdde8f8 451 smash_type (ntype);
c906108c
SS
452 }
453
454 TYPE_TARGET_TYPE (ntype) = type;
455
456 TYPE_LENGTH (ntype) = 1;
457 TYPE_CODE (ntype) = TYPE_CODE_FUNC;
c5aa993b 458
b6cdc2c1
JK
459 INIT_FUNC_SPECIFIC (ntype);
460
c906108c
SS
461 return ntype;
462}
463
c906108c
SS
464/* Given a type TYPE, return a type of functions that return that type.
465 May need to construct such a type if this is the first use. */
466
467struct type *
fba45db2 468lookup_function_type (struct type *type)
c906108c 469{
0c8b41f1 470 return make_function_type (type, (struct type **) 0);
c906108c
SS
471}
472
71918a86 473/* Given a type TYPE and argument types, return the appropriate
a6fb9c08
TT
474 function type. If the final type in PARAM_TYPES is NULL, make a
475 varargs function. */
71918a86
TT
476
477struct type *
478lookup_function_type_with_arguments (struct type *type,
479 int nparams,
480 struct type **param_types)
481{
482 struct type *fn = make_function_type (type, (struct type **) 0);
483 int i;
484
e314d629 485 if (nparams > 0)
a6fb9c08 486 {
e314d629
TT
487 if (param_types[nparams - 1] == NULL)
488 {
489 --nparams;
490 TYPE_VARARGS (fn) = 1;
491 }
492 else if (TYPE_CODE (check_typedef (param_types[nparams - 1]))
493 == TYPE_CODE_VOID)
494 {
495 --nparams;
496 /* Caller should have ensured this. */
497 gdb_assert (nparams == 0);
498 TYPE_PROTOTYPED (fn) = 1;
499 }
a6fb9c08
TT
500 }
501
71918a86
TT
502 TYPE_NFIELDS (fn) = nparams;
503 TYPE_FIELDS (fn) = TYPE_ZALLOC (fn, nparams * sizeof (struct field));
504 for (i = 0; i < nparams; ++i)
505 TYPE_FIELD_TYPE (fn, i) = param_types[i];
506
507 return fn;
508}
509
47663de5
MS
510/* Identify address space identifier by name --
511 return the integer flag defined in gdbtypes.h. */
5212577a
DE
512
513int
50810684 514address_space_name_to_int (struct gdbarch *gdbarch, char *space_identifier)
47663de5 515{
8b2dbe47 516 int type_flags;
d8734c88 517
7ba81444 518 /* Check for known address space delimiters. */
47663de5 519 if (!strcmp (space_identifier, "code"))
876cecd0 520 return TYPE_INSTANCE_FLAG_CODE_SPACE;
47663de5 521 else if (!strcmp (space_identifier, "data"))
876cecd0 522 return TYPE_INSTANCE_FLAG_DATA_SPACE;
5f11f355
AC
523 else if (gdbarch_address_class_name_to_type_flags_p (gdbarch)
524 && gdbarch_address_class_name_to_type_flags (gdbarch,
525 space_identifier,
526 &type_flags))
8b2dbe47 527 return type_flags;
47663de5 528 else
8a3fe4f8 529 error (_("Unknown address space specifier: \"%s\""), space_identifier);
47663de5
MS
530}
531
532/* Identify address space identifier by integer flag as defined in
7ba81444 533 gdbtypes.h -- return the string version of the adress space name. */
47663de5 534
321432c0 535const char *
50810684 536address_space_int_to_name (struct gdbarch *gdbarch, int space_flag)
47663de5 537{
876cecd0 538 if (space_flag & TYPE_INSTANCE_FLAG_CODE_SPACE)
47663de5 539 return "code";
876cecd0 540 else if (space_flag & TYPE_INSTANCE_FLAG_DATA_SPACE)
47663de5 541 return "data";
876cecd0 542 else if ((space_flag & TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
5f11f355
AC
543 && gdbarch_address_class_type_flags_to_name_p (gdbarch))
544 return gdbarch_address_class_type_flags_to_name (gdbarch, space_flag);
47663de5
MS
545 else
546 return NULL;
547}
548
2fdde8f8 549/* Create a new type with instance flags NEW_FLAGS, based on TYPE.
ad766c0a
JB
550
551 If STORAGE is non-NULL, create the new type instance there.
552 STORAGE must be in the same obstack as TYPE. */
47663de5 553
b9362cc7 554static struct type *
2fdde8f8
DJ
555make_qualified_type (struct type *type, int new_flags,
556 struct type *storage)
47663de5
MS
557{
558 struct type *ntype;
559
560 ntype = type;
5f61c20e
JK
561 do
562 {
563 if (TYPE_INSTANCE_FLAGS (ntype) == new_flags)
564 return ntype;
565 ntype = TYPE_CHAIN (ntype);
566 }
567 while (ntype != type);
47663de5 568
2fdde8f8
DJ
569 /* Create a new type instance. */
570 if (storage == NULL)
571 ntype = alloc_type_instance (type);
572 else
573 {
7ba81444
MS
574 /* If STORAGE was provided, it had better be in the same objfile
575 as TYPE. Otherwise, we can't link it into TYPE's cv chain:
576 if one objfile is freed and the other kept, we'd have
577 dangling pointers. */
ad766c0a
JB
578 gdb_assert (TYPE_OBJFILE (type) == TYPE_OBJFILE (storage));
579
2fdde8f8
DJ
580 ntype = storage;
581 TYPE_MAIN_TYPE (ntype) = TYPE_MAIN_TYPE (type);
582 TYPE_CHAIN (ntype) = ntype;
583 }
47663de5
MS
584
585 /* Pointers or references to the original type are not relevant to
2fdde8f8 586 the new type. */
47663de5
MS
587 TYPE_POINTER_TYPE (ntype) = (struct type *) 0;
588 TYPE_REFERENCE_TYPE (ntype) = (struct type *) 0;
47663de5 589
2fdde8f8
DJ
590 /* Chain the new qualified type to the old type. */
591 TYPE_CHAIN (ntype) = TYPE_CHAIN (type);
592 TYPE_CHAIN (type) = ntype;
593
594 /* Now set the instance flags and return the new type. */
595 TYPE_INSTANCE_FLAGS (ntype) = new_flags;
47663de5 596
ab5d3da6
KB
597 /* Set length of new type to that of the original type. */
598 TYPE_LENGTH (ntype) = TYPE_LENGTH (type);
599
47663de5
MS
600 return ntype;
601}
602
2fdde8f8
DJ
603/* Make an address-space-delimited variant of a type -- a type that
604 is identical to the one supplied except that it has an address
605 space attribute attached to it (such as "code" or "data").
606
7ba81444
MS
607 The space attributes "code" and "data" are for Harvard
608 architectures. The address space attributes are for architectures
609 which have alternately sized pointers or pointers with alternate
610 representations. */
2fdde8f8
DJ
611
612struct type *
613make_type_with_address_space (struct type *type, int space_flag)
614{
2fdde8f8 615 int new_flags = ((TYPE_INSTANCE_FLAGS (type)
876cecd0
TT
616 & ~(TYPE_INSTANCE_FLAG_CODE_SPACE
617 | TYPE_INSTANCE_FLAG_DATA_SPACE
618 | TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL))
2fdde8f8
DJ
619 | space_flag);
620
621 return make_qualified_type (type, new_flags, NULL);
622}
c906108c
SS
623
624/* Make a "c-v" variant of a type -- a type that is identical to the
625 one supplied except that it may have const or volatile attributes
626 CNST is a flag for setting the const attribute
627 VOLTL is a flag for setting the volatile attribute
628 TYPE is the base type whose variant we are creating.
c906108c 629
ad766c0a
JB
630 If TYPEPTR and *TYPEPTR are non-zero, then *TYPEPTR points to
631 storage to hold the new qualified type; *TYPEPTR and TYPE must be
632 in the same objfile. Otherwise, allocate fresh memory for the new
633 type whereever TYPE lives. If TYPEPTR is non-zero, set it to the
634 new type we construct. */
5212577a 635
c906108c 636struct type *
7ba81444
MS
637make_cv_type (int cnst, int voltl,
638 struct type *type,
639 struct type **typeptr)
c906108c 640{
52f0bd74 641 struct type *ntype; /* New type */
c906108c 642
2fdde8f8 643 int new_flags = (TYPE_INSTANCE_FLAGS (type)
308d96ed
MS
644 & ~(TYPE_INSTANCE_FLAG_CONST
645 | TYPE_INSTANCE_FLAG_VOLATILE));
c906108c 646
c906108c 647 if (cnst)
876cecd0 648 new_flags |= TYPE_INSTANCE_FLAG_CONST;
c906108c
SS
649
650 if (voltl)
876cecd0 651 new_flags |= TYPE_INSTANCE_FLAG_VOLATILE;
a02fd225 652
2fdde8f8 653 if (typeptr && *typeptr != NULL)
a02fd225 654 {
ad766c0a
JB
655 /* TYPE and *TYPEPTR must be in the same objfile. We can't have
656 a C-V variant chain that threads across objfiles: if one
657 objfile gets freed, then the other has a broken C-V chain.
658
659 This code used to try to copy over the main type from TYPE to
660 *TYPEPTR if they were in different objfiles, but that's
661 wrong, too: TYPE may have a field list or member function
662 lists, which refer to types of their own, etc. etc. The
663 whole shebang would need to be copied over recursively; you
664 can't have inter-objfile pointers. The only thing to do is
665 to leave stub types as stub types, and look them up afresh by
666 name each time you encounter them. */
667 gdb_assert (TYPE_OBJFILE (*typeptr) == TYPE_OBJFILE (type));
2fdde8f8
DJ
668 }
669
7ba81444
MS
670 ntype = make_qualified_type (type, new_flags,
671 typeptr ? *typeptr : NULL);
c906108c 672
2fdde8f8
DJ
673 if (typeptr != NULL)
674 *typeptr = ntype;
a02fd225 675
2fdde8f8 676 return ntype;
a02fd225 677}
c906108c 678
2fdde8f8
DJ
679/* Replace the contents of ntype with the type *type. This changes the
680 contents, rather than the pointer for TYPE_MAIN_TYPE (ntype); thus
681 the changes are propogated to all types in the TYPE_CHAIN.
dd6bda65 682
cda6c68a
JB
683 In order to build recursive types, it's inevitable that we'll need
684 to update types in place --- but this sort of indiscriminate
685 smashing is ugly, and needs to be replaced with something more
2fdde8f8
DJ
686 controlled. TYPE_MAIN_TYPE is a step in this direction; it's not
687 clear if more steps are needed. */
5212577a 688
dd6bda65
DJ
689void
690replace_type (struct type *ntype, struct type *type)
691{
ab5d3da6 692 struct type *chain;
dd6bda65 693
ad766c0a
JB
694 /* These two types had better be in the same objfile. Otherwise,
695 the assignment of one type's main type structure to the other
696 will produce a type with references to objects (names; field
697 lists; etc.) allocated on an objfile other than its own. */
698 gdb_assert (TYPE_OBJFILE (ntype) == TYPE_OBJFILE (ntype));
699
2fdde8f8 700 *TYPE_MAIN_TYPE (ntype) = *TYPE_MAIN_TYPE (type);
dd6bda65 701
7ba81444
MS
702 /* The type length is not a part of the main type. Update it for
703 each type on the variant chain. */
ab5d3da6 704 chain = ntype;
5f61c20e
JK
705 do
706 {
707 /* Assert that this element of the chain has no address-class bits
708 set in its flags. Such type variants might have type lengths
709 which are supposed to be different from the non-address-class
710 variants. This assertion shouldn't ever be triggered because
711 symbol readers which do construct address-class variants don't
712 call replace_type(). */
713 gdb_assert (TYPE_ADDRESS_CLASS_ALL (chain) == 0);
714
715 TYPE_LENGTH (chain) = TYPE_LENGTH (type);
716 chain = TYPE_CHAIN (chain);
717 }
718 while (ntype != chain);
ab5d3da6 719
2fdde8f8
DJ
720 /* Assert that the two types have equivalent instance qualifiers.
721 This should be true for at least all of our debug readers. */
722 gdb_assert (TYPE_INSTANCE_FLAGS (ntype) == TYPE_INSTANCE_FLAGS (type));
dd6bda65
DJ
723}
724
c906108c
SS
725/* Implement direct support for MEMBER_TYPE in GNU C++.
726 May need to construct such a type if this is the first use.
727 The TYPE is the type of the member. The DOMAIN is the type
728 of the aggregate that the member belongs to. */
729
730struct type *
0d5de010 731lookup_memberptr_type (struct type *type, struct type *domain)
c906108c 732{
52f0bd74 733 struct type *mtype;
c906108c 734
e9bb382b 735 mtype = alloc_type_copy (type);
0d5de010 736 smash_to_memberptr_type (mtype, domain, type);
c16abbde 737 return mtype;
c906108c
SS
738}
739
0d5de010
DJ
740/* Return a pointer-to-method type, for a method of type TO_TYPE. */
741
742struct type *
743lookup_methodptr_type (struct type *to_type)
744{
745 struct type *mtype;
746
e9bb382b 747 mtype = alloc_type_copy (to_type);
0b92b5bb 748 smash_to_methodptr_type (mtype, to_type);
0d5de010
DJ
749 return mtype;
750}
751
7ba81444
MS
752/* Allocate a stub method whose return type is TYPE. This apparently
753 happens for speed of symbol reading, since parsing out the
754 arguments to the method is cpu-intensive, the way we are doing it.
755 So, we will fill in arguments later. This always returns a fresh
756 type. */
c906108c
SS
757
758struct type *
fba45db2 759allocate_stub_method (struct type *type)
c906108c
SS
760{
761 struct type *mtype;
762
e9bb382b
UW
763 mtype = alloc_type_copy (type);
764 TYPE_CODE (mtype) = TYPE_CODE_METHOD;
765 TYPE_LENGTH (mtype) = 1;
766 TYPE_STUB (mtype) = 1;
c906108c
SS
767 TYPE_TARGET_TYPE (mtype) = type;
768 /* _DOMAIN_TYPE (mtype) = unknown yet */
c16abbde 769 return mtype;
c906108c
SS
770}
771
7ba81444
MS
772/* Create a range type using either a blank type supplied in
773 RESULT_TYPE, or creating a new type, inheriting the objfile from
774 INDEX_TYPE.
c906108c 775
7ba81444
MS
776 Indices will be of type INDEX_TYPE, and will range from LOW_BOUND
777 to HIGH_BOUND, inclusive.
c906108c 778
7ba81444
MS
779 FIXME: Maybe we should check the TYPE_CODE of RESULT_TYPE to make
780 sure it is TYPE_CODE_UNDEF before we bash it into a range type? */
c906108c
SS
781
782struct type *
fba45db2 783create_range_type (struct type *result_type, struct type *index_type,
43bbcdc2 784 LONGEST low_bound, LONGEST high_bound)
c906108c
SS
785{
786 if (result_type == NULL)
e9bb382b 787 result_type = alloc_type_copy (index_type);
c906108c
SS
788 TYPE_CODE (result_type) = TYPE_CODE_RANGE;
789 TYPE_TARGET_TYPE (result_type) = index_type;
74a9bb82 790 if (TYPE_STUB (index_type))
876cecd0 791 TYPE_TARGET_STUB (result_type) = 1;
c906108c
SS
792 else
793 TYPE_LENGTH (result_type) = TYPE_LENGTH (check_typedef (index_type));
43bbcdc2
PH
794 TYPE_RANGE_DATA (result_type) = (struct range_bounds *)
795 TYPE_ZALLOC (result_type, sizeof (struct range_bounds));
262452ec
JK
796 TYPE_LOW_BOUND (result_type) = low_bound;
797 TYPE_HIGH_BOUND (result_type) = high_bound;
c906108c 798
c5aa993b 799 if (low_bound >= 0)
876cecd0 800 TYPE_UNSIGNED (result_type) = 1;
c906108c 801
262452ec 802 return result_type;
c906108c
SS
803}
804
7ba81444
MS
805/* Set *LOWP and *HIGHP to the lower and upper bounds of discrete type
806 TYPE. Return 1 if type is a range type, 0 if it is discrete (and
807 bounds will fit in LONGEST), or -1 otherwise. */
c906108c
SS
808
809int
fba45db2 810get_discrete_bounds (struct type *type, LONGEST *lowp, LONGEST *highp)
c906108c
SS
811{
812 CHECK_TYPEDEF (type);
813 switch (TYPE_CODE (type))
814 {
815 case TYPE_CODE_RANGE:
816 *lowp = TYPE_LOW_BOUND (type);
817 *highp = TYPE_HIGH_BOUND (type);
818 return 1;
819 case TYPE_CODE_ENUM:
820 if (TYPE_NFIELDS (type) > 0)
821 {
822 /* The enums may not be sorted by value, so search all
0963b4bd 823 entries. */
c906108c
SS
824 int i;
825
14e75d8e 826 *lowp = *highp = TYPE_FIELD_ENUMVAL (type, 0);
c906108c
SS
827 for (i = 0; i < TYPE_NFIELDS (type); i++)
828 {
14e75d8e
JK
829 if (TYPE_FIELD_ENUMVAL (type, i) < *lowp)
830 *lowp = TYPE_FIELD_ENUMVAL (type, i);
831 if (TYPE_FIELD_ENUMVAL (type, i) > *highp)
832 *highp = TYPE_FIELD_ENUMVAL (type, i);
c906108c
SS
833 }
834
7ba81444 835 /* Set unsigned indicator if warranted. */
c5aa993b 836 if (*lowp >= 0)
c906108c 837 {
876cecd0 838 TYPE_UNSIGNED (type) = 1;
c906108c
SS
839 }
840 }
841 else
842 {
843 *lowp = 0;
844 *highp = -1;
845 }
846 return 0;
847 case TYPE_CODE_BOOL:
848 *lowp = 0;
849 *highp = 1;
850 return 0;
851 case TYPE_CODE_INT:
c5aa993b 852 if (TYPE_LENGTH (type) > sizeof (LONGEST)) /* Too big */
c906108c
SS
853 return -1;
854 if (!TYPE_UNSIGNED (type))
855 {
c5aa993b 856 *lowp = -(1 << (TYPE_LENGTH (type) * TARGET_CHAR_BIT - 1));
c906108c
SS
857 *highp = -*lowp - 1;
858 return 0;
859 }
7ba81444 860 /* ... fall through for unsigned ints ... */
c906108c
SS
861 case TYPE_CODE_CHAR:
862 *lowp = 0;
863 /* This round-about calculation is to avoid shifting by
7b83ea04 864 TYPE_LENGTH (type) * TARGET_CHAR_BIT, which will not work
7ba81444 865 if TYPE_LENGTH (type) == sizeof (LONGEST). */
c906108c
SS
866 *highp = 1 << (TYPE_LENGTH (type) * TARGET_CHAR_BIT - 1);
867 *highp = (*highp - 1) | *highp;
868 return 0;
869 default:
870 return -1;
871 }
872}
873
dbc98a8b
KW
874/* Assuming TYPE is a simple, non-empty array type, compute its upper
875 and lower bound. Save the low bound into LOW_BOUND if not NULL.
876 Save the high bound into HIGH_BOUND if not NULL.
877
0963b4bd 878 Return 1 if the operation was successful. Return zero otherwise,
dbc98a8b
KW
879 in which case the values of LOW_BOUND and HIGH_BOUNDS are unmodified.
880
881 We now simply use get_discrete_bounds call to get the values
882 of the low and high bounds.
883 get_discrete_bounds can return three values:
884 1, meaning that index is a range,
885 0, meaning that index is a discrete type,
886 or -1 for failure. */
887
888int
889get_array_bounds (struct type *type, LONGEST *low_bound, LONGEST *high_bound)
890{
891 struct type *index = TYPE_INDEX_TYPE (type);
892 LONGEST low = 0;
893 LONGEST high = 0;
894 int res;
895
896 if (index == NULL)
897 return 0;
898
899 res = get_discrete_bounds (index, &low, &high);
900 if (res == -1)
901 return 0;
902
903 /* Check if the array bounds are undefined. */
904 if (res == 1
905 && ((low_bound && TYPE_ARRAY_LOWER_BOUND_IS_UNDEFINED (type))
906 || (high_bound && TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type))))
907 return 0;
908
909 if (low_bound)
910 *low_bound = low;
911
912 if (high_bound)
913 *high_bound = high;
914
915 return 1;
916}
917
7ba81444
MS
918/* Create an array type using either a blank type supplied in
919 RESULT_TYPE, or creating a new type, inheriting the objfile from
920 RANGE_TYPE.
c906108c
SS
921
922 Elements will be of type ELEMENT_TYPE, the indices will be of type
923 RANGE_TYPE.
924
7ba81444
MS
925 FIXME: Maybe we should check the TYPE_CODE of RESULT_TYPE to make
926 sure it is TYPE_CODE_UNDEF before we bash it into an array
927 type? */
c906108c
SS
928
929struct type *
7ba81444
MS
930create_array_type (struct type *result_type,
931 struct type *element_type,
fba45db2 932 struct type *range_type)
c906108c
SS
933{
934 LONGEST low_bound, high_bound;
935
936 if (result_type == NULL)
e9bb382b
UW
937 result_type = alloc_type_copy (range_type);
938
c906108c
SS
939 TYPE_CODE (result_type) = TYPE_CODE_ARRAY;
940 TYPE_TARGET_TYPE (result_type) = element_type;
941 if (get_discrete_bounds (range_type, &low_bound, &high_bound) < 0)
942 low_bound = high_bound = 0;
943 CHECK_TYPEDEF (element_type);
ab0d6e0d
JB
944 /* Be careful when setting the array length. Ada arrays can be
945 empty arrays with the high_bound being smaller than the low_bound.
946 In such cases, the array length should be zero. */
947 if (high_bound < low_bound)
948 TYPE_LENGTH (result_type) = 0;
949 else
950 TYPE_LENGTH (result_type) =
951 TYPE_LENGTH (element_type) * (high_bound - low_bound + 1);
c906108c
SS
952 TYPE_NFIELDS (result_type) = 1;
953 TYPE_FIELDS (result_type) =
1deafd4e 954 (struct field *) TYPE_ZALLOC (result_type, sizeof (struct field));
262452ec 955 TYPE_INDEX_TYPE (result_type) = range_type;
c906108c
SS
956 TYPE_VPTR_FIELDNO (result_type) = -1;
957
0963b4bd 958 /* TYPE_FLAG_TARGET_STUB will take care of zero length arrays. */
c906108c 959 if (TYPE_LENGTH (result_type) == 0)
876cecd0 960 TYPE_TARGET_STUB (result_type) = 1;
c906108c 961
c16abbde 962 return result_type;
c906108c
SS
963}
964
e3506a9f
UW
965struct type *
966lookup_array_range_type (struct type *element_type,
967 int low_bound, int high_bound)
968{
50810684 969 struct gdbarch *gdbarch = get_type_arch (element_type);
e3506a9f
UW
970 struct type *index_type = builtin_type (gdbarch)->builtin_int;
971 struct type *range_type
972 = create_range_type (NULL, index_type, low_bound, high_bound);
d8734c88 973
e3506a9f
UW
974 return create_array_type (NULL, element_type, range_type);
975}
976
7ba81444
MS
977/* Create a string type using either a blank type supplied in
978 RESULT_TYPE, or creating a new type. String types are similar
979 enough to array of char types that we can use create_array_type to
980 build the basic type and then bash it into a string type.
c906108c
SS
981
982 For fixed length strings, the range type contains 0 as the lower
983 bound and the length of the string minus one as the upper bound.
984
7ba81444
MS
985 FIXME: Maybe we should check the TYPE_CODE of RESULT_TYPE to make
986 sure it is TYPE_CODE_UNDEF before we bash it into a string
987 type? */
c906108c
SS
988
989struct type *
3b7538c0
UW
990create_string_type (struct type *result_type,
991 struct type *string_char_type,
7ba81444 992 struct type *range_type)
c906108c
SS
993{
994 result_type = create_array_type (result_type,
f290d38e 995 string_char_type,
c906108c
SS
996 range_type);
997 TYPE_CODE (result_type) = TYPE_CODE_STRING;
c16abbde 998 return result_type;
c906108c
SS
999}
1000
e3506a9f
UW
1001struct type *
1002lookup_string_range_type (struct type *string_char_type,
1003 int low_bound, int high_bound)
1004{
1005 struct type *result_type;
d8734c88 1006
e3506a9f
UW
1007 result_type = lookup_array_range_type (string_char_type,
1008 low_bound, high_bound);
1009 TYPE_CODE (result_type) = TYPE_CODE_STRING;
1010 return result_type;
1011}
1012
c906108c 1013struct type *
fba45db2 1014create_set_type (struct type *result_type, struct type *domain_type)
c906108c 1015{
c906108c 1016 if (result_type == NULL)
e9bb382b
UW
1017 result_type = alloc_type_copy (domain_type);
1018
c906108c
SS
1019 TYPE_CODE (result_type) = TYPE_CODE_SET;
1020 TYPE_NFIELDS (result_type) = 1;
1deafd4e 1021 TYPE_FIELDS (result_type) = TYPE_ZALLOC (result_type, sizeof (struct field));
c906108c 1022
74a9bb82 1023 if (!TYPE_STUB (domain_type))
c906108c 1024 {
f9780d5b 1025 LONGEST low_bound, high_bound, bit_length;
d8734c88 1026
c906108c
SS
1027 if (get_discrete_bounds (domain_type, &low_bound, &high_bound) < 0)
1028 low_bound = high_bound = 0;
1029 bit_length = high_bound - low_bound + 1;
1030 TYPE_LENGTH (result_type)
1031 = (bit_length + TARGET_CHAR_BIT - 1) / TARGET_CHAR_BIT;
f9780d5b 1032 if (low_bound >= 0)
876cecd0 1033 TYPE_UNSIGNED (result_type) = 1;
c906108c
SS
1034 }
1035 TYPE_FIELD_TYPE (result_type, 0) = domain_type;
1036
c16abbde 1037 return result_type;
c906108c
SS
1038}
1039
ea37ba09
DJ
1040/* Convert ARRAY_TYPE to a vector type. This may modify ARRAY_TYPE
1041 and any array types nested inside it. */
1042
1043void
1044make_vector_type (struct type *array_type)
1045{
1046 struct type *inner_array, *elt_type;
1047 int flags;
1048
1049 /* Find the innermost array type, in case the array is
1050 multi-dimensional. */
1051 inner_array = array_type;
1052 while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
1053 inner_array = TYPE_TARGET_TYPE (inner_array);
1054
1055 elt_type = TYPE_TARGET_TYPE (inner_array);
1056 if (TYPE_CODE (elt_type) == TYPE_CODE_INT)
1057 {
2844d6b5 1058 flags = TYPE_INSTANCE_FLAGS (elt_type) | TYPE_INSTANCE_FLAG_NOTTEXT;
ea37ba09
DJ
1059 elt_type = make_qualified_type (elt_type, flags, NULL);
1060 TYPE_TARGET_TYPE (inner_array) = elt_type;
1061 }
1062
876cecd0 1063 TYPE_VECTOR (array_type) = 1;
ea37ba09
DJ
1064}
1065
794ac428 1066struct type *
ac3aafc7
EZ
1067init_vector_type (struct type *elt_type, int n)
1068{
1069 struct type *array_type;
d8734c88 1070
e3506a9f 1071 array_type = lookup_array_range_type (elt_type, 0, n - 1);
ea37ba09 1072 make_vector_type (array_type);
ac3aafc7
EZ
1073 return array_type;
1074}
1075
0d5de010
DJ
1076/* Smash TYPE to be a type of pointers to members of DOMAIN with type
1077 TO_TYPE. A member pointer is a wierd thing -- it amounts to a
1078 typed offset into a struct, e.g. "an int at offset 8". A MEMBER
1079 TYPE doesn't include the offset (that's the value of the MEMBER
1080 itself), but does include the structure type into which it points
1081 (for some reason).
c906108c 1082
7ba81444
MS
1083 When "smashing" the type, we preserve the objfile that the old type
1084 pointed to, since we aren't changing where the type is actually
c906108c
SS
1085 allocated. */
1086
1087void
0d5de010
DJ
1088smash_to_memberptr_type (struct type *type, struct type *domain,
1089 struct type *to_type)
c906108c 1090{
2fdde8f8 1091 smash_type (type);
c906108c
SS
1092 TYPE_TARGET_TYPE (type) = to_type;
1093 TYPE_DOMAIN_TYPE (type) = domain;
0d5de010
DJ
1094 /* Assume that a data member pointer is the same size as a normal
1095 pointer. */
50810684
UW
1096 TYPE_LENGTH (type)
1097 = gdbarch_ptr_bit (get_type_arch (to_type)) / TARGET_CHAR_BIT;
0d5de010 1098 TYPE_CODE (type) = TYPE_CODE_MEMBERPTR;
c906108c
SS
1099}
1100
0b92b5bb
TT
1101/* Smash TYPE to be a type of pointer to methods type TO_TYPE.
1102
1103 When "smashing" the type, we preserve the objfile that the old type
1104 pointed to, since we aren't changing where the type is actually
1105 allocated. */
1106
1107void
1108smash_to_methodptr_type (struct type *type, struct type *to_type)
1109{
1110 smash_type (type);
1111 TYPE_TARGET_TYPE (type) = to_type;
1112 TYPE_DOMAIN_TYPE (type) = TYPE_DOMAIN_TYPE (to_type);
1113 TYPE_LENGTH (type) = cplus_method_ptr_size (to_type);
1114 TYPE_CODE (type) = TYPE_CODE_METHODPTR;
1115}
1116
c906108c
SS
1117/* Smash TYPE to be a type of method of DOMAIN with type TO_TYPE.
1118 METHOD just means `function that gets an extra "this" argument'.
1119
7ba81444
MS
1120 When "smashing" the type, we preserve the objfile that the old type
1121 pointed to, since we aren't changing where the type is actually
c906108c
SS
1122 allocated. */
1123
1124void
fba45db2 1125smash_to_method_type (struct type *type, struct type *domain,
ad2f7632
DJ
1126 struct type *to_type, struct field *args,
1127 int nargs, int varargs)
c906108c 1128{
2fdde8f8 1129 smash_type (type);
c906108c
SS
1130 TYPE_TARGET_TYPE (type) = to_type;
1131 TYPE_DOMAIN_TYPE (type) = domain;
ad2f7632
DJ
1132 TYPE_FIELDS (type) = args;
1133 TYPE_NFIELDS (type) = nargs;
1134 if (varargs)
876cecd0 1135 TYPE_VARARGS (type) = 1;
c906108c
SS
1136 TYPE_LENGTH (type) = 1; /* In practice, this is never needed. */
1137 TYPE_CODE (type) = TYPE_CODE_METHOD;
1138}
1139
1140/* Return a typename for a struct/union/enum type without "struct ",
1141 "union ", or "enum ". If the type has a NULL name, return NULL. */
1142
0d5cff50 1143const char *
aa1ee363 1144type_name_no_tag (const struct type *type)
c906108c
SS
1145{
1146 if (TYPE_TAG_NAME (type) != NULL)
1147 return TYPE_TAG_NAME (type);
1148
7ba81444
MS
1149 /* Is there code which expects this to return the name if there is
1150 no tag name? My guess is that this is mainly used for C++ in
1151 cases where the two will always be the same. */
c906108c
SS
1152 return TYPE_NAME (type);
1153}
1154
d8228535
JK
1155/* A wrapper of type_name_no_tag which calls error if the type is anonymous.
1156 Since GCC PR debug/47510 DWARF provides associated information to detect the
1157 anonymous class linkage name from its typedef.
1158
1159 Parameter TYPE should not yet have CHECK_TYPEDEF applied, this function will
1160 apply it itself. */
1161
1162const char *
1163type_name_no_tag_or_error (struct type *type)
1164{
1165 struct type *saved_type = type;
1166 const char *name;
1167 struct objfile *objfile;
1168
1169 CHECK_TYPEDEF (type);
1170
1171 name = type_name_no_tag (type);
1172 if (name != NULL)
1173 return name;
1174
1175 name = type_name_no_tag (saved_type);
1176 objfile = TYPE_OBJFILE (saved_type);
1177 error (_("Invalid anonymous type %s [in module %s], GCC PR debug/47510 bug?"),
1178 name ? name : "<anonymous>", objfile ? objfile->name : "<arch>");
1179}
1180
7ba81444
MS
1181/* Lookup a typedef or primitive type named NAME, visible in lexical
1182 block BLOCK. If NOERR is nonzero, return zero if NAME is not
1183 suitably defined. */
c906108c
SS
1184
1185struct type *
e6c014f2 1186lookup_typename (const struct language_defn *language,
ddd49eee 1187 struct gdbarch *gdbarch, const char *name,
34eaf542 1188 const struct block *block, int noerr)
c906108c 1189{
52f0bd74 1190 struct symbol *sym;
659c9f3a 1191 struct type *type;
c906108c 1192
774b6a14 1193 sym = lookup_symbol (name, block, VAR_DOMAIN, 0);
c51fe631
DE
1194 if (sym != NULL && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
1195 return SYMBOL_TYPE (sym);
1196
659c9f3a
DE
1197 type = language_lookup_primitive_type_by_name (language, gdbarch, name);
1198 if (type)
1199 return type;
c51fe631
DE
1200
1201 if (noerr)
1202 return NULL;
1203 error (_("No type named %s."), name);
c906108c
SS
1204}
1205
1206struct type *
e6c014f2 1207lookup_unsigned_typename (const struct language_defn *language,
0d5cff50 1208 struct gdbarch *gdbarch, const char *name)
c906108c
SS
1209{
1210 char *uns = alloca (strlen (name) + 10);
1211
1212 strcpy (uns, "unsigned ");
1213 strcpy (uns + 9, name);
e6c014f2 1214 return lookup_typename (language, gdbarch, uns, (struct block *) NULL, 0);
c906108c
SS
1215}
1216
1217struct type *
e6c014f2 1218lookup_signed_typename (const struct language_defn *language,
0d5cff50 1219 struct gdbarch *gdbarch, const char *name)
c906108c
SS
1220{
1221 struct type *t;
1222 char *uns = alloca (strlen (name) + 8);
1223
1224 strcpy (uns, "signed ");
1225 strcpy (uns + 7, name);
e6c014f2 1226 t = lookup_typename (language, gdbarch, uns, (struct block *) NULL, 1);
7ba81444 1227 /* If we don't find "signed FOO" just try again with plain "FOO". */
c906108c
SS
1228 if (t != NULL)
1229 return t;
e6c014f2 1230 return lookup_typename (language, gdbarch, name, (struct block *) NULL, 0);
c906108c
SS
1231}
1232
1233/* Lookup a structure type named "struct NAME",
1234 visible in lexical block BLOCK. */
1235
1236struct type *
ddd49eee 1237lookup_struct (const char *name, struct block *block)
c906108c 1238{
52f0bd74 1239 struct symbol *sym;
c906108c 1240
2570f2b7 1241 sym = lookup_symbol (name, block, STRUCT_DOMAIN, 0);
c906108c
SS
1242
1243 if (sym == NULL)
1244 {
8a3fe4f8 1245 error (_("No struct type named %s."), name);
c906108c
SS
1246 }
1247 if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_STRUCT)
1248 {
7ba81444
MS
1249 error (_("This context has class, union or enum %s, not a struct."),
1250 name);
c906108c
SS
1251 }
1252 return (SYMBOL_TYPE (sym));
1253}
1254
1255/* Lookup a union type named "union NAME",
1256 visible in lexical block BLOCK. */
1257
1258struct type *
ddd49eee 1259lookup_union (const char *name, struct block *block)
c906108c 1260{
52f0bd74 1261 struct symbol *sym;
c5aa993b 1262 struct type *t;
c906108c 1263
2570f2b7 1264 sym = lookup_symbol (name, block, STRUCT_DOMAIN, 0);
c906108c
SS
1265
1266 if (sym == NULL)
8a3fe4f8 1267 error (_("No union type named %s."), name);
c906108c 1268
c5aa993b 1269 t = SYMBOL_TYPE (sym);
c906108c
SS
1270
1271 if (TYPE_CODE (t) == TYPE_CODE_UNION)
c16abbde 1272 return t;
c906108c 1273
7ba81444
MS
1274 /* If we get here, it's not a union. */
1275 error (_("This context has class, struct or enum %s, not a union."),
1276 name);
c906108c
SS
1277}
1278
c906108c
SS
1279/* Lookup an enum type named "enum NAME",
1280 visible in lexical block BLOCK. */
1281
1282struct type *
ddd49eee 1283lookup_enum (const char *name, struct block *block)
c906108c 1284{
52f0bd74 1285 struct symbol *sym;
c906108c 1286
2570f2b7 1287 sym = lookup_symbol (name, block, STRUCT_DOMAIN, 0);
c906108c
SS
1288 if (sym == NULL)
1289 {
8a3fe4f8 1290 error (_("No enum type named %s."), name);
c906108c
SS
1291 }
1292 if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_ENUM)
1293 {
7ba81444
MS
1294 error (_("This context has class, struct or union %s, not an enum."),
1295 name);
c906108c
SS
1296 }
1297 return (SYMBOL_TYPE (sym));
1298}
1299
1300/* Lookup a template type named "template NAME<TYPE>",
1301 visible in lexical block BLOCK. */
1302
1303struct type *
7ba81444
MS
1304lookup_template_type (char *name, struct type *type,
1305 struct block *block)
c906108c
SS
1306{
1307 struct symbol *sym;
7ba81444
MS
1308 char *nam = (char *)
1309 alloca (strlen (name) + strlen (TYPE_NAME (type)) + 4);
d8734c88 1310
c906108c
SS
1311 strcpy (nam, name);
1312 strcat (nam, "<");
0004e5a2 1313 strcat (nam, TYPE_NAME (type));
0963b4bd 1314 strcat (nam, " >"); /* FIXME, extra space still introduced in gcc? */
c906108c 1315
2570f2b7 1316 sym = lookup_symbol (nam, block, VAR_DOMAIN, 0);
c906108c
SS
1317
1318 if (sym == NULL)
1319 {
8a3fe4f8 1320 error (_("No template type named %s."), name);
c906108c
SS
1321 }
1322 if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_STRUCT)
1323 {
7ba81444
MS
1324 error (_("This context has class, union or enum %s, not a struct."),
1325 name);
c906108c
SS
1326 }
1327 return (SYMBOL_TYPE (sym));
1328}
1329
7ba81444
MS
1330/* Given a type TYPE, lookup the type of the component of type named
1331 NAME.
c906108c 1332
7ba81444
MS
1333 TYPE can be either a struct or union, or a pointer or reference to
1334 a struct or union. If it is a pointer or reference, its target
1335 type is automatically used. Thus '.' and '->' are interchangable,
1336 as specified for the definitions of the expression element types
1337 STRUCTOP_STRUCT and STRUCTOP_PTR.
c906108c
SS
1338
1339 If NOERR is nonzero, return zero if NAME is not suitably defined.
1340 If NAME is the name of a baseclass type, return that type. */
1341
1342struct type *
fba45db2 1343lookup_struct_elt_type (struct type *type, char *name, int noerr)
c906108c
SS
1344{
1345 int i;
c92817ce 1346 char *typename;
c906108c
SS
1347
1348 for (;;)
1349 {
1350 CHECK_TYPEDEF (type);
1351 if (TYPE_CODE (type) != TYPE_CODE_PTR
1352 && TYPE_CODE (type) != TYPE_CODE_REF)
1353 break;
1354 type = TYPE_TARGET_TYPE (type);
1355 }
1356
687d6395
MS
1357 if (TYPE_CODE (type) != TYPE_CODE_STRUCT
1358 && TYPE_CODE (type) != TYPE_CODE_UNION)
c906108c 1359 {
c92817ce
TT
1360 typename = type_to_string (type);
1361 make_cleanup (xfree, typename);
1362 error (_("Type %s is not a structure or union type."), typename);
c906108c
SS
1363 }
1364
1365#if 0
7ba81444
MS
1366 /* FIXME: This change put in by Michael seems incorrect for the case
1367 where the structure tag name is the same as the member name.
0963b4bd 1368 I.e. when doing "ptype bell->bar" for "struct foo { int bar; int
7ba81444 1369 foo; } bell;" Disabled by fnf. */
c906108c
SS
1370 {
1371 char *typename;
1372
1373 typename = type_name_no_tag (type);
762f08a3 1374 if (typename != NULL && strcmp (typename, name) == 0)
c906108c
SS
1375 return type;
1376 }
1377#endif
1378
1379 for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
1380 {
0d5cff50 1381 const char *t_field_name = TYPE_FIELD_NAME (type, i);
c906108c 1382
db577aea 1383 if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
c906108c
SS
1384 {
1385 return TYPE_FIELD_TYPE (type, i);
1386 }
f5a010c0
PM
1387 else if (!t_field_name || *t_field_name == '\0')
1388 {
d8734c88
MS
1389 struct type *subtype
1390 = lookup_struct_elt_type (TYPE_FIELD_TYPE (type, i), name, 1);
1391
f5a010c0
PM
1392 if (subtype != NULL)
1393 return subtype;
1394 }
c906108c
SS
1395 }
1396
1397 /* OK, it's not in this class. Recursively check the baseclasses. */
1398 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1399 {
1400 struct type *t;
1401
9733fc94 1402 t = lookup_struct_elt_type (TYPE_BASECLASS (type, i), name, 1);
c906108c
SS
1403 if (t != NULL)
1404 {
1405 return t;
1406 }
1407 }
1408
1409 if (noerr)
1410 {
1411 return NULL;
1412 }
c5aa993b 1413
c92817ce
TT
1414 typename = type_to_string (type);
1415 make_cleanup (xfree, typename);
1416 error (_("Type %s has no component named %s."), typename, name);
c906108c
SS
1417}
1418
81fe8080
DE
1419/* Lookup the vptr basetype/fieldno values for TYPE.
1420 If found store vptr_basetype in *BASETYPEP if non-NULL, and return
1421 vptr_fieldno. Also, if found and basetype is from the same objfile,
1422 cache the results.
1423 If not found, return -1 and ignore BASETYPEP.
1424 Callers should be aware that in some cases (for example,
c906108c 1425 the type or one of its baseclasses is a stub type and we are
d48cc9dd
DJ
1426 debugging a .o file, or the compiler uses DWARF-2 and is not GCC),
1427 this function will not be able to find the
7ba81444 1428 virtual function table pointer, and vptr_fieldno will remain -1 and
81fe8080 1429 vptr_basetype will remain NULL or incomplete. */
c906108c 1430
81fe8080
DE
1431int
1432get_vptr_fieldno (struct type *type, struct type **basetypep)
c906108c
SS
1433{
1434 CHECK_TYPEDEF (type);
1435
1436 if (TYPE_VPTR_FIELDNO (type) < 0)
1437 {
1438 int i;
1439
7ba81444
MS
1440 /* We must start at zero in case the first (and only) baseclass
1441 is virtual (and hence we cannot share the table pointer). */
c906108c
SS
1442 for (i = 0; i < TYPE_N_BASECLASSES (type); i++)
1443 {
81fe8080
DE
1444 struct type *baseclass = check_typedef (TYPE_BASECLASS (type, i));
1445 int fieldno;
1446 struct type *basetype;
1447
1448 fieldno = get_vptr_fieldno (baseclass, &basetype);
1449 if (fieldno >= 0)
c906108c 1450 {
81fe8080 1451 /* If the type comes from a different objfile we can't cache
0963b4bd 1452 it, it may have a different lifetime. PR 2384 */
5ef73790 1453 if (TYPE_OBJFILE (type) == TYPE_OBJFILE (basetype))
81fe8080
DE
1454 {
1455 TYPE_VPTR_FIELDNO (type) = fieldno;
1456 TYPE_VPTR_BASETYPE (type) = basetype;
1457 }
1458 if (basetypep)
1459 *basetypep = basetype;
1460 return fieldno;
c906108c
SS
1461 }
1462 }
81fe8080
DE
1463
1464 /* Not found. */
1465 return -1;
1466 }
1467 else
1468 {
1469 if (basetypep)
1470 *basetypep = TYPE_VPTR_BASETYPE (type);
1471 return TYPE_VPTR_FIELDNO (type);
c906108c
SS
1472 }
1473}
1474
44e1a9eb
DJ
1475static void
1476stub_noname_complaint (void)
1477{
e2e0b3e5 1478 complaint (&symfile_complaints, _("stub type has NULL name"));
44e1a9eb
DJ
1479}
1480
92163a10
JK
1481/* Find the real type of TYPE. This function returns the real type,
1482 after removing all layers of typedefs, and completing opaque or stub
1483 types. Completion changes the TYPE argument, but stripping of
1484 typedefs does not.
1485
1486 Instance flags (e.g. const/volatile) are preserved as typedefs are
1487 stripped. If necessary a new qualified form of the underlying type
1488 is created.
1489
1490 NOTE: This will return a typedef if TYPE_TARGET_TYPE for the typedef has
1491 not been computed and we're either in the middle of reading symbols, or
1492 there was no name for the typedef in the debug info.
1493
9bc118a5
DE
1494 NOTE: Lookup of opaque types can throw errors for invalid symbol files.
1495 QUITs in the symbol reading code can also throw.
1496 Thus this function can throw an exception.
1497
92163a10
JK
1498 If TYPE is a TYPE_CODE_TYPEDEF, its length is updated to the length of
1499 the target type.
c906108c
SS
1500
1501 If this is a stubbed struct (i.e. declared as struct foo *), see if
0963b4bd 1502 we can find a full definition in some other file. If so, copy this
7ba81444
MS
1503 definition, so we can use it in future. There used to be a comment
1504 (but not any code) that if we don't find a full definition, we'd
1505 set a flag so we don't spend time in the future checking the same
1506 type. That would be a mistake, though--we might load in more
92163a10 1507 symbols which contain a full definition for the type. */
c906108c
SS
1508
1509struct type *
a02fd225 1510check_typedef (struct type *type)
c906108c
SS
1511{
1512 struct type *orig_type = type;
92163a10
JK
1513 /* While we're removing typedefs, we don't want to lose qualifiers.
1514 E.g., const/volatile. */
1515 int instance_flags = TYPE_INSTANCE_FLAGS (type);
a02fd225 1516
423c0af8
MS
1517 gdb_assert (type);
1518
c906108c
SS
1519 while (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
1520 {
1521 if (!TYPE_TARGET_TYPE (type))
1522 {
0d5cff50 1523 const char *name;
c906108c
SS
1524 struct symbol *sym;
1525
1526 /* It is dangerous to call lookup_symbol if we are currently
7ba81444 1527 reading a symtab. Infinite recursion is one danger. */
c906108c 1528 if (currently_reading_symtab)
92163a10 1529 return make_qualified_type (type, instance_flags, NULL);
c906108c
SS
1530
1531 name = type_name_no_tag (type);
7ba81444
MS
1532 /* FIXME: shouldn't we separately check the TYPE_NAME and
1533 the TYPE_TAG_NAME, and look in STRUCT_DOMAIN and/or
1534 VAR_DOMAIN as appropriate? (this code was written before
1535 TYPE_NAME and TYPE_TAG_NAME were separate). */
c906108c
SS
1536 if (name == NULL)
1537 {
23136709 1538 stub_noname_complaint ();
92163a10 1539 return make_qualified_type (type, instance_flags, NULL);
c906108c 1540 }
2570f2b7 1541 sym = lookup_symbol (name, 0, STRUCT_DOMAIN, 0);
c906108c
SS
1542 if (sym)
1543 TYPE_TARGET_TYPE (type) = SYMBOL_TYPE (sym);
7ba81444 1544 else /* TYPE_CODE_UNDEF */
e9bb382b 1545 TYPE_TARGET_TYPE (type) = alloc_type_arch (get_type_arch (type));
c906108c
SS
1546 }
1547 type = TYPE_TARGET_TYPE (type);
c906108c 1548
92163a10
JK
1549 /* Preserve the instance flags as we traverse down the typedef chain.
1550
1551 Handling address spaces/classes is nasty, what do we do if there's a
1552 conflict?
1553 E.g., what if an outer typedef marks the type as class_1 and an inner
1554 typedef marks the type as class_2?
1555 This is the wrong place to do such error checking. We leave it to
1556 the code that created the typedef in the first place to flag the
1557 error. We just pick the outer address space (akin to letting the
1558 outer cast in a chain of casting win), instead of assuming
1559 "it can't happen". */
1560 {
1561 const int ALL_SPACES = (TYPE_INSTANCE_FLAG_CODE_SPACE
1562 | TYPE_INSTANCE_FLAG_DATA_SPACE);
1563 const int ALL_CLASSES = TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL;
1564 int new_instance_flags = TYPE_INSTANCE_FLAGS (type);
1565
1566 /* Treat code vs data spaces and address classes separately. */
1567 if ((instance_flags & ALL_SPACES) != 0)
1568 new_instance_flags &= ~ALL_SPACES;
1569 if ((instance_flags & ALL_CLASSES) != 0)
1570 new_instance_flags &= ~ALL_CLASSES;
1571
1572 instance_flags |= new_instance_flags;
1573 }
1574 }
a02fd225 1575
7ba81444
MS
1576 /* If this is a struct/class/union with no fields, then check
1577 whether a full definition exists somewhere else. This is for
1578 systems where a type definition with no fields is issued for such
1579 types, instead of identifying them as stub types in the first
1580 place. */
c5aa993b 1581
7ba81444
MS
1582 if (TYPE_IS_OPAQUE (type)
1583 && opaque_type_resolution
1584 && !currently_reading_symtab)
c906108c 1585 {
0d5cff50 1586 const char *name = type_name_no_tag (type);
c5aa993b 1587 struct type *newtype;
d8734c88 1588
c906108c
SS
1589 if (name == NULL)
1590 {
23136709 1591 stub_noname_complaint ();
92163a10 1592 return make_qualified_type (type, instance_flags, NULL);
c906108c
SS
1593 }
1594 newtype = lookup_transparent_type (name);
ad766c0a 1595
c906108c 1596 if (newtype)
ad766c0a 1597 {
7ba81444
MS
1598 /* If the resolved type and the stub are in the same
1599 objfile, then replace the stub type with the real deal.
1600 But if they're in separate objfiles, leave the stub
1601 alone; we'll just look up the transparent type every time
1602 we call check_typedef. We can't create pointers between
1603 types allocated to different objfiles, since they may
1604 have different lifetimes. Trying to copy NEWTYPE over to
1605 TYPE's objfile is pointless, too, since you'll have to
1606 move over any other types NEWTYPE refers to, which could
1607 be an unbounded amount of stuff. */
ad766c0a 1608 if (TYPE_OBJFILE (newtype) == TYPE_OBJFILE (type))
92163a10
JK
1609 type = make_qualified_type (newtype,
1610 TYPE_INSTANCE_FLAGS (type),
1611 type);
ad766c0a
JB
1612 else
1613 type = newtype;
1614 }
c906108c 1615 }
7ba81444
MS
1616 /* Otherwise, rely on the stub flag being set for opaque/stubbed
1617 types. */
74a9bb82 1618 else if (TYPE_STUB (type) && !currently_reading_symtab)
c906108c 1619 {
0d5cff50 1620 const char *name = type_name_no_tag (type);
c906108c 1621 /* FIXME: shouldn't we separately check the TYPE_NAME and the
176620f1 1622 TYPE_TAG_NAME, and look in STRUCT_DOMAIN and/or VAR_DOMAIN
7b83ea04
AC
1623 as appropriate? (this code was written before TYPE_NAME and
1624 TYPE_TAG_NAME were separate). */
c906108c 1625 struct symbol *sym;
d8734c88 1626
c906108c
SS
1627 if (name == NULL)
1628 {
23136709 1629 stub_noname_complaint ();
92163a10 1630 return make_qualified_type (type, instance_flags, NULL);
c906108c 1631 }
2570f2b7 1632 sym = lookup_symbol (name, 0, STRUCT_DOMAIN, 0);
c906108c 1633 if (sym)
c26f2453
JB
1634 {
1635 /* Same as above for opaque types, we can replace the stub
92163a10 1636 with the complete type only if they are in the same
c26f2453
JB
1637 objfile. */
1638 if (TYPE_OBJFILE (SYMBOL_TYPE(sym)) == TYPE_OBJFILE (type))
92163a10
JK
1639 type = make_qualified_type (SYMBOL_TYPE (sym),
1640 TYPE_INSTANCE_FLAGS (type),
1641 type);
c26f2453
JB
1642 else
1643 type = SYMBOL_TYPE (sym);
1644 }
c906108c
SS
1645 }
1646
74a9bb82 1647 if (TYPE_TARGET_STUB (type))
c906108c
SS
1648 {
1649 struct type *range_type;
1650 struct type *target_type = check_typedef (TYPE_TARGET_TYPE (type));
1651
74a9bb82 1652 if (TYPE_STUB (target_type) || TYPE_TARGET_STUB (target_type))
c5aa993b 1653 {
73e2eb35 1654 /* Nothing we can do. */
c5aa993b 1655 }
c906108c
SS
1656 else if (TYPE_CODE (type) == TYPE_CODE_ARRAY
1657 && TYPE_NFIELDS (type) == 1
262452ec 1658 && (TYPE_CODE (range_type = TYPE_INDEX_TYPE (type))
c906108c
SS
1659 == TYPE_CODE_RANGE))
1660 {
1661 /* Now recompute the length of the array type, based on its
ab0d6e0d
JB
1662 number of elements and the target type's length.
1663 Watch out for Ada null Ada arrays where the high bound
0963b4bd 1664 is smaller than the low bound. */
43bbcdc2
PH
1665 const LONGEST low_bound = TYPE_LOW_BOUND (range_type);
1666 const LONGEST high_bound = TYPE_HIGH_BOUND (range_type);
1667 ULONGEST len;
1668
ab0d6e0d 1669 if (high_bound < low_bound)
43bbcdc2 1670 len = 0;
d8734c88
MS
1671 else
1672 {
1673 /* For now, we conservatively take the array length to be 0
1674 if its length exceeds UINT_MAX. The code below assumes
1675 that for x < 0, (ULONGEST) x == -x + ULONGEST_MAX + 1,
1676 which is technically not guaranteed by C, but is usually true
1677 (because it would be true if x were unsigned with its
0963b4bd 1678 high-order bit on). It uses the fact that
d8734c88
MS
1679 high_bound-low_bound is always representable in
1680 ULONGEST and that if high_bound-low_bound+1 overflows,
1681 it overflows to 0. We must change these tests if we
1682 decide to increase the representation of TYPE_LENGTH
0963b4bd 1683 from unsigned int to ULONGEST. */
d8734c88
MS
1684 ULONGEST ulow = low_bound, uhigh = high_bound;
1685 ULONGEST tlen = TYPE_LENGTH (target_type);
1686
1687 len = tlen * (uhigh - ulow + 1);
1688 if (tlen == 0 || (len / tlen - 1 + ulow) != uhigh
1689 || len > UINT_MAX)
1690 len = 0;
1691 }
43bbcdc2 1692 TYPE_LENGTH (type) = len;
876cecd0 1693 TYPE_TARGET_STUB (type) = 0;
c906108c
SS
1694 }
1695 else if (TYPE_CODE (type) == TYPE_CODE_RANGE)
1696 {
1697 TYPE_LENGTH (type) = TYPE_LENGTH (target_type);
876cecd0 1698 TYPE_TARGET_STUB (type) = 0;
c906108c
SS
1699 }
1700 }
92163a10
JK
1701
1702 type = make_qualified_type (type, instance_flags, NULL);
1703
7ba81444 1704 /* Cache TYPE_LENGTH for future use. */
c906108c 1705 TYPE_LENGTH (orig_type) = TYPE_LENGTH (type);
92163a10 1706
c906108c
SS
1707 return type;
1708}
1709
7ba81444 1710/* Parse a type expression in the string [P..P+LENGTH). If an error
48319d1f 1711 occurs, silently return a void type. */
c91ecb25 1712
b9362cc7 1713static struct type *
48319d1f 1714safe_parse_type (struct gdbarch *gdbarch, char *p, int length)
c91ecb25
ND
1715{
1716 struct ui_file *saved_gdb_stderr;
34365054 1717 struct type *type = NULL; /* Initialize to keep gcc happy. */
8e7b59a5 1718 volatile struct gdb_exception except;
c91ecb25 1719
7ba81444 1720 /* Suppress error messages. */
c91ecb25
ND
1721 saved_gdb_stderr = gdb_stderr;
1722 gdb_stderr = ui_file_new ();
1723
7ba81444 1724 /* Call parse_and_eval_type() without fear of longjmp()s. */
8e7b59a5
KS
1725 TRY_CATCH (except, RETURN_MASK_ERROR)
1726 {
1727 type = parse_and_eval_type (p, length);
1728 }
1729
1730 if (except.reason < 0)
48319d1f 1731 type = builtin_type (gdbarch)->builtin_void;
c91ecb25 1732
7ba81444 1733 /* Stop suppressing error messages. */
c91ecb25
ND
1734 ui_file_delete (gdb_stderr);
1735 gdb_stderr = saved_gdb_stderr;
1736
1737 return type;
1738}
1739
c906108c
SS
1740/* Ugly hack to convert method stubs into method types.
1741
7ba81444
MS
1742 He ain't kiddin'. This demangles the name of the method into a
1743 string including argument types, parses out each argument type,
1744 generates a string casting a zero to that type, evaluates the
1745 string, and stuffs the resulting type into an argtype vector!!!
1746 Then it knows the type of the whole function (including argument
1747 types for overloading), which info used to be in the stab's but was
1748 removed to hack back the space required for them. */
c906108c 1749
de17c821 1750static void
fba45db2 1751check_stub_method (struct type *type, int method_id, int signature_id)
c906108c 1752{
50810684 1753 struct gdbarch *gdbarch = get_type_arch (type);
c906108c
SS
1754 struct fn_field *f;
1755 char *mangled_name = gdb_mangle_name (type, method_id, signature_id);
1756 char *demangled_name = cplus_demangle (mangled_name,
1757 DMGL_PARAMS | DMGL_ANSI);
1758 char *argtypetext, *p;
1759 int depth = 0, argcount = 1;
ad2f7632 1760 struct field *argtypes;
c906108c
SS
1761 struct type *mtype;
1762
1763 /* Make sure we got back a function string that we can use. */
1764 if (demangled_name)
1765 p = strchr (demangled_name, '(');
502dcf4e
AC
1766 else
1767 p = NULL;
c906108c
SS
1768
1769 if (demangled_name == NULL || p == NULL)
7ba81444
MS
1770 error (_("Internal: Cannot demangle mangled name `%s'."),
1771 mangled_name);
c906108c
SS
1772
1773 /* Now, read in the parameters that define this type. */
1774 p += 1;
1775 argtypetext = p;
1776 while (*p)
1777 {
070ad9f0 1778 if (*p == '(' || *p == '<')
c906108c
SS
1779 {
1780 depth += 1;
1781 }
070ad9f0 1782 else if (*p == ')' || *p == '>')
c906108c
SS
1783 {
1784 depth -= 1;
1785 }
1786 else if (*p == ',' && depth == 0)
1787 {
1788 argcount += 1;
1789 }
1790
1791 p += 1;
1792 }
1793
ad2f7632
DJ
1794 /* If we read one argument and it was ``void'', don't count it. */
1795 if (strncmp (argtypetext, "(void)", 6) == 0)
1796 argcount -= 1;
c906108c 1797
ad2f7632
DJ
1798 /* We need one extra slot, for the THIS pointer. */
1799
1800 argtypes = (struct field *)
1801 TYPE_ALLOC (type, (argcount + 1) * sizeof (struct field));
c906108c 1802 p = argtypetext;
4a1970e4
DJ
1803
1804 /* Add THIS pointer for non-static methods. */
1805 f = TYPE_FN_FIELDLIST1 (type, method_id);
1806 if (TYPE_FN_FIELD_STATIC_P (f, signature_id))
1807 argcount = 0;
1808 else
1809 {
ad2f7632 1810 argtypes[0].type = lookup_pointer_type (type);
4a1970e4
DJ
1811 argcount = 1;
1812 }
c906108c 1813
0963b4bd 1814 if (*p != ')') /* () means no args, skip while. */
c906108c
SS
1815 {
1816 depth = 0;
1817 while (*p)
1818 {
1819 if (depth <= 0 && (*p == ',' || *p == ')'))
1820 {
ad2f7632
DJ
1821 /* Avoid parsing of ellipsis, they will be handled below.
1822 Also avoid ``void'' as above. */
1823 if (strncmp (argtypetext, "...", p - argtypetext) != 0
1824 && strncmp (argtypetext, "void", p - argtypetext) != 0)
c906108c 1825 {
ad2f7632 1826 argtypes[argcount].type =
48319d1f 1827 safe_parse_type (gdbarch, argtypetext, p - argtypetext);
c906108c
SS
1828 argcount += 1;
1829 }
1830 argtypetext = p + 1;
1831 }
1832
070ad9f0 1833 if (*p == '(' || *p == '<')
c906108c
SS
1834 {
1835 depth += 1;
1836 }
070ad9f0 1837 else if (*p == ')' || *p == '>')
c906108c
SS
1838 {
1839 depth -= 1;
1840 }
1841
1842 p += 1;
1843 }
1844 }
1845
c906108c
SS
1846 TYPE_FN_FIELD_PHYSNAME (f, signature_id) = mangled_name;
1847
1848 /* Now update the old "stub" type into a real type. */
1849 mtype = TYPE_FN_FIELD_TYPE (f, signature_id);
1850 TYPE_DOMAIN_TYPE (mtype) = type;
ad2f7632
DJ
1851 TYPE_FIELDS (mtype) = argtypes;
1852 TYPE_NFIELDS (mtype) = argcount;
876cecd0 1853 TYPE_STUB (mtype) = 0;
c906108c 1854 TYPE_FN_FIELD_STUB (f, signature_id) = 0;
ad2f7632 1855 if (p[-2] == '.')
876cecd0 1856 TYPE_VARARGS (mtype) = 1;
ad2f7632
DJ
1857
1858 xfree (demangled_name);
c906108c
SS
1859}
1860
7ba81444
MS
1861/* This is the external interface to check_stub_method, above. This
1862 function unstubs all of the signatures for TYPE's METHOD_ID method
1863 name. After calling this function TYPE_FN_FIELD_STUB will be
1864 cleared for each signature and TYPE_FN_FIELDLIST_NAME will be
1865 correct.
de17c821
DJ
1866
1867 This function unfortunately can not die until stabs do. */
1868
1869void
1870check_stub_method_group (struct type *type, int method_id)
1871{
1872 int len = TYPE_FN_FIELDLIST_LENGTH (type, method_id);
1873 struct fn_field *f = TYPE_FN_FIELDLIST1 (type, method_id);
f710f4fc 1874 int j, found_stub = 0;
de17c821
DJ
1875
1876 for (j = 0; j < len; j++)
1877 if (TYPE_FN_FIELD_STUB (f, j))
1878 {
1879 found_stub = 1;
1880 check_stub_method (type, method_id, j);
1881 }
1882
7ba81444
MS
1883 /* GNU v3 methods with incorrect names were corrected when we read
1884 in type information, because it was cheaper to do it then. The
1885 only GNU v2 methods with incorrect method names are operators and
1886 destructors; destructors were also corrected when we read in type
1887 information.
de17c821
DJ
1888
1889 Therefore the only thing we need to handle here are v2 operator
1890 names. */
1891 if (found_stub && strncmp (TYPE_FN_FIELD_PHYSNAME (f, 0), "_Z", 2) != 0)
1892 {
1893 int ret;
1894 char dem_opname[256];
1895
7ba81444
MS
1896 ret = cplus_demangle_opname (TYPE_FN_FIELDLIST_NAME (type,
1897 method_id),
de17c821
DJ
1898 dem_opname, DMGL_ANSI);
1899 if (!ret)
7ba81444
MS
1900 ret = cplus_demangle_opname (TYPE_FN_FIELDLIST_NAME (type,
1901 method_id),
de17c821
DJ
1902 dem_opname, 0);
1903 if (ret)
1904 TYPE_FN_FIELDLIST_NAME (type, method_id) = xstrdup (dem_opname);
1905 }
1906}
1907
9655fd1a
JK
1908/* Ensure it is in .rodata (if available) by workarounding GCC PR 44690. */
1909const struct cplus_struct_type cplus_struct_default = { };
c906108c
SS
1910
1911void
fba45db2 1912allocate_cplus_struct_type (struct type *type)
c906108c 1913{
b4ba55a1
JB
1914 if (HAVE_CPLUS_STRUCT (type))
1915 /* Structure was already allocated. Nothing more to do. */
1916 return;
1917
1918 TYPE_SPECIFIC_FIELD (type) = TYPE_SPECIFIC_CPLUS_STUFF;
1919 TYPE_RAW_CPLUS_SPECIFIC (type) = (struct cplus_struct_type *)
1920 TYPE_ALLOC (type, sizeof (struct cplus_struct_type));
1921 *(TYPE_RAW_CPLUS_SPECIFIC (type)) = cplus_struct_default;
c906108c
SS
1922}
1923
b4ba55a1
JB
1924const struct gnat_aux_type gnat_aux_default =
1925 { NULL };
1926
1927/* Set the TYPE's type-specific kind to TYPE_SPECIFIC_GNAT_STUFF,
1928 and allocate the associated gnat-specific data. The gnat-specific
1929 data is also initialized to gnat_aux_default. */
5212577a 1930
b4ba55a1
JB
1931void
1932allocate_gnat_aux_type (struct type *type)
1933{
1934 TYPE_SPECIFIC_FIELD (type) = TYPE_SPECIFIC_GNAT_STUFF;
1935 TYPE_GNAT_SPECIFIC (type) = (struct gnat_aux_type *)
1936 TYPE_ALLOC (type, sizeof (struct gnat_aux_type));
1937 *(TYPE_GNAT_SPECIFIC (type)) = gnat_aux_default;
1938}
1939
c906108c
SS
1940/* Helper function to initialize the standard scalar types.
1941
e9bb382b
UW
1942 If NAME is non-NULL, then we make a copy of the string pointed
1943 to by name in the objfile_obstack for that objfile, and initialize
1944 the type name to that copy. There are places (mipsread.c in particular),
1945 where init_type is called with a NULL value for NAME). */
c906108c
SS
1946
1947struct type *
7ba81444
MS
1948init_type (enum type_code code, int length, int flags,
1949 char *name, struct objfile *objfile)
c906108c 1950{
52f0bd74 1951 struct type *type;
c906108c
SS
1952
1953 type = alloc_type (objfile);
1954 TYPE_CODE (type) = code;
1955 TYPE_LENGTH (type) = length;
876cecd0
TT
1956
1957 gdb_assert (!(flags & (TYPE_FLAG_MIN - 1)));
1958 if (flags & TYPE_FLAG_UNSIGNED)
1959 TYPE_UNSIGNED (type) = 1;
1960 if (flags & TYPE_FLAG_NOSIGN)
1961 TYPE_NOSIGN (type) = 1;
1962 if (flags & TYPE_FLAG_STUB)
1963 TYPE_STUB (type) = 1;
1964 if (flags & TYPE_FLAG_TARGET_STUB)
1965 TYPE_TARGET_STUB (type) = 1;
1966 if (flags & TYPE_FLAG_STATIC)
1967 TYPE_STATIC (type) = 1;
1968 if (flags & TYPE_FLAG_PROTOTYPED)
1969 TYPE_PROTOTYPED (type) = 1;
1970 if (flags & TYPE_FLAG_INCOMPLETE)
1971 TYPE_INCOMPLETE (type) = 1;
1972 if (flags & TYPE_FLAG_VARARGS)
1973 TYPE_VARARGS (type) = 1;
1974 if (flags & TYPE_FLAG_VECTOR)
1975 TYPE_VECTOR (type) = 1;
1976 if (flags & TYPE_FLAG_STUB_SUPPORTED)
1977 TYPE_STUB_SUPPORTED (type) = 1;
876cecd0
TT
1978 if (flags & TYPE_FLAG_FIXED_INSTANCE)
1979 TYPE_FIXED_INSTANCE (type) = 1;
0875794a
JK
1980 if (flags & TYPE_FLAG_GNU_IFUNC)
1981 TYPE_GNU_IFUNC (type) = 1;
876cecd0 1982
e9bb382b
UW
1983 if (name)
1984 TYPE_NAME (type) = obsavestring (name, strlen (name),
1985 &objfile->objfile_obstack);
c906108c
SS
1986
1987 /* C++ fancies. */
1988
973ccf8b 1989 if (name && strcmp (name, "char") == 0)
876cecd0 1990 TYPE_NOSIGN (type) = 1;
973ccf8b 1991
b4ba55a1 1992 switch (code)
c906108c 1993 {
b4ba55a1
JB
1994 case TYPE_CODE_STRUCT:
1995 case TYPE_CODE_UNION:
1996 case TYPE_CODE_NAMESPACE:
1997 INIT_CPLUS_SPECIFIC (type);
1998 break;
1999 case TYPE_CODE_FLT:
2000 TYPE_SPECIFIC_FIELD (type) = TYPE_SPECIFIC_FLOATFORMAT;
2001 break;
2002 case TYPE_CODE_FUNC:
b6cdc2c1 2003 INIT_FUNC_SPECIFIC (type);
b4ba55a1 2004 break;
c906108c 2005 }
c16abbde 2006 return type;
c906108c 2007}
5212577a
DE
2008\f
2009/* Queries on types. */
c906108c 2010
c906108c 2011int
fba45db2 2012can_dereference (struct type *t)
c906108c 2013{
7ba81444
MS
2014 /* FIXME: Should we return true for references as well as
2015 pointers? */
c906108c
SS
2016 CHECK_TYPEDEF (t);
2017 return
2018 (t != NULL
2019 && TYPE_CODE (t) == TYPE_CODE_PTR
2020 && TYPE_CODE (TYPE_TARGET_TYPE (t)) != TYPE_CODE_VOID);
2021}
2022
adf40b2e 2023int
fba45db2 2024is_integral_type (struct type *t)
adf40b2e
JM
2025{
2026 CHECK_TYPEDEF (t);
2027 return
2028 ((t != NULL)
d4f3574e
SS
2029 && ((TYPE_CODE (t) == TYPE_CODE_INT)
2030 || (TYPE_CODE (t) == TYPE_CODE_ENUM)
4f2aea11 2031 || (TYPE_CODE (t) == TYPE_CODE_FLAGS)
d4f3574e
SS
2032 || (TYPE_CODE (t) == TYPE_CODE_CHAR)
2033 || (TYPE_CODE (t) == TYPE_CODE_RANGE)
2034 || (TYPE_CODE (t) == TYPE_CODE_BOOL)));
adf40b2e
JM
2035}
2036
e09342b5
TJB
2037/* Return true if TYPE is scalar. */
2038
2039static int
2040is_scalar_type (struct type *type)
2041{
2042 CHECK_TYPEDEF (type);
2043
2044 switch (TYPE_CODE (type))
2045 {
2046 case TYPE_CODE_ARRAY:
2047 case TYPE_CODE_STRUCT:
2048 case TYPE_CODE_UNION:
2049 case TYPE_CODE_SET:
2050 case TYPE_CODE_STRING:
e09342b5
TJB
2051 return 0;
2052 default:
2053 return 1;
2054 }
2055}
2056
2057/* Return true if T is scalar, or a composite type which in practice has
90e4670f
TJB
2058 the memory layout of a scalar type. E.g., an array or struct with only
2059 one scalar element inside it, or a union with only scalar elements. */
e09342b5
TJB
2060
2061int
2062is_scalar_type_recursive (struct type *t)
2063{
2064 CHECK_TYPEDEF (t);
2065
2066 if (is_scalar_type (t))
2067 return 1;
2068 /* Are we dealing with an array or string of known dimensions? */
2069 else if ((TYPE_CODE (t) == TYPE_CODE_ARRAY
2070 || TYPE_CODE (t) == TYPE_CODE_STRING) && TYPE_NFIELDS (t) == 1
2071 && TYPE_CODE (TYPE_INDEX_TYPE (t)) == TYPE_CODE_RANGE)
2072 {
2073 LONGEST low_bound, high_bound;
2074 struct type *elt_type = check_typedef (TYPE_TARGET_TYPE (t));
2075
2076 get_discrete_bounds (TYPE_INDEX_TYPE (t), &low_bound, &high_bound);
2077
2078 return high_bound == low_bound && is_scalar_type_recursive (elt_type);
2079 }
2080 /* Are we dealing with a struct with one element? */
2081 else if (TYPE_CODE (t) == TYPE_CODE_STRUCT && TYPE_NFIELDS (t) == 1)
2082 return is_scalar_type_recursive (TYPE_FIELD_TYPE (t, 0));
2083 else if (TYPE_CODE (t) == TYPE_CODE_UNION)
2084 {
2085 int i, n = TYPE_NFIELDS (t);
2086
2087 /* If all elements of the union are scalar, then the union is scalar. */
2088 for (i = 0; i < n; i++)
2089 if (!is_scalar_type_recursive (TYPE_FIELD_TYPE (t, i)))
2090 return 0;
2091
2092 return 1;
2093 }
2094
2095 return 0;
2096}
2097
4e8f195d
TT
2098/* A helper function which returns true if types A and B represent the
2099 "same" class type. This is true if the types have the same main
2100 type, or the same name. */
2101
2102int
2103class_types_same_p (const struct type *a, const struct type *b)
2104{
2105 return (TYPE_MAIN_TYPE (a) == TYPE_MAIN_TYPE (b)
2106 || (TYPE_NAME (a) && TYPE_NAME (b)
2107 && !strcmp (TYPE_NAME (a), TYPE_NAME (b))));
2108}
2109
a9d5ef47
SW
2110/* If BASE is an ancestor of DCLASS return the distance between them.
2111 otherwise return -1;
2112 eg:
2113
2114 class A {};
2115 class B: public A {};
2116 class C: public B {};
2117 class D: C {};
2118
2119 distance_to_ancestor (A, A, 0) = 0
2120 distance_to_ancestor (A, B, 0) = 1
2121 distance_to_ancestor (A, C, 0) = 2
2122 distance_to_ancestor (A, D, 0) = 3
2123
2124 If PUBLIC is 1 then only public ancestors are considered,
2125 and the function returns the distance only if BASE is a public ancestor
2126 of DCLASS.
2127 Eg:
2128
0963b4bd 2129 distance_to_ancestor (A, D, 1) = -1. */
c906108c 2130
0526b37a 2131static int
a9d5ef47 2132distance_to_ancestor (struct type *base, struct type *dclass, int public)
c906108c
SS
2133{
2134 int i;
a9d5ef47 2135 int d;
c5aa993b 2136
c906108c
SS
2137 CHECK_TYPEDEF (base);
2138 CHECK_TYPEDEF (dclass);
2139
4e8f195d 2140 if (class_types_same_p (base, dclass))
a9d5ef47 2141 return 0;
c906108c
SS
2142
2143 for (i = 0; i < TYPE_N_BASECLASSES (dclass); i++)
4e8f195d 2144 {
0526b37a
SW
2145 if (public && ! BASETYPE_VIA_PUBLIC (dclass, i))
2146 continue;
2147
a9d5ef47
SW
2148 d = distance_to_ancestor (base, TYPE_BASECLASS (dclass, i), public);
2149 if (d >= 0)
2150 return 1 + d;
4e8f195d 2151 }
c906108c 2152
a9d5ef47 2153 return -1;
c906108c 2154}
4e8f195d 2155
0526b37a
SW
2156/* Check whether BASE is an ancestor or base class or DCLASS
2157 Return 1 if so, and 0 if not.
2158 Note: If BASE and DCLASS are of the same type, this function
2159 will return 1. So for some class A, is_ancestor (A, A) will
2160 return 1. */
2161
2162int
2163is_ancestor (struct type *base, struct type *dclass)
2164{
a9d5ef47 2165 return distance_to_ancestor (base, dclass, 0) >= 0;
0526b37a
SW
2166}
2167
4e8f195d
TT
2168/* Like is_ancestor, but only returns true when BASE is a public
2169 ancestor of DCLASS. */
2170
2171int
2172is_public_ancestor (struct type *base, struct type *dclass)
2173{
a9d5ef47 2174 return distance_to_ancestor (base, dclass, 1) >= 0;
4e8f195d
TT
2175}
2176
2177/* A helper function for is_unique_ancestor. */
2178
2179static int
2180is_unique_ancestor_worker (struct type *base, struct type *dclass,
2181 int *offset,
8af8e3bc
PA
2182 const gdb_byte *valaddr, int embedded_offset,
2183 CORE_ADDR address, struct value *val)
4e8f195d
TT
2184{
2185 int i, count = 0;
2186
2187 CHECK_TYPEDEF (base);
2188 CHECK_TYPEDEF (dclass);
2189
2190 for (i = 0; i < TYPE_N_BASECLASSES (dclass) && count < 2; ++i)
2191 {
8af8e3bc
PA
2192 struct type *iter;
2193 int this_offset;
4e8f195d 2194
8af8e3bc
PA
2195 iter = check_typedef (TYPE_BASECLASS (dclass, i));
2196
2197 this_offset = baseclass_offset (dclass, i, valaddr, embedded_offset,
2198 address, val);
4e8f195d
TT
2199
2200 if (class_types_same_p (base, iter))
2201 {
2202 /* If this is the first subclass, set *OFFSET and set count
2203 to 1. Otherwise, if this is at the same offset as
2204 previous instances, do nothing. Otherwise, increment
2205 count. */
2206 if (*offset == -1)
2207 {
2208 *offset = this_offset;
2209 count = 1;
2210 }
2211 else if (this_offset == *offset)
2212 {
2213 /* Nothing. */
2214 }
2215 else
2216 ++count;
2217 }
2218 else
2219 count += is_unique_ancestor_worker (base, iter, offset,
8af8e3bc
PA
2220 valaddr,
2221 embedded_offset + this_offset,
2222 address, val);
4e8f195d
TT
2223 }
2224
2225 return count;
2226}
2227
2228/* Like is_ancestor, but only returns true if BASE is a unique base
2229 class of the type of VAL. */
2230
2231int
2232is_unique_ancestor (struct type *base, struct value *val)
2233{
2234 int offset = -1;
2235
2236 return is_unique_ancestor_worker (base, value_type (val), &offset,
8af8e3bc
PA
2237 value_contents_for_printing (val),
2238 value_embedded_offset (val),
2239 value_address (val), val) == 1;
4e8f195d
TT
2240}
2241
c906108c 2242\f
5212577a 2243/* Overload resolution. */
c906108c 2244
6403aeea
SW
2245/* Return the sum of the rank of A with the rank of B. */
2246
2247struct rank
2248sum_ranks (struct rank a, struct rank b)
2249{
2250 struct rank c;
2251 c.rank = a.rank + b.rank;
a9d5ef47 2252 c.subrank = a.subrank + b.subrank;
6403aeea
SW
2253 return c;
2254}
2255
2256/* Compare rank A and B and return:
2257 0 if a = b
2258 1 if a is better than b
2259 -1 if b is better than a. */
2260
2261int
2262compare_ranks (struct rank a, struct rank b)
2263{
2264 if (a.rank == b.rank)
a9d5ef47
SW
2265 {
2266 if (a.subrank == b.subrank)
2267 return 0;
2268 if (a.subrank < b.subrank)
2269 return 1;
2270 if (a.subrank > b.subrank)
2271 return -1;
2272 }
6403aeea
SW
2273
2274 if (a.rank < b.rank)
2275 return 1;
2276
0963b4bd 2277 /* a.rank > b.rank */
6403aeea
SW
2278 return -1;
2279}
c5aa993b 2280
0963b4bd 2281/* Functions for overload resolution begin here. */
c906108c
SS
2282
2283/* Compare two badness vectors A and B and return the result.
7ba81444
MS
2284 0 => A and B are identical
2285 1 => A and B are incomparable
2286 2 => A is better than B
2287 3 => A is worse than B */
c906108c
SS
2288
2289int
fba45db2 2290compare_badness (struct badness_vector *a, struct badness_vector *b)
c906108c
SS
2291{
2292 int i;
2293 int tmp;
c5aa993b
JM
2294 short found_pos = 0; /* any positives in c? */
2295 short found_neg = 0; /* any negatives in c? */
2296
2297 /* differing lengths => incomparable */
c906108c
SS
2298 if (a->length != b->length)
2299 return 1;
2300
c5aa993b
JM
2301 /* Subtract b from a */
2302 for (i = 0; i < a->length; i++)
c906108c 2303 {
6403aeea 2304 tmp = compare_ranks (b->rank[i], a->rank[i]);
c906108c 2305 if (tmp > 0)
c5aa993b 2306 found_pos = 1;
c906108c 2307 else if (tmp < 0)
c5aa993b 2308 found_neg = 1;
c906108c
SS
2309 }
2310
2311 if (found_pos)
2312 {
2313 if (found_neg)
c5aa993b 2314 return 1; /* incomparable */
c906108c 2315 else
c5aa993b 2316 return 3; /* A > B */
c906108c 2317 }
c5aa993b
JM
2318 else
2319 /* no positives */
c906108c
SS
2320 {
2321 if (found_neg)
c5aa993b 2322 return 2; /* A < B */
c906108c 2323 else
c5aa993b 2324 return 0; /* A == B */
c906108c
SS
2325 }
2326}
2327
7ba81444
MS
2328/* Rank a function by comparing its parameter types (PARMS, length
2329 NPARMS), to the types of an argument list (ARGS, length NARGS).
2330 Return a pointer to a badness vector. This has NARGS + 1
2331 entries. */
c906108c
SS
2332
2333struct badness_vector *
7ba81444 2334rank_function (struct type **parms, int nparms,
da096638 2335 struct value **args, int nargs)
c906108c
SS
2336{
2337 int i;
c5aa993b 2338 struct badness_vector *bv;
c906108c
SS
2339 int min_len = nparms < nargs ? nparms : nargs;
2340
2341 bv = xmalloc (sizeof (struct badness_vector));
0963b4bd 2342 bv->length = nargs + 1; /* add 1 for the length-match rank. */
c906108c
SS
2343 bv->rank = xmalloc ((nargs + 1) * sizeof (int));
2344
2345 /* First compare the lengths of the supplied lists.
7ba81444 2346 If there is a mismatch, set it to a high value. */
c5aa993b 2347
c906108c 2348 /* pai/1997-06-03 FIXME: when we have debug info about default
7ba81444
MS
2349 arguments and ellipsis parameter lists, we should consider those
2350 and rank the length-match more finely. */
c906108c 2351
6403aeea
SW
2352 LENGTH_MATCH (bv) = (nargs != nparms)
2353 ? LENGTH_MISMATCH_BADNESS
2354 : EXACT_MATCH_BADNESS;
c906108c 2355
0963b4bd 2356 /* Now rank all the parameters of the candidate function. */
74cc24b0 2357 for (i = 1; i <= min_len; i++)
da096638
KS
2358 bv->rank[i] = rank_one_type (parms[i - 1], value_type (args[i - 1]),
2359 args[i - 1]);
c906108c 2360
0963b4bd 2361 /* If more arguments than parameters, add dummy entries. */
c5aa993b 2362 for (i = min_len + 1; i <= nargs; i++)
c906108c
SS
2363 bv->rank[i] = TOO_FEW_PARAMS_BADNESS;
2364
2365 return bv;
2366}
2367
973ccf8b
DJ
2368/* Compare the names of two integer types, assuming that any sign
2369 qualifiers have been checked already. We do it this way because
2370 there may be an "int" in the name of one of the types. */
2371
2372static int
2373integer_types_same_name_p (const char *first, const char *second)
2374{
2375 int first_p, second_p;
2376
7ba81444
MS
2377 /* If both are shorts, return 1; if neither is a short, keep
2378 checking. */
973ccf8b
DJ
2379 first_p = (strstr (first, "short") != NULL);
2380 second_p = (strstr (second, "short") != NULL);
2381 if (first_p && second_p)
2382 return 1;
2383 if (first_p || second_p)
2384 return 0;
2385
2386 /* Likewise for long. */
2387 first_p = (strstr (first, "long") != NULL);
2388 second_p = (strstr (second, "long") != NULL);
2389 if (first_p && second_p)
2390 return 1;
2391 if (first_p || second_p)
2392 return 0;
2393
2394 /* Likewise for char. */
2395 first_p = (strstr (first, "char") != NULL);
2396 second_p = (strstr (second, "char") != NULL);
2397 if (first_p && second_p)
2398 return 1;
2399 if (first_p || second_p)
2400 return 0;
2401
2402 /* They must both be ints. */
2403 return 1;
2404}
2405
7062b0a0
SW
2406/* Compares type A to type B returns 1 if the represent the same type
2407 0 otherwise. */
2408
2409static int
2410types_equal (struct type *a, struct type *b)
2411{
2412 /* Identical type pointers. */
2413 /* However, this still doesn't catch all cases of same type for b
2414 and a. The reason is that builtin types are different from
2415 the same ones constructed from the object. */
2416 if (a == b)
2417 return 1;
2418
2419 /* Resolve typedefs */
2420 if (TYPE_CODE (a) == TYPE_CODE_TYPEDEF)
2421 a = check_typedef (a);
2422 if (TYPE_CODE (b) == TYPE_CODE_TYPEDEF)
2423 b = check_typedef (b);
2424
2425 /* If after resolving typedefs a and b are not of the same type
2426 code then they are not equal. */
2427 if (TYPE_CODE (a) != TYPE_CODE (b))
2428 return 0;
2429
2430 /* If a and b are both pointers types or both reference types then
2431 they are equal of the same type iff the objects they refer to are
2432 of the same type. */
2433 if (TYPE_CODE (a) == TYPE_CODE_PTR
2434 || TYPE_CODE (a) == TYPE_CODE_REF)
2435 return types_equal (TYPE_TARGET_TYPE (a),
2436 TYPE_TARGET_TYPE (b));
2437
0963b4bd 2438 /* Well, damnit, if the names are exactly the same, I'll say they
7062b0a0
SW
2439 are exactly the same. This happens when we generate method
2440 stubs. The types won't point to the same address, but they
0963b4bd 2441 really are the same. */
7062b0a0
SW
2442
2443 if (TYPE_NAME (a) && TYPE_NAME (b)
2444 && strcmp (TYPE_NAME (a), TYPE_NAME (b)) == 0)
2445 return 1;
2446
2447 /* Check if identical after resolving typedefs. */
2448 if (a == b)
2449 return 1;
2450
2451 return 0;
2452}
2453
c906108c
SS
2454/* Compare one type (PARM) for compatibility with another (ARG).
2455 * PARM is intended to be the parameter type of a function; and
2456 * ARG is the supplied argument's type. This function tests if
2457 * the latter can be converted to the former.
da096638 2458 * VALUE is the argument's value or NULL if none (or called recursively)
c906108c
SS
2459 *
2460 * Return 0 if they are identical types;
2461 * Otherwise, return an integer which corresponds to how compatible
7ba81444
MS
2462 * PARM is to ARG. The higher the return value, the worse the match.
2463 * Generally the "bad" conversions are all uniformly assigned a 100. */
c906108c 2464
6403aeea 2465struct rank
da096638 2466rank_one_type (struct type *parm, struct type *arg, struct value *value)
c906108c 2467{
a9d5ef47 2468 struct rank rank = {0,0};
7062b0a0
SW
2469
2470 if (types_equal (parm, arg))
6403aeea 2471 return EXACT_MATCH_BADNESS;
c906108c
SS
2472
2473 /* Resolve typedefs */
2474 if (TYPE_CODE (parm) == TYPE_CODE_TYPEDEF)
2475 parm = check_typedef (parm);
2476 if (TYPE_CODE (arg) == TYPE_CODE_TYPEDEF)
2477 arg = check_typedef (arg);
2478
db577aea 2479 /* See through references, since we can almost make non-references
7ba81444 2480 references. */
db577aea 2481 if (TYPE_CODE (arg) == TYPE_CODE_REF)
da096638 2482 return (sum_ranks (rank_one_type (parm, TYPE_TARGET_TYPE (arg), NULL),
6403aeea 2483 REFERENCE_CONVERSION_BADNESS));
db577aea 2484 if (TYPE_CODE (parm) == TYPE_CODE_REF)
da096638 2485 return (sum_ranks (rank_one_type (TYPE_TARGET_TYPE (parm), arg, NULL),
6403aeea 2486 REFERENCE_CONVERSION_BADNESS));
5d161b24 2487 if (overload_debug)
7ba81444
MS
2488 /* Debugging only. */
2489 fprintf_filtered (gdb_stderr,
2490 "------ Arg is %s [%d], parm is %s [%d]\n",
2491 TYPE_NAME (arg), TYPE_CODE (arg),
2492 TYPE_NAME (parm), TYPE_CODE (parm));
c906108c 2493
0963b4bd 2494 /* x -> y means arg of type x being supplied for parameter of type y. */
c906108c
SS
2495
2496 switch (TYPE_CODE (parm))
2497 {
c5aa993b
JM
2498 case TYPE_CODE_PTR:
2499 switch (TYPE_CODE (arg))
2500 {
2501 case TYPE_CODE_PTR:
7062b0a0
SW
2502
2503 /* Allowed pointer conversions are:
2504 (a) pointer to void-pointer conversion. */
2505 if (TYPE_CODE (TYPE_TARGET_TYPE (parm)) == TYPE_CODE_VOID)
c5aa993b 2506 return VOID_PTR_CONVERSION_BADNESS;
7062b0a0
SW
2507
2508 /* (b) pointer to ancestor-pointer conversion. */
a9d5ef47
SW
2509 rank.subrank = distance_to_ancestor (TYPE_TARGET_TYPE (parm),
2510 TYPE_TARGET_TYPE (arg),
2511 0);
2512 if (rank.subrank >= 0)
2513 return sum_ranks (BASE_PTR_CONVERSION_BADNESS, rank);
7062b0a0
SW
2514
2515 return INCOMPATIBLE_TYPE_BADNESS;
c5aa993b 2516 case TYPE_CODE_ARRAY:
7062b0a0
SW
2517 if (types_equal (TYPE_TARGET_TYPE (parm),
2518 TYPE_TARGET_TYPE (arg)))
6403aeea 2519 return EXACT_MATCH_BADNESS;
7062b0a0 2520 return INCOMPATIBLE_TYPE_BADNESS;
c5aa993b 2521 case TYPE_CODE_FUNC:
da096638 2522 return rank_one_type (TYPE_TARGET_TYPE (parm), arg, NULL);
c5aa993b 2523 case TYPE_CODE_INT:
a451cb65 2524 if (value != NULL && TYPE_CODE (value_type (value)) == TYPE_CODE_INT)
da096638 2525 {
a451cb65
KS
2526 if (value_as_long (value) == 0)
2527 {
2528 /* Null pointer conversion: allow it to be cast to a pointer.
2529 [4.10.1 of C++ standard draft n3290] */
2530 return NULL_POINTER_CONVERSION_BADNESS;
2531 }
2532 else
2533 {
2534 /* If type checking is disabled, allow the conversion. */
2535 if (!strict_type_checking)
2536 return NS_INTEGER_POINTER_CONVERSION_BADNESS;
2537 }
da096638
KS
2538 }
2539 /* fall through */
c5aa993b 2540 case TYPE_CODE_ENUM:
4f2aea11 2541 case TYPE_CODE_FLAGS:
c5aa993b
JM
2542 case TYPE_CODE_CHAR:
2543 case TYPE_CODE_RANGE:
2544 case TYPE_CODE_BOOL:
c5aa993b
JM
2545 default:
2546 return INCOMPATIBLE_TYPE_BADNESS;
2547 }
2548 case TYPE_CODE_ARRAY:
2549 switch (TYPE_CODE (arg))
2550 {
2551 case TYPE_CODE_PTR:
2552 case TYPE_CODE_ARRAY:
7ba81444 2553 return rank_one_type (TYPE_TARGET_TYPE (parm),
da096638 2554 TYPE_TARGET_TYPE (arg), NULL);
c5aa993b
JM
2555 default:
2556 return INCOMPATIBLE_TYPE_BADNESS;
2557 }
2558 case TYPE_CODE_FUNC:
2559 switch (TYPE_CODE (arg))
2560 {
2561 case TYPE_CODE_PTR: /* funcptr -> func */
da096638 2562 return rank_one_type (parm, TYPE_TARGET_TYPE (arg), NULL);
c5aa993b
JM
2563 default:
2564 return INCOMPATIBLE_TYPE_BADNESS;
2565 }
2566 case TYPE_CODE_INT:
2567 switch (TYPE_CODE (arg))
2568 {
2569 case TYPE_CODE_INT:
2570 if (TYPE_LENGTH (arg) == TYPE_LENGTH (parm))
2571 {
2572 /* Deal with signed, unsigned, and plain chars and
7ba81444 2573 signed and unsigned ints. */
c5aa993b
JM
2574 if (TYPE_NOSIGN (parm))
2575 {
0963b4bd 2576 /* This case only for character types. */
7ba81444 2577 if (TYPE_NOSIGN (arg))
6403aeea 2578 return EXACT_MATCH_BADNESS; /* plain char -> plain char */
7ba81444
MS
2579 else /* signed/unsigned char -> plain char */
2580 return INTEGER_CONVERSION_BADNESS;
c5aa993b
JM
2581 }
2582 else if (TYPE_UNSIGNED (parm))
2583 {
2584 if (TYPE_UNSIGNED (arg))
2585 {
7ba81444
MS
2586 /* unsigned int -> unsigned int, or
2587 unsigned long -> unsigned long */
2588 if (integer_types_same_name_p (TYPE_NAME (parm),
2589 TYPE_NAME (arg)))
6403aeea 2590 return EXACT_MATCH_BADNESS;
7ba81444
MS
2591 else if (integer_types_same_name_p (TYPE_NAME (arg),
2592 "int")
2593 && integer_types_same_name_p (TYPE_NAME (parm),
2594 "long"))
3e43a32a
MS
2595 /* unsigned int -> unsigned long */
2596 return INTEGER_PROMOTION_BADNESS;
c5aa993b 2597 else
3e43a32a
MS
2598 /* unsigned long -> unsigned int */
2599 return INTEGER_CONVERSION_BADNESS;
c5aa993b
JM
2600 }
2601 else
2602 {
7ba81444
MS
2603 if (integer_types_same_name_p (TYPE_NAME (arg),
2604 "long")
2605 && integer_types_same_name_p (TYPE_NAME (parm),
2606 "int"))
3e43a32a
MS
2607 /* signed long -> unsigned int */
2608 return INTEGER_CONVERSION_BADNESS;
c5aa993b 2609 else
3e43a32a
MS
2610 /* signed int/long -> unsigned int/long */
2611 return INTEGER_CONVERSION_BADNESS;
c5aa993b
JM
2612 }
2613 }
2614 else if (!TYPE_NOSIGN (arg) && !TYPE_UNSIGNED (arg))
2615 {
7ba81444
MS
2616 if (integer_types_same_name_p (TYPE_NAME (parm),
2617 TYPE_NAME (arg)))
6403aeea 2618 return EXACT_MATCH_BADNESS;
7ba81444
MS
2619 else if (integer_types_same_name_p (TYPE_NAME (arg),
2620 "int")
2621 && integer_types_same_name_p (TYPE_NAME (parm),
2622 "long"))
c5aa993b
JM
2623 return INTEGER_PROMOTION_BADNESS;
2624 else
1c5cb38e 2625 return INTEGER_CONVERSION_BADNESS;
c5aa993b
JM
2626 }
2627 else
1c5cb38e 2628 return INTEGER_CONVERSION_BADNESS;
c5aa993b
JM
2629 }
2630 else if (TYPE_LENGTH (arg) < TYPE_LENGTH (parm))
2631 return INTEGER_PROMOTION_BADNESS;
2632 else
1c5cb38e 2633 return INTEGER_CONVERSION_BADNESS;
c5aa993b 2634 case TYPE_CODE_ENUM:
4f2aea11 2635 case TYPE_CODE_FLAGS:
c5aa993b
JM
2636 case TYPE_CODE_CHAR:
2637 case TYPE_CODE_RANGE:
2638 case TYPE_CODE_BOOL:
2639 return INTEGER_PROMOTION_BADNESS;
2640 case TYPE_CODE_FLT:
2641 return INT_FLOAT_CONVERSION_BADNESS;
2642 case TYPE_CODE_PTR:
2643 return NS_POINTER_CONVERSION_BADNESS;
2644 default:
2645 return INCOMPATIBLE_TYPE_BADNESS;
2646 }
2647 break;
2648 case TYPE_CODE_ENUM:
2649 switch (TYPE_CODE (arg))
2650 {
2651 case TYPE_CODE_INT:
2652 case TYPE_CODE_CHAR:
2653 case TYPE_CODE_RANGE:
2654 case TYPE_CODE_BOOL:
2655 case TYPE_CODE_ENUM:
1c5cb38e 2656 return INTEGER_CONVERSION_BADNESS;
c5aa993b
JM
2657 case TYPE_CODE_FLT:
2658 return INT_FLOAT_CONVERSION_BADNESS;
2659 default:
2660 return INCOMPATIBLE_TYPE_BADNESS;
2661 }
2662 break;
2663 case TYPE_CODE_CHAR:
2664 switch (TYPE_CODE (arg))
2665 {
2666 case TYPE_CODE_RANGE:
2667 case TYPE_CODE_BOOL:
2668 case TYPE_CODE_ENUM:
1c5cb38e 2669 return INTEGER_CONVERSION_BADNESS;
c5aa993b
JM
2670 case TYPE_CODE_FLT:
2671 return INT_FLOAT_CONVERSION_BADNESS;
2672 case TYPE_CODE_INT:
2673 if (TYPE_LENGTH (arg) > TYPE_LENGTH (parm))
1c5cb38e 2674 return INTEGER_CONVERSION_BADNESS;
c5aa993b
JM
2675 else if (TYPE_LENGTH (arg) < TYPE_LENGTH (parm))
2676 return INTEGER_PROMOTION_BADNESS;
2677 /* >>> !! else fall through !! <<< */
2678 case TYPE_CODE_CHAR:
7ba81444
MS
2679 /* Deal with signed, unsigned, and plain chars for C++ and
2680 with int cases falling through from previous case. */
c5aa993b
JM
2681 if (TYPE_NOSIGN (parm))
2682 {
2683 if (TYPE_NOSIGN (arg))
6403aeea 2684 return EXACT_MATCH_BADNESS;
c5aa993b 2685 else
1c5cb38e 2686 return INTEGER_CONVERSION_BADNESS;
c5aa993b
JM
2687 }
2688 else if (TYPE_UNSIGNED (parm))
2689 {
2690 if (TYPE_UNSIGNED (arg))
6403aeea 2691 return EXACT_MATCH_BADNESS;
c5aa993b
JM
2692 else
2693 return INTEGER_PROMOTION_BADNESS;
2694 }
2695 else if (!TYPE_NOSIGN (arg) && !TYPE_UNSIGNED (arg))
6403aeea 2696 return EXACT_MATCH_BADNESS;
c5aa993b 2697 else
1c5cb38e 2698 return INTEGER_CONVERSION_BADNESS;
c5aa993b
JM
2699 default:
2700 return INCOMPATIBLE_TYPE_BADNESS;
2701 }
2702 break;
2703 case TYPE_CODE_RANGE:
2704 switch (TYPE_CODE (arg))
2705 {
2706 case TYPE_CODE_INT:
2707 case TYPE_CODE_CHAR:
2708 case TYPE_CODE_RANGE:
2709 case TYPE_CODE_BOOL:
2710 case TYPE_CODE_ENUM:
1c5cb38e 2711 return INTEGER_CONVERSION_BADNESS;
c5aa993b
JM
2712 case TYPE_CODE_FLT:
2713 return INT_FLOAT_CONVERSION_BADNESS;
2714 default:
2715 return INCOMPATIBLE_TYPE_BADNESS;
2716 }
2717 break;
2718 case TYPE_CODE_BOOL:
2719 switch (TYPE_CODE (arg))
2720 {
5b4f6e25
KS
2721 /* n3290 draft, section 4.12.1 (conv.bool):
2722
2723 "A prvalue of arithmetic, unscoped enumeration, pointer, or
2724 pointer to member type can be converted to a prvalue of type
2725 bool. A zero value, null pointer value, or null member pointer
2726 value is converted to false; any other value is converted to
2727 true. A prvalue of type std::nullptr_t can be converted to a
2728 prvalue of type bool; the resulting value is false." */
c5aa993b
JM
2729 case TYPE_CODE_INT:
2730 case TYPE_CODE_CHAR:
c5aa993b
JM
2731 case TYPE_CODE_ENUM:
2732 case TYPE_CODE_FLT:
5b4f6e25 2733 case TYPE_CODE_MEMBERPTR:
c5aa993b 2734 case TYPE_CODE_PTR:
5b4f6e25
KS
2735 return BOOL_CONVERSION_BADNESS;
2736 case TYPE_CODE_RANGE:
2737 return INCOMPATIBLE_TYPE_BADNESS;
c5aa993b 2738 case TYPE_CODE_BOOL:
6403aeea 2739 return EXACT_MATCH_BADNESS;
c5aa993b
JM
2740 default:
2741 return INCOMPATIBLE_TYPE_BADNESS;
2742 }
2743 break;
2744 case TYPE_CODE_FLT:
2745 switch (TYPE_CODE (arg))
2746 {
2747 case TYPE_CODE_FLT:
2748 if (TYPE_LENGTH (arg) < TYPE_LENGTH (parm))
2749 return FLOAT_PROMOTION_BADNESS;
2750 else if (TYPE_LENGTH (arg) == TYPE_LENGTH (parm))
6403aeea 2751 return EXACT_MATCH_BADNESS;
c5aa993b
JM
2752 else
2753 return FLOAT_CONVERSION_BADNESS;
2754 case TYPE_CODE_INT:
2755 case TYPE_CODE_BOOL:
2756 case TYPE_CODE_ENUM:
2757 case TYPE_CODE_RANGE:
2758 case TYPE_CODE_CHAR:
2759 return INT_FLOAT_CONVERSION_BADNESS;
2760 default:
2761 return INCOMPATIBLE_TYPE_BADNESS;
2762 }
2763 break;
2764 case TYPE_CODE_COMPLEX:
2765 switch (TYPE_CODE (arg))
7ba81444 2766 { /* Strictly not needed for C++, but... */
c5aa993b
JM
2767 case TYPE_CODE_FLT:
2768 return FLOAT_PROMOTION_BADNESS;
2769 case TYPE_CODE_COMPLEX:
6403aeea 2770 return EXACT_MATCH_BADNESS;
c5aa993b
JM
2771 default:
2772 return INCOMPATIBLE_TYPE_BADNESS;
2773 }
2774 break;
2775 case TYPE_CODE_STRUCT:
0963b4bd 2776 /* currently same as TYPE_CODE_CLASS. */
c5aa993b
JM
2777 switch (TYPE_CODE (arg))
2778 {
2779 case TYPE_CODE_STRUCT:
2780 /* Check for derivation */
a9d5ef47
SW
2781 rank.subrank = distance_to_ancestor (parm, arg, 0);
2782 if (rank.subrank >= 0)
2783 return sum_ranks (BASE_CONVERSION_BADNESS, rank);
c5aa993b
JM
2784 /* else fall through */
2785 default:
2786 return INCOMPATIBLE_TYPE_BADNESS;
2787 }
2788 break;
2789 case TYPE_CODE_UNION:
2790 switch (TYPE_CODE (arg))
2791 {
2792 case TYPE_CODE_UNION:
2793 default:
2794 return INCOMPATIBLE_TYPE_BADNESS;
2795 }
2796 break;
0d5de010 2797 case TYPE_CODE_MEMBERPTR:
c5aa993b
JM
2798 switch (TYPE_CODE (arg))
2799 {
2800 default:
2801 return INCOMPATIBLE_TYPE_BADNESS;
2802 }
2803 break;
2804 case TYPE_CODE_METHOD:
2805 switch (TYPE_CODE (arg))
2806 {
2807
2808 default:
2809 return INCOMPATIBLE_TYPE_BADNESS;
2810 }
2811 break;
2812 case TYPE_CODE_REF:
2813 switch (TYPE_CODE (arg))
2814 {
2815
2816 default:
2817 return INCOMPATIBLE_TYPE_BADNESS;
2818 }
2819
2820 break;
2821 case TYPE_CODE_SET:
2822 switch (TYPE_CODE (arg))
2823 {
2824 /* Not in C++ */
2825 case TYPE_CODE_SET:
7ba81444 2826 return rank_one_type (TYPE_FIELD_TYPE (parm, 0),
da096638 2827 TYPE_FIELD_TYPE (arg, 0), NULL);
c5aa993b
JM
2828 default:
2829 return INCOMPATIBLE_TYPE_BADNESS;
2830 }
2831 break;
2832 case TYPE_CODE_VOID:
2833 default:
2834 return INCOMPATIBLE_TYPE_BADNESS;
2835 } /* switch (TYPE_CODE (arg)) */
c906108c
SS
2836}
2837
0963b4bd 2838/* End of functions for overload resolution. */
5212577a
DE
2839\f
2840/* Routines to pretty-print types. */
c906108c 2841
c906108c 2842static void
fba45db2 2843print_bit_vector (B_TYPE *bits, int nbits)
c906108c
SS
2844{
2845 int bitno;
2846
2847 for (bitno = 0; bitno < nbits; bitno++)
2848 {
2849 if ((bitno % 8) == 0)
2850 {
2851 puts_filtered (" ");
2852 }
2853 if (B_TST (bits, bitno))
a3f17187 2854 printf_filtered (("1"));
c906108c 2855 else
a3f17187 2856 printf_filtered (("0"));
c906108c
SS
2857 }
2858}
2859
ad2f7632 2860/* Note the first arg should be the "this" pointer, we may not want to
7ba81444
MS
2861 include it since we may get into a infinitely recursive
2862 situation. */
c906108c
SS
2863
2864static void
ad2f7632 2865print_arg_types (struct field *args, int nargs, int spaces)
c906108c
SS
2866{
2867 if (args != NULL)
2868 {
ad2f7632
DJ
2869 int i;
2870
2871 for (i = 0; i < nargs; i++)
2872 recursive_dump_type (args[i].type, spaces + 2);
c906108c
SS
2873 }
2874}
2875
d6a843b5
JK
2876int
2877field_is_static (struct field *f)
2878{
2879 /* "static" fields are the fields whose location is not relative
2880 to the address of the enclosing struct. It would be nice to
2881 have a dedicated flag that would be set for static fields when
2882 the type is being created. But in practice, checking the field
254e6b9e 2883 loc_kind should give us an accurate answer. */
d6a843b5
JK
2884 return (FIELD_LOC_KIND (*f) == FIELD_LOC_KIND_PHYSNAME
2885 || FIELD_LOC_KIND (*f) == FIELD_LOC_KIND_PHYSADDR);
2886}
2887
c906108c 2888static void
fba45db2 2889dump_fn_fieldlists (struct type *type, int spaces)
c906108c
SS
2890{
2891 int method_idx;
2892 int overload_idx;
2893 struct fn_field *f;
2894
2895 printfi_filtered (spaces, "fn_fieldlists ");
d4f3574e 2896 gdb_print_host_address (TYPE_FN_FIELDLISTS (type), gdb_stdout);
c906108c
SS
2897 printf_filtered ("\n");
2898 for (method_idx = 0; method_idx < TYPE_NFN_FIELDS (type); method_idx++)
2899 {
2900 f = TYPE_FN_FIELDLIST1 (type, method_idx);
2901 printfi_filtered (spaces + 2, "[%d] name '%s' (",
2902 method_idx,
2903 TYPE_FN_FIELDLIST_NAME (type, method_idx));
d4f3574e
SS
2904 gdb_print_host_address (TYPE_FN_FIELDLIST_NAME (type, method_idx),
2905 gdb_stdout);
a3f17187 2906 printf_filtered (_(") length %d\n"),
c906108c
SS
2907 TYPE_FN_FIELDLIST_LENGTH (type, method_idx));
2908 for (overload_idx = 0;
2909 overload_idx < TYPE_FN_FIELDLIST_LENGTH (type, method_idx);
2910 overload_idx++)
2911 {
2912 printfi_filtered (spaces + 4, "[%d] physname '%s' (",
2913 overload_idx,
2914 TYPE_FN_FIELD_PHYSNAME (f, overload_idx));
d4f3574e
SS
2915 gdb_print_host_address (TYPE_FN_FIELD_PHYSNAME (f, overload_idx),
2916 gdb_stdout);
c906108c
SS
2917 printf_filtered (")\n");
2918 printfi_filtered (spaces + 8, "type ");
7ba81444
MS
2919 gdb_print_host_address (TYPE_FN_FIELD_TYPE (f, overload_idx),
2920 gdb_stdout);
c906108c
SS
2921 printf_filtered ("\n");
2922
2923 recursive_dump_type (TYPE_FN_FIELD_TYPE (f, overload_idx),
2924 spaces + 8 + 2);
2925
2926 printfi_filtered (spaces + 8, "args ");
7ba81444
MS
2927 gdb_print_host_address (TYPE_FN_FIELD_ARGS (f, overload_idx),
2928 gdb_stdout);
c906108c
SS
2929 printf_filtered ("\n");
2930
ad2f7632 2931 print_arg_types (TYPE_FN_FIELD_ARGS (f, overload_idx),
7ba81444
MS
2932 TYPE_NFIELDS (TYPE_FN_FIELD_TYPE (f,
2933 overload_idx)),
ad2f7632 2934 spaces);
c906108c 2935 printfi_filtered (spaces + 8, "fcontext ");
d4f3574e
SS
2936 gdb_print_host_address (TYPE_FN_FIELD_FCONTEXT (f, overload_idx),
2937 gdb_stdout);
c906108c
SS
2938 printf_filtered ("\n");
2939
2940 printfi_filtered (spaces + 8, "is_const %d\n",
2941 TYPE_FN_FIELD_CONST (f, overload_idx));
2942 printfi_filtered (spaces + 8, "is_volatile %d\n",
2943 TYPE_FN_FIELD_VOLATILE (f, overload_idx));
2944 printfi_filtered (spaces + 8, "is_private %d\n",
2945 TYPE_FN_FIELD_PRIVATE (f, overload_idx));
2946 printfi_filtered (spaces + 8, "is_protected %d\n",
2947 TYPE_FN_FIELD_PROTECTED (f, overload_idx));
2948 printfi_filtered (spaces + 8, "is_stub %d\n",
2949 TYPE_FN_FIELD_STUB (f, overload_idx));
2950 printfi_filtered (spaces + 8, "voffset %u\n",
2951 TYPE_FN_FIELD_VOFFSET (f, overload_idx));
2952 }
2953 }
2954}
2955
2956static void
fba45db2 2957print_cplus_stuff (struct type *type, int spaces)
c906108c
SS
2958{
2959 printfi_filtered (spaces, "n_baseclasses %d\n",
2960 TYPE_N_BASECLASSES (type));
2961 printfi_filtered (spaces, "nfn_fields %d\n",
2962 TYPE_NFN_FIELDS (type));
c906108c
SS
2963 if (TYPE_N_BASECLASSES (type) > 0)
2964 {
2965 printfi_filtered (spaces, "virtual_field_bits (%d bits at *",
2966 TYPE_N_BASECLASSES (type));
7ba81444
MS
2967 gdb_print_host_address (TYPE_FIELD_VIRTUAL_BITS (type),
2968 gdb_stdout);
c906108c
SS
2969 printf_filtered (")");
2970
2971 print_bit_vector (TYPE_FIELD_VIRTUAL_BITS (type),
2972 TYPE_N_BASECLASSES (type));
2973 puts_filtered ("\n");
2974 }
2975 if (TYPE_NFIELDS (type) > 0)
2976 {
2977 if (TYPE_FIELD_PRIVATE_BITS (type) != NULL)
2978 {
7ba81444
MS
2979 printfi_filtered (spaces,
2980 "private_field_bits (%d bits at *",
c906108c 2981 TYPE_NFIELDS (type));
7ba81444
MS
2982 gdb_print_host_address (TYPE_FIELD_PRIVATE_BITS (type),
2983 gdb_stdout);
c906108c
SS
2984 printf_filtered (")");
2985 print_bit_vector (TYPE_FIELD_PRIVATE_BITS (type),
2986 TYPE_NFIELDS (type));
2987 puts_filtered ("\n");
2988 }
2989 if (TYPE_FIELD_PROTECTED_BITS (type) != NULL)
2990 {
7ba81444
MS
2991 printfi_filtered (spaces,
2992 "protected_field_bits (%d bits at *",
c906108c 2993 TYPE_NFIELDS (type));
7ba81444
MS
2994 gdb_print_host_address (TYPE_FIELD_PROTECTED_BITS (type),
2995 gdb_stdout);
c906108c
SS
2996 printf_filtered (")");
2997 print_bit_vector (TYPE_FIELD_PROTECTED_BITS (type),
2998 TYPE_NFIELDS (type));
2999 puts_filtered ("\n");
3000 }
3001 }
3002 if (TYPE_NFN_FIELDS (type) > 0)
3003 {
3004 dump_fn_fieldlists (type, spaces);
3005 }
3006}
3007
b4ba55a1
JB
3008/* Print the contents of the TYPE's type_specific union, assuming that
3009 its type-specific kind is TYPE_SPECIFIC_GNAT_STUFF. */
3010
3011static void
3012print_gnat_stuff (struct type *type, int spaces)
3013{
3014 struct type *descriptive_type = TYPE_DESCRIPTIVE_TYPE (type);
3015
3016 recursive_dump_type (descriptive_type, spaces + 2);
3017}
3018
c906108c
SS
3019static struct obstack dont_print_type_obstack;
3020
3021void
fba45db2 3022recursive_dump_type (struct type *type, int spaces)
c906108c
SS
3023{
3024 int idx;
3025
3026 if (spaces == 0)
3027 obstack_begin (&dont_print_type_obstack, 0);
3028
3029 if (TYPE_NFIELDS (type) > 0
b4ba55a1 3030 || (HAVE_CPLUS_STRUCT (type) && TYPE_NFN_FIELDS (type) > 0))
c906108c
SS
3031 {
3032 struct type **first_dont_print
7ba81444 3033 = (struct type **) obstack_base (&dont_print_type_obstack);
c906108c 3034
7ba81444
MS
3035 int i = (struct type **)
3036 obstack_next_free (&dont_print_type_obstack) - first_dont_print;
c906108c
SS
3037
3038 while (--i >= 0)
3039 {
3040 if (type == first_dont_print[i])
3041 {
3042 printfi_filtered (spaces, "type node ");
d4f3574e 3043 gdb_print_host_address (type, gdb_stdout);
a3f17187 3044 printf_filtered (_(" <same as already seen type>\n"));
c906108c
SS
3045 return;
3046 }
3047 }
3048
3049 obstack_ptr_grow (&dont_print_type_obstack, type);
3050 }
3051
3052 printfi_filtered (spaces, "type node ");
d4f3574e 3053 gdb_print_host_address (type, gdb_stdout);
c906108c
SS
3054 printf_filtered ("\n");
3055 printfi_filtered (spaces, "name '%s' (",
3056 TYPE_NAME (type) ? TYPE_NAME (type) : "<NULL>");
d4f3574e 3057 gdb_print_host_address (TYPE_NAME (type), gdb_stdout);
c906108c 3058 printf_filtered (")\n");
e9e79dd9
FF
3059 printfi_filtered (spaces, "tagname '%s' (",
3060 TYPE_TAG_NAME (type) ? TYPE_TAG_NAME (type) : "<NULL>");
3061 gdb_print_host_address (TYPE_TAG_NAME (type), gdb_stdout);
3062 printf_filtered (")\n");
c906108c
SS
3063 printfi_filtered (spaces, "code 0x%x ", TYPE_CODE (type));
3064 switch (TYPE_CODE (type))
3065 {
c5aa993b
JM
3066 case TYPE_CODE_UNDEF:
3067 printf_filtered ("(TYPE_CODE_UNDEF)");
3068 break;
3069 case TYPE_CODE_PTR:
3070 printf_filtered ("(TYPE_CODE_PTR)");
3071 break;
3072 case TYPE_CODE_ARRAY:
3073 printf_filtered ("(TYPE_CODE_ARRAY)");
3074 break;
3075 case TYPE_CODE_STRUCT:
3076 printf_filtered ("(TYPE_CODE_STRUCT)");
3077 break;
3078 case TYPE_CODE_UNION:
3079 printf_filtered ("(TYPE_CODE_UNION)");
3080 break;
3081 case TYPE_CODE_ENUM:
3082 printf_filtered ("(TYPE_CODE_ENUM)");
3083 break;
4f2aea11
MK
3084 case TYPE_CODE_FLAGS:
3085 printf_filtered ("(TYPE_CODE_FLAGS)");
3086 break;
c5aa993b
JM
3087 case TYPE_CODE_FUNC:
3088 printf_filtered ("(TYPE_CODE_FUNC)");
3089 break;
3090 case TYPE_CODE_INT:
3091 printf_filtered ("(TYPE_CODE_INT)");
3092 break;
3093 case TYPE_CODE_FLT:
3094 printf_filtered ("(TYPE_CODE_FLT)");
3095 break;
3096 case TYPE_CODE_VOID:
3097 printf_filtered ("(TYPE_CODE_VOID)");
3098 break;
3099 case TYPE_CODE_SET:
3100 printf_filtered ("(TYPE_CODE_SET)");
3101 break;
3102 case TYPE_CODE_RANGE:
3103 printf_filtered ("(TYPE_CODE_RANGE)");
3104 break;
3105 case TYPE_CODE_STRING:
3106 printf_filtered ("(TYPE_CODE_STRING)");
3107 break;
3108 case TYPE_CODE_ERROR:
3109 printf_filtered ("(TYPE_CODE_ERROR)");
3110 break;
0d5de010
DJ
3111 case TYPE_CODE_MEMBERPTR:
3112 printf_filtered ("(TYPE_CODE_MEMBERPTR)");
3113 break;
3114 case TYPE_CODE_METHODPTR:
3115 printf_filtered ("(TYPE_CODE_METHODPTR)");
c5aa993b
JM
3116 break;
3117 case TYPE_CODE_METHOD:
3118 printf_filtered ("(TYPE_CODE_METHOD)");
3119 break;
3120 case TYPE_CODE_REF:
3121 printf_filtered ("(TYPE_CODE_REF)");
3122 break;
3123 case TYPE_CODE_CHAR:
3124 printf_filtered ("(TYPE_CODE_CHAR)");
3125 break;
3126 case TYPE_CODE_BOOL:
3127 printf_filtered ("(TYPE_CODE_BOOL)");
3128 break;
e9e79dd9
FF
3129 case TYPE_CODE_COMPLEX:
3130 printf_filtered ("(TYPE_CODE_COMPLEX)");
3131 break;
c5aa993b
JM
3132 case TYPE_CODE_TYPEDEF:
3133 printf_filtered ("(TYPE_CODE_TYPEDEF)");
3134 break;
5c4e30ca
DC
3135 case TYPE_CODE_NAMESPACE:
3136 printf_filtered ("(TYPE_CODE_NAMESPACE)");
3137 break;
c5aa993b
JM
3138 default:
3139 printf_filtered ("(UNKNOWN TYPE CODE)");
3140 break;
c906108c
SS
3141 }
3142 puts_filtered ("\n");
3143 printfi_filtered (spaces, "length %d\n", TYPE_LENGTH (type));
e9bb382b
UW
3144 if (TYPE_OBJFILE_OWNED (type))
3145 {
3146 printfi_filtered (spaces, "objfile ");
3147 gdb_print_host_address (TYPE_OWNER (type).objfile, gdb_stdout);
3148 }
3149 else
3150 {
3151 printfi_filtered (spaces, "gdbarch ");
3152 gdb_print_host_address (TYPE_OWNER (type).gdbarch, gdb_stdout);
3153 }
c906108c
SS
3154 printf_filtered ("\n");
3155 printfi_filtered (spaces, "target_type ");
d4f3574e 3156 gdb_print_host_address (TYPE_TARGET_TYPE (type), gdb_stdout);
c906108c
SS
3157 printf_filtered ("\n");
3158 if (TYPE_TARGET_TYPE (type) != NULL)
3159 {
3160 recursive_dump_type (TYPE_TARGET_TYPE (type), spaces + 2);
3161 }
3162 printfi_filtered (spaces, "pointer_type ");
d4f3574e 3163 gdb_print_host_address (TYPE_POINTER_TYPE (type), gdb_stdout);
c906108c
SS
3164 printf_filtered ("\n");
3165 printfi_filtered (spaces, "reference_type ");
d4f3574e 3166 gdb_print_host_address (TYPE_REFERENCE_TYPE (type), gdb_stdout);
c906108c 3167 printf_filtered ("\n");
2fdde8f8
DJ
3168 printfi_filtered (spaces, "type_chain ");
3169 gdb_print_host_address (TYPE_CHAIN (type), gdb_stdout);
e9e79dd9 3170 printf_filtered ("\n");
7ba81444
MS
3171 printfi_filtered (spaces, "instance_flags 0x%x",
3172 TYPE_INSTANCE_FLAGS (type));
2fdde8f8
DJ
3173 if (TYPE_CONST (type))
3174 {
3175 puts_filtered (" TYPE_FLAG_CONST");
3176 }
3177 if (TYPE_VOLATILE (type))
3178 {
3179 puts_filtered (" TYPE_FLAG_VOLATILE");
3180 }
3181 if (TYPE_CODE_SPACE (type))
3182 {
3183 puts_filtered (" TYPE_FLAG_CODE_SPACE");
3184 }
3185 if (TYPE_DATA_SPACE (type))
3186 {
3187 puts_filtered (" TYPE_FLAG_DATA_SPACE");
3188 }
8b2dbe47
KB
3189 if (TYPE_ADDRESS_CLASS_1 (type))
3190 {
3191 puts_filtered (" TYPE_FLAG_ADDRESS_CLASS_1");
3192 }
3193 if (TYPE_ADDRESS_CLASS_2 (type))
3194 {
3195 puts_filtered (" TYPE_FLAG_ADDRESS_CLASS_2");
3196 }
2fdde8f8 3197 puts_filtered ("\n");
876cecd0
TT
3198
3199 printfi_filtered (spaces, "flags");
762a036f 3200 if (TYPE_UNSIGNED (type))
c906108c
SS
3201 {
3202 puts_filtered (" TYPE_FLAG_UNSIGNED");
3203 }
762a036f
FF
3204 if (TYPE_NOSIGN (type))
3205 {
3206 puts_filtered (" TYPE_FLAG_NOSIGN");
3207 }
3208 if (TYPE_STUB (type))
c906108c
SS
3209 {
3210 puts_filtered (" TYPE_FLAG_STUB");
3211 }
762a036f
FF
3212 if (TYPE_TARGET_STUB (type))
3213 {
3214 puts_filtered (" TYPE_FLAG_TARGET_STUB");
3215 }
3216 if (TYPE_STATIC (type))
3217 {
3218 puts_filtered (" TYPE_FLAG_STATIC");
3219 }
762a036f
FF
3220 if (TYPE_PROTOTYPED (type))
3221 {
3222 puts_filtered (" TYPE_FLAG_PROTOTYPED");
3223 }
3224 if (TYPE_INCOMPLETE (type))
3225 {
3226 puts_filtered (" TYPE_FLAG_INCOMPLETE");
3227 }
762a036f
FF
3228 if (TYPE_VARARGS (type))
3229 {
3230 puts_filtered (" TYPE_FLAG_VARARGS");
3231 }
f5f8a009
EZ
3232 /* This is used for things like AltiVec registers on ppc. Gcc emits
3233 an attribute for the array type, which tells whether or not we
3234 have a vector, instead of a regular array. */
3235 if (TYPE_VECTOR (type))
3236 {
3237 puts_filtered (" TYPE_FLAG_VECTOR");
3238 }
876cecd0
TT
3239 if (TYPE_FIXED_INSTANCE (type))
3240 {
3241 puts_filtered (" TYPE_FIXED_INSTANCE");
3242 }
3243 if (TYPE_STUB_SUPPORTED (type))
3244 {
3245 puts_filtered (" TYPE_STUB_SUPPORTED");
3246 }
3247 if (TYPE_NOTTEXT (type))
3248 {
3249 puts_filtered (" TYPE_NOTTEXT");
3250 }
c906108c
SS
3251 puts_filtered ("\n");
3252 printfi_filtered (spaces, "nfields %d ", TYPE_NFIELDS (type));
d4f3574e 3253 gdb_print_host_address (TYPE_FIELDS (type), gdb_stdout);
c906108c
SS
3254 puts_filtered ("\n");
3255 for (idx = 0; idx < TYPE_NFIELDS (type); idx++)
3256 {
14e75d8e
JK
3257 if (TYPE_CODE (type) == TYPE_CODE_ENUM)
3258 printfi_filtered (spaces + 2,
3259 "[%d] enumval %s type ",
3260 idx, plongest (TYPE_FIELD_ENUMVAL (type, idx)));
3261 else
3262 printfi_filtered (spaces + 2,
3263 "[%d] bitpos %d bitsize %d type ",
3264 idx, TYPE_FIELD_BITPOS (type, idx),
3265 TYPE_FIELD_BITSIZE (type, idx));
d4f3574e 3266 gdb_print_host_address (TYPE_FIELD_TYPE (type, idx), gdb_stdout);
c906108c
SS
3267 printf_filtered (" name '%s' (",
3268 TYPE_FIELD_NAME (type, idx) != NULL
3269 ? TYPE_FIELD_NAME (type, idx)
3270 : "<NULL>");
d4f3574e 3271 gdb_print_host_address (TYPE_FIELD_NAME (type, idx), gdb_stdout);
c906108c
SS
3272 printf_filtered (")\n");
3273 if (TYPE_FIELD_TYPE (type, idx) != NULL)
3274 {
3275 recursive_dump_type (TYPE_FIELD_TYPE (type, idx), spaces + 4);
3276 }
3277 }
43bbcdc2
PH
3278 if (TYPE_CODE (type) == TYPE_CODE_RANGE)
3279 {
3280 printfi_filtered (spaces, "low %s%s high %s%s\n",
3281 plongest (TYPE_LOW_BOUND (type)),
3282 TYPE_LOW_BOUND_UNDEFINED (type) ? " (undefined)" : "",
3283 plongest (TYPE_HIGH_BOUND (type)),
3e43a32a
MS
3284 TYPE_HIGH_BOUND_UNDEFINED (type)
3285 ? " (undefined)" : "");
43bbcdc2 3286 }
c906108c 3287 printfi_filtered (spaces, "vptr_basetype ");
d4f3574e 3288 gdb_print_host_address (TYPE_VPTR_BASETYPE (type), gdb_stdout);
c906108c
SS
3289 puts_filtered ("\n");
3290 if (TYPE_VPTR_BASETYPE (type) != NULL)
3291 {
3292 recursive_dump_type (TYPE_VPTR_BASETYPE (type), spaces + 2);
3293 }
7ba81444
MS
3294 printfi_filtered (spaces, "vptr_fieldno %d\n",
3295 TYPE_VPTR_FIELDNO (type));
c906108c 3296
b4ba55a1
JB
3297 switch (TYPE_SPECIFIC_FIELD (type))
3298 {
3299 case TYPE_SPECIFIC_CPLUS_STUFF:
3300 printfi_filtered (spaces, "cplus_stuff ");
3301 gdb_print_host_address (TYPE_CPLUS_SPECIFIC (type),
3302 gdb_stdout);
3303 puts_filtered ("\n");
3304 print_cplus_stuff (type, spaces);
3305 break;
8da61cc4 3306
b4ba55a1
JB
3307 case TYPE_SPECIFIC_GNAT_STUFF:
3308 printfi_filtered (spaces, "gnat_stuff ");
3309 gdb_print_host_address (TYPE_GNAT_SPECIFIC (type), gdb_stdout);
3310 puts_filtered ("\n");
3311 print_gnat_stuff (type, spaces);
3312 break;
701c159d 3313
b4ba55a1
JB
3314 case TYPE_SPECIFIC_FLOATFORMAT:
3315 printfi_filtered (spaces, "floatformat ");
3316 if (TYPE_FLOATFORMAT (type) == NULL)
3317 puts_filtered ("(null)");
3318 else
3319 {
3320 puts_filtered ("{ ");
3321 if (TYPE_FLOATFORMAT (type)[0] == NULL
3322 || TYPE_FLOATFORMAT (type)[0]->name == NULL)
3323 puts_filtered ("(null)");
3324 else
3325 puts_filtered (TYPE_FLOATFORMAT (type)[0]->name);
3326
3327 puts_filtered (", ");
3328 if (TYPE_FLOATFORMAT (type)[1] == NULL
3329 || TYPE_FLOATFORMAT (type)[1]->name == NULL)
3330 puts_filtered ("(null)");
3331 else
3332 puts_filtered (TYPE_FLOATFORMAT (type)[1]->name);
3333
3334 puts_filtered (" }");
3335 }
3336 puts_filtered ("\n");
3337 break;
c906108c 3338
b6cdc2c1 3339 case TYPE_SPECIFIC_FUNC:
b4ba55a1
JB
3340 printfi_filtered (spaces, "calling_convention %d\n",
3341 TYPE_CALLING_CONVENTION (type));
b6cdc2c1 3342 /* tail_call_list is not printed. */
b4ba55a1 3343 break;
c906108c 3344 }
b4ba55a1 3345
c906108c
SS
3346 if (spaces == 0)
3347 obstack_free (&dont_print_type_obstack, NULL);
3348}
5212577a 3349\f
ae5a43e0
DJ
3350/* Trivial helpers for the libiberty hash table, for mapping one
3351 type to another. */
3352
3353struct type_pair
3354{
3355 struct type *old, *new;
3356};
3357
3358static hashval_t
3359type_pair_hash (const void *item)
3360{
3361 const struct type_pair *pair = item;
d8734c88 3362
ae5a43e0
DJ
3363 return htab_hash_pointer (pair->old);
3364}
3365
3366static int
3367type_pair_eq (const void *item_lhs, const void *item_rhs)
3368{
3369 const struct type_pair *lhs = item_lhs, *rhs = item_rhs;
d8734c88 3370
ae5a43e0
DJ
3371 return lhs->old == rhs->old;
3372}
3373
3374/* Allocate the hash table used by copy_type_recursive to walk
3375 types without duplicates. We use OBJFILE's obstack, because
3376 OBJFILE is about to be deleted. */
3377
3378htab_t
3379create_copied_types_hash (struct objfile *objfile)
3380{
3381 return htab_create_alloc_ex (1, type_pair_hash, type_pair_eq,
3382 NULL, &objfile->objfile_obstack,
3383 hashtab_obstack_allocate,
3384 dummy_obstack_deallocate);
3385}
3386
7ba81444
MS
3387/* Recursively copy (deep copy) TYPE, if it is associated with
3388 OBJFILE. Return a new type allocated using malloc, a saved type if
3389 we have already visited TYPE (using COPIED_TYPES), or TYPE if it is
3390 not associated with OBJFILE. */
ae5a43e0
DJ
3391
3392struct type *
7ba81444
MS
3393copy_type_recursive (struct objfile *objfile,
3394 struct type *type,
ae5a43e0
DJ
3395 htab_t copied_types)
3396{
3397 struct type_pair *stored, pair;
3398 void **slot;
3399 struct type *new_type;
3400
e9bb382b 3401 if (! TYPE_OBJFILE_OWNED (type))
ae5a43e0
DJ
3402 return type;
3403
7ba81444
MS
3404 /* This type shouldn't be pointing to any types in other objfiles;
3405 if it did, the type might disappear unexpectedly. */
ae5a43e0
DJ
3406 gdb_assert (TYPE_OBJFILE (type) == objfile);
3407
3408 pair.old = type;
3409 slot = htab_find_slot (copied_types, &pair, INSERT);
3410 if (*slot != NULL)
3411 return ((struct type_pair *) *slot)->new;
3412
e9bb382b 3413 new_type = alloc_type_arch (get_type_arch (type));
ae5a43e0
DJ
3414
3415 /* We must add the new type to the hash table immediately, in case
3416 we encounter this type again during a recursive call below. */
3e43a32a
MS
3417 stored
3418 = obstack_alloc (&objfile->objfile_obstack, sizeof (struct type_pair));
ae5a43e0
DJ
3419 stored->old = type;
3420 stored->new = new_type;
3421 *slot = stored;
3422
876cecd0
TT
3423 /* Copy the common fields of types. For the main type, we simply
3424 copy the entire thing and then update specific fields as needed. */
3425 *TYPE_MAIN_TYPE (new_type) = *TYPE_MAIN_TYPE (type);
e9bb382b
UW
3426 TYPE_OBJFILE_OWNED (new_type) = 0;
3427 TYPE_OWNER (new_type).gdbarch = get_type_arch (type);
876cecd0 3428
ae5a43e0
DJ
3429 if (TYPE_NAME (type))
3430 TYPE_NAME (new_type) = xstrdup (TYPE_NAME (type));
3431 if (TYPE_TAG_NAME (type))
3432 TYPE_TAG_NAME (new_type) = xstrdup (TYPE_TAG_NAME (type));
ae5a43e0
DJ
3433
3434 TYPE_INSTANCE_FLAGS (new_type) = TYPE_INSTANCE_FLAGS (type);
3435 TYPE_LENGTH (new_type) = TYPE_LENGTH (type);
3436
3437 /* Copy the fields. */
ae5a43e0
DJ
3438 if (TYPE_NFIELDS (type))
3439 {
3440 int i, nfields;
3441
3442 nfields = TYPE_NFIELDS (type);
1deafd4e 3443 TYPE_FIELDS (new_type) = XCALLOC (nfields, struct field);
ae5a43e0
DJ
3444 for (i = 0; i < nfields; i++)
3445 {
7ba81444
MS
3446 TYPE_FIELD_ARTIFICIAL (new_type, i) =
3447 TYPE_FIELD_ARTIFICIAL (type, i);
ae5a43e0
DJ
3448 TYPE_FIELD_BITSIZE (new_type, i) = TYPE_FIELD_BITSIZE (type, i);
3449 if (TYPE_FIELD_TYPE (type, i))
3450 TYPE_FIELD_TYPE (new_type, i)
3451 = copy_type_recursive (objfile, TYPE_FIELD_TYPE (type, i),
3452 copied_types);
3453 if (TYPE_FIELD_NAME (type, i))
7ba81444
MS
3454 TYPE_FIELD_NAME (new_type, i) =
3455 xstrdup (TYPE_FIELD_NAME (type, i));
d6a843b5 3456 switch (TYPE_FIELD_LOC_KIND (type, i))
ae5a43e0 3457 {
d6a843b5
JK
3458 case FIELD_LOC_KIND_BITPOS:
3459 SET_FIELD_BITPOS (TYPE_FIELD (new_type, i),
3460 TYPE_FIELD_BITPOS (type, i));
3461 break;
14e75d8e
JK
3462 case FIELD_LOC_KIND_ENUMVAL:
3463 SET_FIELD_ENUMVAL (TYPE_FIELD (new_type, i),
3464 TYPE_FIELD_ENUMVAL (type, i));
3465 break;
d6a843b5
JK
3466 case FIELD_LOC_KIND_PHYSADDR:
3467 SET_FIELD_PHYSADDR (TYPE_FIELD (new_type, i),
3468 TYPE_FIELD_STATIC_PHYSADDR (type, i));
3469 break;
3470 case FIELD_LOC_KIND_PHYSNAME:
3471 SET_FIELD_PHYSNAME (TYPE_FIELD (new_type, i),
3472 xstrdup (TYPE_FIELD_STATIC_PHYSNAME (type,
3473 i)));
3474 break;
3475 default:
3476 internal_error (__FILE__, __LINE__,
3477 _("Unexpected type field location kind: %d"),
3478 TYPE_FIELD_LOC_KIND (type, i));
ae5a43e0
DJ
3479 }
3480 }
3481 }
3482
0963b4bd 3483 /* For range types, copy the bounds information. */
43bbcdc2
PH
3484 if (TYPE_CODE (type) == TYPE_CODE_RANGE)
3485 {
3486 TYPE_RANGE_DATA (new_type) = xmalloc (sizeof (struct range_bounds));
3487 *TYPE_RANGE_DATA (new_type) = *TYPE_RANGE_DATA (type);
3488 }
3489
ae5a43e0
DJ
3490 /* Copy pointers to other types. */
3491 if (TYPE_TARGET_TYPE (type))
7ba81444
MS
3492 TYPE_TARGET_TYPE (new_type) =
3493 copy_type_recursive (objfile,
3494 TYPE_TARGET_TYPE (type),
3495 copied_types);
ae5a43e0 3496 if (TYPE_VPTR_BASETYPE (type))
7ba81444
MS
3497 TYPE_VPTR_BASETYPE (new_type) =
3498 copy_type_recursive (objfile,
3499 TYPE_VPTR_BASETYPE (type),
3500 copied_types);
ae5a43e0
DJ
3501 /* Maybe copy the type_specific bits.
3502
3503 NOTE drow/2005-12-09: We do not copy the C++-specific bits like
3504 base classes and methods. There's no fundamental reason why we
3505 can't, but at the moment it is not needed. */
3506
3507 if (TYPE_CODE (type) == TYPE_CODE_FLT)
d5d6fca5 3508 TYPE_FLOATFORMAT (new_type) = TYPE_FLOATFORMAT (type);
ae5a43e0
DJ
3509 else if (TYPE_CODE (type) == TYPE_CODE_STRUCT
3510 || TYPE_CODE (type) == TYPE_CODE_UNION
ae5a43e0
DJ
3511 || TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
3512 INIT_CPLUS_SPECIFIC (new_type);
3513
3514 return new_type;
3515}
3516
4af88198
JB
3517/* Make a copy of the given TYPE, except that the pointer & reference
3518 types are not preserved.
3519
3520 This function assumes that the given type has an associated objfile.
3521 This objfile is used to allocate the new type. */
3522
3523struct type *
3524copy_type (const struct type *type)
3525{
3526 struct type *new_type;
3527
e9bb382b 3528 gdb_assert (TYPE_OBJFILE_OWNED (type));
4af88198 3529
e9bb382b 3530 new_type = alloc_type_copy (type);
4af88198
JB
3531 TYPE_INSTANCE_FLAGS (new_type) = TYPE_INSTANCE_FLAGS (type);
3532 TYPE_LENGTH (new_type) = TYPE_LENGTH (type);
3533 memcpy (TYPE_MAIN_TYPE (new_type), TYPE_MAIN_TYPE (type),
3534 sizeof (struct main_type));
3535
3536 return new_type;
3537}
5212577a 3538\f
e9bb382b
UW
3539/* Helper functions to initialize architecture-specific types. */
3540
3541/* Allocate a type structure associated with GDBARCH and set its
3542 CODE, LENGTH, and NAME fields. */
5212577a 3543
e9bb382b
UW
3544struct type *
3545arch_type (struct gdbarch *gdbarch,
3546 enum type_code code, int length, char *name)
3547{
3548 struct type *type;
3549
3550 type = alloc_type_arch (gdbarch);
3551 TYPE_CODE (type) = code;
3552 TYPE_LENGTH (type) = length;
3553
3554 if (name)
3555 TYPE_NAME (type) = xstrdup (name);
3556
3557 return type;
3558}
3559
3560/* Allocate a TYPE_CODE_INT type structure associated with GDBARCH.
3561 BIT is the type size in bits. If UNSIGNED_P is non-zero, set
3562 the type's TYPE_UNSIGNED flag. NAME is the type name. */
5212577a 3563
e9bb382b
UW
3564struct type *
3565arch_integer_type (struct gdbarch *gdbarch,
3566 int bit, int unsigned_p, char *name)
3567{
3568 struct type *t;
3569
3570 t = arch_type (gdbarch, TYPE_CODE_INT, bit / TARGET_CHAR_BIT, name);
3571 if (unsigned_p)
3572 TYPE_UNSIGNED (t) = 1;
3573 if (name && strcmp (name, "char") == 0)
3574 TYPE_NOSIGN (t) = 1;
3575
3576 return t;
3577}
3578
3579/* Allocate a TYPE_CODE_CHAR type structure associated with GDBARCH.
3580 BIT is the type size in bits. If UNSIGNED_P is non-zero, set
3581 the type's TYPE_UNSIGNED flag. NAME is the type name. */
5212577a 3582
e9bb382b
UW
3583struct type *
3584arch_character_type (struct gdbarch *gdbarch,
3585 int bit, int unsigned_p, char *name)
3586{
3587 struct type *t;
3588
3589 t = arch_type (gdbarch, TYPE_CODE_CHAR, bit / TARGET_CHAR_BIT, name);
3590 if (unsigned_p)
3591 TYPE_UNSIGNED (t) = 1;
3592
3593 return t;
3594}
3595
3596/* Allocate a TYPE_CODE_BOOL type structure associated with GDBARCH.
3597 BIT is the type size in bits. If UNSIGNED_P is non-zero, set
3598 the type's TYPE_UNSIGNED flag. NAME is the type name. */
5212577a 3599
e9bb382b
UW
3600struct type *
3601arch_boolean_type (struct gdbarch *gdbarch,
3602 int bit, int unsigned_p, char *name)
3603{
3604 struct type *t;
3605
3606 t = arch_type (gdbarch, TYPE_CODE_BOOL, bit / TARGET_CHAR_BIT, name);
3607 if (unsigned_p)
3608 TYPE_UNSIGNED (t) = 1;
3609
3610 return t;
3611}
3612
3613/* Allocate a TYPE_CODE_FLT type structure associated with GDBARCH.
3614 BIT is the type size in bits; if BIT equals -1, the size is
3615 determined by the floatformat. NAME is the type name. Set the
3616 TYPE_FLOATFORMAT from FLOATFORMATS. */
5212577a 3617
27067745 3618struct type *
e9bb382b
UW
3619arch_float_type (struct gdbarch *gdbarch,
3620 int bit, char *name, const struct floatformat **floatformats)
8da61cc4
DJ
3621{
3622 struct type *t;
3623
3624 if (bit == -1)
3625 {
3626 gdb_assert (floatformats != NULL);
3627 gdb_assert (floatformats[0] != NULL && floatformats[1] != NULL);
3628 bit = floatformats[0]->totalsize;
3629 }
3630 gdb_assert (bit >= 0);
3631
e9bb382b 3632 t = arch_type (gdbarch, TYPE_CODE_FLT, bit / TARGET_CHAR_BIT, name);
8da61cc4
DJ
3633 TYPE_FLOATFORMAT (t) = floatformats;
3634 return t;
3635}
3636
e9bb382b
UW
3637/* Allocate a TYPE_CODE_COMPLEX type structure associated with GDBARCH.
3638 NAME is the type name. TARGET_TYPE is the component float type. */
5212577a 3639
27067745 3640struct type *
e9bb382b
UW
3641arch_complex_type (struct gdbarch *gdbarch,
3642 char *name, struct type *target_type)
27067745
UW
3643{
3644 struct type *t;
d8734c88 3645
e9bb382b
UW
3646 t = arch_type (gdbarch, TYPE_CODE_COMPLEX,
3647 2 * TYPE_LENGTH (target_type), name);
27067745
UW
3648 TYPE_TARGET_TYPE (t) = target_type;
3649 return t;
3650}
3651
e9bb382b 3652/* Allocate a TYPE_CODE_FLAGS type structure associated with GDBARCH.
eb90ce83 3653 NAME is the type name. LENGTH is the size of the flag word in bytes. */
5212577a 3654
e9bb382b
UW
3655struct type *
3656arch_flags_type (struct gdbarch *gdbarch, char *name, int length)
3657{
3658 int nfields = length * TARGET_CHAR_BIT;
3659 struct type *type;
3660
3661 type = arch_type (gdbarch, TYPE_CODE_FLAGS, length, name);
3662 TYPE_UNSIGNED (type) = 1;
3663 TYPE_NFIELDS (type) = nfields;
3664 TYPE_FIELDS (type) = TYPE_ZALLOC (type, nfields * sizeof (struct field));
3665
3666 return type;
3667}
3668
3669/* Add field to TYPE_CODE_FLAGS type TYPE to indicate the bit at
3670 position BITPOS is called NAME. */
5212577a 3671
e9bb382b
UW
3672void
3673append_flags_type_flag (struct type *type, int bitpos, char *name)
3674{
3675 gdb_assert (TYPE_CODE (type) == TYPE_CODE_FLAGS);
3676 gdb_assert (bitpos < TYPE_NFIELDS (type));
3677 gdb_assert (bitpos >= 0);
3678
3679 if (name)
3680 {
3681 TYPE_FIELD_NAME (type, bitpos) = xstrdup (name);
945b3a32 3682 SET_FIELD_BITPOS (TYPE_FIELD (type, bitpos), bitpos);
e9bb382b
UW
3683 }
3684 else
3685 {
3686 /* Don't show this field to the user. */
945b3a32 3687 SET_FIELD_BITPOS (TYPE_FIELD (type, bitpos), -1);
e9bb382b
UW
3688 }
3689}
3690
3691/* Allocate a TYPE_CODE_STRUCT or TYPE_CODE_UNION type structure (as
3692 specified by CODE) associated with GDBARCH. NAME is the type name. */
5212577a 3693
e9bb382b
UW
3694struct type *
3695arch_composite_type (struct gdbarch *gdbarch, char *name, enum type_code code)
3696{
3697 struct type *t;
d8734c88 3698
e9bb382b
UW
3699 gdb_assert (code == TYPE_CODE_STRUCT || code == TYPE_CODE_UNION);
3700 t = arch_type (gdbarch, code, 0, NULL);
3701 TYPE_TAG_NAME (t) = name;
3702 INIT_CPLUS_SPECIFIC (t);
3703 return t;
3704}
3705
3706/* Add new field with name NAME and type FIELD to composite type T.
f5dff777
DJ
3707 Do not set the field's position or adjust the type's length;
3708 the caller should do so. Return the new field. */
5212577a 3709
f5dff777
DJ
3710struct field *
3711append_composite_type_field_raw (struct type *t, char *name,
3712 struct type *field)
e9bb382b
UW
3713{
3714 struct field *f;
d8734c88 3715
e9bb382b
UW
3716 TYPE_NFIELDS (t) = TYPE_NFIELDS (t) + 1;
3717 TYPE_FIELDS (t) = xrealloc (TYPE_FIELDS (t),
3718 sizeof (struct field) * TYPE_NFIELDS (t));
3719 f = &(TYPE_FIELDS (t)[TYPE_NFIELDS (t) - 1]);
3720 memset (f, 0, sizeof f[0]);
3721 FIELD_TYPE (f[0]) = field;
3722 FIELD_NAME (f[0]) = name;
f5dff777
DJ
3723 return f;
3724}
3725
3726/* Add new field with name NAME and type FIELD to composite type T.
3727 ALIGNMENT (if non-zero) specifies the minimum field alignment. */
5212577a 3728
f5dff777
DJ
3729void
3730append_composite_type_field_aligned (struct type *t, char *name,
3731 struct type *field, int alignment)
3732{
3733 struct field *f = append_composite_type_field_raw (t, name, field);
d8734c88 3734
e9bb382b
UW
3735 if (TYPE_CODE (t) == TYPE_CODE_UNION)
3736 {
3737 if (TYPE_LENGTH (t) < TYPE_LENGTH (field))
3738 TYPE_LENGTH (t) = TYPE_LENGTH (field);
3739 }
3740 else if (TYPE_CODE (t) == TYPE_CODE_STRUCT)
3741 {
3742 TYPE_LENGTH (t) = TYPE_LENGTH (t) + TYPE_LENGTH (field);
3743 if (TYPE_NFIELDS (t) > 1)
3744 {
f41f5e61
PA
3745 SET_FIELD_BITPOS (f[0],
3746 (FIELD_BITPOS (f[-1])
3747 + (TYPE_LENGTH (FIELD_TYPE (f[-1]))
3748 * TARGET_CHAR_BIT)));
e9bb382b
UW
3749
3750 if (alignment)
3751 {
86c3c1fc
AB
3752 int left;
3753
3754 alignment *= TARGET_CHAR_BIT;
3755 left = FIELD_BITPOS (f[0]) % alignment;
d8734c88 3756
e9bb382b
UW
3757 if (left)
3758 {
f41f5e61 3759 SET_FIELD_BITPOS (f[0], FIELD_BITPOS (f[0]) + (alignment - left));
86c3c1fc 3760 TYPE_LENGTH (t) += (alignment - left) / TARGET_CHAR_BIT;
e9bb382b
UW
3761 }
3762 }
3763 }
3764 }
3765}
3766
3767/* Add new field with name NAME and type FIELD to composite type T. */
5212577a 3768
e9bb382b
UW
3769void
3770append_composite_type_field (struct type *t, char *name,
3771 struct type *field)
3772{
3773 append_composite_type_field_aligned (t, name, field, 0);
3774}
3775
000177f0
AC
3776static struct gdbarch_data *gdbtypes_data;
3777
3778const struct builtin_type *
3779builtin_type (struct gdbarch *gdbarch)
3780{
3781 return gdbarch_data (gdbarch, gdbtypes_data);
3782}
3783
3784static void *
3785gdbtypes_post_init (struct gdbarch *gdbarch)
3786{
3787 struct builtin_type *builtin_type
3788 = GDBARCH_OBSTACK_ZALLOC (gdbarch, struct builtin_type);
3789
46bf5051 3790 /* Basic types. */
e9bb382b
UW
3791 builtin_type->builtin_void
3792 = arch_type (gdbarch, TYPE_CODE_VOID, 1, "void");
3793 builtin_type->builtin_char
3794 = arch_integer_type (gdbarch, TARGET_CHAR_BIT,
3795 !gdbarch_char_signed (gdbarch), "char");
3796 builtin_type->builtin_signed_char
3797 = arch_integer_type (gdbarch, TARGET_CHAR_BIT,
3798 0, "signed char");
3799 builtin_type->builtin_unsigned_char
3800 = arch_integer_type (gdbarch, TARGET_CHAR_BIT,
3801 1, "unsigned char");
3802 builtin_type->builtin_short
3803 = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
3804 0, "short");
3805 builtin_type->builtin_unsigned_short
3806 = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
3807 1, "unsigned short");
3808 builtin_type->builtin_int
3809 = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
3810 0, "int");
3811 builtin_type->builtin_unsigned_int
3812 = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
3813 1, "unsigned int");
3814 builtin_type->builtin_long
3815 = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
3816 0, "long");
3817 builtin_type->builtin_unsigned_long
3818 = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
3819 1, "unsigned long");
3820 builtin_type->builtin_long_long
3821 = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
3822 0, "long long");
3823 builtin_type->builtin_unsigned_long_long
3824 = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
3825 1, "unsigned long long");
70bd8e24 3826 builtin_type->builtin_float
e9bb382b 3827 = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch),
27067745 3828 "float", gdbarch_float_format (gdbarch));
70bd8e24 3829 builtin_type->builtin_double
e9bb382b 3830 = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
27067745 3831 "double", gdbarch_double_format (gdbarch));
70bd8e24 3832 builtin_type->builtin_long_double
e9bb382b 3833 = arch_float_type (gdbarch, gdbarch_long_double_bit (gdbarch),
27067745 3834 "long double", gdbarch_long_double_format (gdbarch));
70bd8e24 3835 builtin_type->builtin_complex
e9bb382b
UW
3836 = arch_complex_type (gdbarch, "complex",
3837 builtin_type->builtin_float);
70bd8e24 3838 builtin_type->builtin_double_complex
e9bb382b
UW
3839 = arch_complex_type (gdbarch, "double complex",
3840 builtin_type->builtin_double);
3841 builtin_type->builtin_string
3842 = arch_type (gdbarch, TYPE_CODE_STRING, 1, "string");
3843 builtin_type->builtin_bool
3844 = arch_type (gdbarch, TYPE_CODE_BOOL, 1, "bool");
000177f0 3845
7678ef8f
TJB
3846 /* The following three are about decimal floating point types, which
3847 are 32-bits, 64-bits and 128-bits respectively. */
3848 builtin_type->builtin_decfloat
e9bb382b 3849 = arch_type (gdbarch, TYPE_CODE_DECFLOAT, 32 / 8, "_Decimal32");
7678ef8f 3850 builtin_type->builtin_decdouble
e9bb382b 3851 = arch_type (gdbarch, TYPE_CODE_DECFLOAT, 64 / 8, "_Decimal64");
7678ef8f 3852 builtin_type->builtin_declong
e9bb382b 3853 = arch_type (gdbarch, TYPE_CODE_DECFLOAT, 128 / 8, "_Decimal128");
7678ef8f 3854
69feb676 3855 /* "True" character types. */
e9bb382b
UW
3856 builtin_type->builtin_true_char
3857 = arch_character_type (gdbarch, TARGET_CHAR_BIT, 0, "true character");
3858 builtin_type->builtin_true_unsigned_char
3859 = arch_character_type (gdbarch, TARGET_CHAR_BIT, 1, "true character");
69feb676 3860
df4df182 3861 /* Fixed-size integer types. */
e9bb382b
UW
3862 builtin_type->builtin_int0
3863 = arch_integer_type (gdbarch, 0, 0, "int0_t");
3864 builtin_type->builtin_int8
3865 = arch_integer_type (gdbarch, 8, 0, "int8_t");
3866 builtin_type->builtin_uint8
3867 = arch_integer_type (gdbarch, 8, 1, "uint8_t");
3868 builtin_type->builtin_int16
3869 = arch_integer_type (gdbarch, 16, 0, "int16_t");
3870 builtin_type->builtin_uint16
3871 = arch_integer_type (gdbarch, 16, 1, "uint16_t");
3872 builtin_type->builtin_int32
3873 = arch_integer_type (gdbarch, 32, 0, "int32_t");
3874 builtin_type->builtin_uint32
3875 = arch_integer_type (gdbarch, 32, 1, "uint32_t");
3876 builtin_type->builtin_int64
3877 = arch_integer_type (gdbarch, 64, 0, "int64_t");
3878 builtin_type->builtin_uint64
3879 = arch_integer_type (gdbarch, 64, 1, "uint64_t");
3880 builtin_type->builtin_int128
3881 = arch_integer_type (gdbarch, 128, 0, "int128_t");
3882 builtin_type->builtin_uint128
3883 = arch_integer_type (gdbarch, 128, 1, "uint128_t");
2844d6b5
KW
3884 TYPE_INSTANCE_FLAGS (builtin_type->builtin_int8) |=
3885 TYPE_INSTANCE_FLAG_NOTTEXT;
3886 TYPE_INSTANCE_FLAGS (builtin_type->builtin_uint8) |=
3887 TYPE_INSTANCE_FLAG_NOTTEXT;
df4df182 3888
9a22f0d0
PM
3889 /* Wide character types. */
3890 builtin_type->builtin_char16
3891 = arch_integer_type (gdbarch, 16, 0, "char16_t");
3892 builtin_type->builtin_char32
3893 = arch_integer_type (gdbarch, 32, 0, "char32_t");
3894
3895
46bf5051 3896 /* Default data/code pointer types. */
e9bb382b
UW
3897 builtin_type->builtin_data_ptr
3898 = lookup_pointer_type (builtin_type->builtin_void);
3899 builtin_type->builtin_func_ptr
3900 = lookup_pointer_type (lookup_function_type (builtin_type->builtin_void));
0875794a
JK
3901 builtin_type->builtin_func_func
3902 = lookup_function_type (builtin_type->builtin_func_ptr);
46bf5051 3903
78267919 3904 /* This type represents a GDB internal function. */
e9bb382b
UW
3905 builtin_type->internal_fn
3906 = arch_type (gdbarch, TYPE_CODE_INTERNAL_FUNCTION, 0,
3907 "<internal function>");
78267919 3908
46bf5051
UW
3909 return builtin_type;
3910}
3911
46bf5051
UW
3912/* This set of objfile-based types is intended to be used by symbol
3913 readers as basic types. */
3914
3915static const struct objfile_data *objfile_type_data;
3916
3917const struct objfile_type *
3918objfile_type (struct objfile *objfile)
3919{
3920 struct gdbarch *gdbarch;
3921 struct objfile_type *objfile_type
3922 = objfile_data (objfile, objfile_type_data);
3923
3924 if (objfile_type)
3925 return objfile_type;
3926
3927 objfile_type = OBSTACK_CALLOC (&objfile->objfile_obstack,
3928 1, struct objfile_type);
3929
3930 /* Use the objfile architecture to determine basic type properties. */
3931 gdbarch = get_objfile_arch (objfile);
3932
3933 /* Basic types. */
3934 objfile_type->builtin_void
3935 = init_type (TYPE_CODE_VOID, 1,
3936 0,
3937 "void", objfile);
3938
3939 objfile_type->builtin_char
3940 = init_type (TYPE_CODE_INT, TARGET_CHAR_BIT / TARGET_CHAR_BIT,
3941 (TYPE_FLAG_NOSIGN
3942 | (gdbarch_char_signed (gdbarch) ? 0 : TYPE_FLAG_UNSIGNED)),
3943 "char", objfile);
3944 objfile_type->builtin_signed_char
3945 = init_type (TYPE_CODE_INT, TARGET_CHAR_BIT / TARGET_CHAR_BIT,
3946 0,
3947 "signed char", objfile);
3948 objfile_type->builtin_unsigned_char
3949 = init_type (TYPE_CODE_INT, TARGET_CHAR_BIT / TARGET_CHAR_BIT,
3950 TYPE_FLAG_UNSIGNED,
3951 "unsigned char", objfile);
3952 objfile_type->builtin_short
3953 = init_type (TYPE_CODE_INT,
3954 gdbarch_short_bit (gdbarch) / TARGET_CHAR_BIT,
3955 0, "short", objfile);
3956 objfile_type->builtin_unsigned_short
3957 = init_type (TYPE_CODE_INT,
3958 gdbarch_short_bit (gdbarch) / TARGET_CHAR_BIT,
3959 TYPE_FLAG_UNSIGNED, "unsigned short", objfile);
3960 objfile_type->builtin_int
3961 = init_type (TYPE_CODE_INT,
3962 gdbarch_int_bit (gdbarch) / TARGET_CHAR_BIT,
3963 0, "int", objfile);
3964 objfile_type->builtin_unsigned_int
3965 = init_type (TYPE_CODE_INT,
3966 gdbarch_int_bit (gdbarch) / TARGET_CHAR_BIT,
3967 TYPE_FLAG_UNSIGNED, "unsigned int", objfile);
3968 objfile_type->builtin_long
3969 = init_type (TYPE_CODE_INT,
3970 gdbarch_long_bit (gdbarch) / TARGET_CHAR_BIT,
3971 0, "long", objfile);
3972 objfile_type->builtin_unsigned_long
3973 = init_type (TYPE_CODE_INT,
3974 gdbarch_long_bit (gdbarch) / TARGET_CHAR_BIT,
3975 TYPE_FLAG_UNSIGNED, "unsigned long", objfile);
3976 objfile_type->builtin_long_long
3977 = init_type (TYPE_CODE_INT,
3978 gdbarch_long_long_bit (gdbarch) / TARGET_CHAR_BIT,
3979 0, "long long", objfile);
3980 objfile_type->builtin_unsigned_long_long
3981 = init_type (TYPE_CODE_INT,
3982 gdbarch_long_long_bit (gdbarch) / TARGET_CHAR_BIT,
3983 TYPE_FLAG_UNSIGNED, "unsigned long long", objfile);
3984
3985 objfile_type->builtin_float
3986 = init_type (TYPE_CODE_FLT,
3987 gdbarch_float_bit (gdbarch) / TARGET_CHAR_BIT,
3988 0, "float", objfile);
3989 TYPE_FLOATFORMAT (objfile_type->builtin_float)
3990 = gdbarch_float_format (gdbarch);
3991 objfile_type->builtin_double
3992 = init_type (TYPE_CODE_FLT,
3993 gdbarch_double_bit (gdbarch) / TARGET_CHAR_BIT,
3994 0, "double", objfile);
3995 TYPE_FLOATFORMAT (objfile_type->builtin_double)
3996 = gdbarch_double_format (gdbarch);
3997 objfile_type->builtin_long_double
3998 = init_type (TYPE_CODE_FLT,
3999 gdbarch_long_double_bit (gdbarch) / TARGET_CHAR_BIT,
4000 0, "long double", objfile);
4001 TYPE_FLOATFORMAT (objfile_type->builtin_long_double)
4002 = gdbarch_long_double_format (gdbarch);
4003
4004 /* This type represents a type that was unrecognized in symbol read-in. */
4005 objfile_type->builtin_error
4006 = init_type (TYPE_CODE_ERROR, 0, 0, "<unknown type>", objfile);
4007
4008 /* The following set of types is used for symbols with no
4009 debug information. */
4010 objfile_type->nodebug_text_symbol
4011 = init_type (TYPE_CODE_FUNC, 1, 0,
4012 "<text variable, no debug info>", objfile);
4013 TYPE_TARGET_TYPE (objfile_type->nodebug_text_symbol)
4014 = objfile_type->builtin_int;
0875794a
JK
4015 objfile_type->nodebug_text_gnu_ifunc_symbol
4016 = init_type (TYPE_CODE_FUNC, 1, TYPE_FLAG_GNU_IFUNC,
4017 "<text gnu-indirect-function variable, no debug info>",
4018 objfile);
4019 TYPE_TARGET_TYPE (objfile_type->nodebug_text_gnu_ifunc_symbol)
4020 = objfile_type->nodebug_text_symbol;
4021 objfile_type->nodebug_got_plt_symbol
4022 = init_type (TYPE_CODE_PTR, gdbarch_addr_bit (gdbarch) / 8, 0,
4023 "<text from jump slot in .got.plt, no debug info>",
4024 objfile);
4025 TYPE_TARGET_TYPE (objfile_type->nodebug_got_plt_symbol)
4026 = objfile_type->nodebug_text_symbol;
46bf5051
UW
4027 objfile_type->nodebug_data_symbol
4028 = init_type (TYPE_CODE_INT,
4029 gdbarch_int_bit (gdbarch) / HOST_CHAR_BIT, 0,
4030 "<data variable, no debug info>", objfile);
4031 objfile_type->nodebug_unknown_symbol
4032 = init_type (TYPE_CODE_INT, 1, 0,
4033 "<variable (not text or data), no debug info>", objfile);
4034 objfile_type->nodebug_tls_symbol
4035 = init_type (TYPE_CODE_INT,
4036 gdbarch_int_bit (gdbarch) / HOST_CHAR_BIT, 0,
4037 "<thread local variable, no debug info>", objfile);
000177f0
AC
4038
4039 /* NOTE: on some targets, addresses and pointers are not necessarily
4040 the same --- for example, on the D10V, pointers are 16 bits long,
4041 but addresses are 32 bits long. See doc/gdbint.texinfo,
4042 ``Pointers Are Not Always Addresses''.
4043
4044 The upshot is:
4045 - gdb's `struct type' always describes the target's
4046 representation.
4047 - gdb's `struct value' objects should always hold values in
4048 target form.
4049 - gdb's CORE_ADDR values are addresses in the unified virtual
4050 address space that the assembler and linker work with. Thus,
4051 since target_read_memory takes a CORE_ADDR as an argument, it
4052 can access any memory on the target, even if the processor has
4053 separate code and data address spaces.
4054
4055 So, for example:
4056 - If v is a value holding a D10V code pointer, its contents are
4057 in target form: a big-endian address left-shifted two bits.
4058 - If p is a D10V pointer type, TYPE_LENGTH (p) == 2, just as
4059 sizeof (void *) == 2 on the target.
4060
46bf5051
UW
4061 In this context, objfile_type->builtin_core_addr is a bit odd:
4062 it's a target type for a value the target will never see. It's
4063 only used to hold the values of (typeless) linker symbols, which
4064 are indeed in the unified virtual address space. */
000177f0 4065
46bf5051
UW
4066 objfile_type->builtin_core_addr
4067 = init_type (TYPE_CODE_INT,
4068 gdbarch_addr_bit (gdbarch) / 8,
4069 TYPE_FLAG_UNSIGNED, "__CORE_ADDR", objfile);
64c50499 4070
46bf5051
UW
4071 set_objfile_data (objfile, objfile_type_data, objfile_type);
4072 return objfile_type;
000177f0
AC
4073}
4074
5212577a 4075extern initialize_file_ftype _initialize_gdbtypes;
46bf5051 4076
c906108c 4077void
fba45db2 4078_initialize_gdbtypes (void)
c906108c 4079{
5674de60 4080 gdbtypes_data = gdbarch_data_register_post_init (gdbtypes_post_init);
46bf5051 4081 objfile_type_data = register_objfile_data ();
5674de60 4082
ccce17b0
YQ
4083 add_setshow_zuinteger_cmd ("overload", no_class, &overload_debug,
4084 _("Set debugging of C++ overloading."),
4085 _("Show debugging of C++ overloading."),
4086 _("When enabled, ranking of the "
4087 "functions is displayed."),
4088 NULL,
4089 show_overload_debug,
4090 &setdebuglist, &showdebuglist);
5674de60 4091
7ba81444 4092 /* Add user knob for controlling resolution of opaque types. */
5674de60 4093 add_setshow_boolean_cmd ("opaque-type-resolution", class_support,
3e43a32a
MS
4094 &opaque_type_resolution,
4095 _("Set resolution of opaque struct/class/union"
4096 " types (if set before loading symbols)."),
4097 _("Show resolution of opaque struct/class/union"
4098 " types (if set before loading symbols)."),
4099 NULL, NULL,
5674de60
UW
4100 show_opaque_type_resolution,
4101 &setlist, &showlist);
a451cb65
KS
4102
4103 /* Add an option to permit non-strict type checking. */
4104 add_setshow_boolean_cmd ("type", class_support,
4105 &strict_type_checking,
4106 _("Set strict type checking."),
4107 _("Show strict type checking."),
4108 NULL, NULL,
4109 show_strict_type_checking,
4110 &setchecklist, &showchecklist);
c906108c 4111}
This page took 1.208675 seconds and 4 git commands to generate.