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