OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gdb-7.1/] [gdb/] [gdbtypes.c] - Blame information for rev 855

Go to most recent revision | Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.