OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [trunk/] [gnu-src/] [gdb-7.2/] [gdb/] [valops.c] - Blame information for rev 631

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

Line No. Rev Author Line
1 330 jeremybenn
/* Perform non-arithmetic operations on values, for GDB.
2
 
3
   Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
4
   1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
5
   2008, 2009, 2010 Free Software Foundation, Inc.
6
 
7
   This file is part of GDB.
8
 
9
   This program is free software; you can redistribute it and/or modify
10
   it under the terms of the GNU General Public License as published by
11
   the Free Software Foundation; either version 3 of the License, or
12
   (at your option) any later version.
13
 
14
   This program is distributed in the hope that it will be useful,
15
   but WITHOUT ANY WARRANTY; without even the implied warranty of
16
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
   GNU General Public License for more details.
18
 
19
   You should have received a copy of the GNU General Public License
20
   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
21
 
22
#include "defs.h"
23
#include "symtab.h"
24
#include "gdbtypes.h"
25
#include "value.h"
26
#include "frame.h"
27
#include "inferior.h"
28
#include "gdbcore.h"
29
#include "target.h"
30
#include "demangle.h"
31
#include "language.h"
32
#include "gdbcmd.h"
33
#include "regcache.h"
34
#include "cp-abi.h"
35
#include "block.h"
36
#include "infcall.h"
37
#include "dictionary.h"
38
#include "cp-support.h"
39
#include "dfp.h"
40
#include "user-regs.h"
41
 
42
#include <errno.h>
43
#include "gdb_string.h"
44
#include "gdb_assert.h"
45
#include "cp-support.h"
46
#include "observer.h"
47
#include "objfiles.h"
48
#include "symtab.h"
49
 
50
extern int overload_debug;
51
/* Local functions.  */
52
 
53
static int typecmp (int staticp, int varargs, int nargs,
54
                    struct field t1[], struct value *t2[]);
55
 
56
static struct value *search_struct_field (const char *, struct value *,
57
                                          int, struct type *, int);
58
 
59
static struct value *search_struct_method (const char *, struct value **,
60
                                           struct value **,
61
                                           int, int *, struct type *);
62
 
63
static int find_oload_champ_namespace (struct type **, int,
64
                                       const char *, const char *,
65
                                       struct symbol ***,
66
                                       struct badness_vector **,
67
                                       const int no_adl);
68
 
69
static
70
int find_oload_champ_namespace_loop (struct type **, int,
71
                                     const char *, const char *,
72
                                     int, struct symbol ***,
73
                                     struct badness_vector **, int *,
74
                                     const int no_adl);
75
 
76
static int find_oload_champ (struct type **, int, int, int,
77
                             struct fn_field *, struct symbol **,
78
                             struct badness_vector **);
79
 
80
static int oload_method_static (int, struct fn_field *, int);
81
 
82
enum oload_classification { STANDARD, NON_STANDARD, INCOMPATIBLE };
83
 
84
static enum
85
oload_classification classify_oload_match (struct badness_vector *,
86
                                           int, int);
87
 
88
static struct value *value_struct_elt_for_reference (struct type *,
89
                                                     int, struct type *,
90
                                                     char *,
91
                                                     struct type *,
92
                                                     int, enum noside);
93
 
94
static struct value *value_namespace_elt (const struct type *,
95
                                          char *, int , enum noside);
96
 
97
static struct value *value_maybe_namespace_elt (const struct type *,
98
                                                char *, int,
99
                                                enum noside);
100
 
101
static CORE_ADDR allocate_space_in_inferior (int);
102
 
103
static struct value *cast_into_complex (struct type *, struct value *);
104
 
105
static struct fn_field *find_method_list (struct value **, const char *,
106
                                          int, struct type *, int *,
107
                                          struct type **, int *);
108
 
109
void _initialize_valops (void);
110
 
111
#if 0
112
/* Flag for whether we want to abandon failed expression evals by
113
   default.  */
114
 
115
static int auto_abandon = 0;
116
#endif
117
 
118
int overload_resolution = 0;
119
static void
120
show_overload_resolution (struct ui_file *file, int from_tty,
121
                          struct cmd_list_element *c,
122
                          const char *value)
123
{
124
  fprintf_filtered (file, _("\
125
Overload resolution in evaluating C++ functions is %s.\n"),
126
                    value);
127
}
128
 
129
/* Find the address of function name NAME in the inferior.  If OBJF_P
130
   is non-NULL, *OBJF_P will be set to the OBJFILE where the function
131
   is defined.  */
132
 
133
struct value *
134
find_function_in_inferior (const char *name, struct objfile **objf_p)
135
{
136
  struct symbol *sym;
137
 
138
  sym = lookup_symbol (name, 0, VAR_DOMAIN, 0);
139
  if (sym != NULL)
140
    {
141
      if (SYMBOL_CLASS (sym) != LOC_BLOCK)
142
        {
143
          error (_("\"%s\" exists in this program but is not a function."),
144
                 name);
145
        }
146
 
147
      if (objf_p)
148
        *objf_p = SYMBOL_SYMTAB (sym)->objfile;
149
 
150
      return value_of_variable (sym, NULL);
151
    }
152
  else
153
    {
154
      struct minimal_symbol *msymbol =
155
        lookup_minimal_symbol (name, NULL, NULL);
156
 
157
      if (msymbol != NULL)
158
        {
159
          struct objfile *objfile = msymbol_objfile (msymbol);
160
          struct gdbarch *gdbarch = get_objfile_arch (objfile);
161
 
162
          struct type *type;
163
          CORE_ADDR maddr;
164
          type = lookup_pointer_type (builtin_type (gdbarch)->builtin_char);
165
          type = lookup_function_type (type);
166
          type = lookup_pointer_type (type);
167
          maddr = SYMBOL_VALUE_ADDRESS (msymbol);
168
 
169
          if (objf_p)
170
            *objf_p = objfile;
171
 
172
          return value_from_pointer (type, maddr);
173
        }
174
      else
175
        {
176
          if (!target_has_execution)
177
            error (_("evaluation of this expression requires the target program to be active"));
178
          else
179
            error (_("evaluation of this expression requires the program to have a function \"%s\"."), name);
180
        }
181
    }
182
}
183
 
184
/* Allocate NBYTES of space in the inferior using the inferior's
185
   malloc and return a value that is a pointer to the allocated
186
   space.  */
187
 
188
struct value *
189
value_allocate_space_in_inferior (int len)
190
{
191
  struct objfile *objf;
192
  struct value *val = find_function_in_inferior ("malloc", &objf);
193
  struct gdbarch *gdbarch = get_objfile_arch (objf);
194
  struct value *blocklen;
195
 
196
  blocklen = value_from_longest (builtin_type (gdbarch)->builtin_int, len);
197
  val = call_function_by_hand (val, 1, &blocklen);
198
  if (value_logical_not (val))
199
    {
200
      if (!target_has_execution)
201
        error (_("No memory available to program now: you need to start the target first"));
202
      else
203
        error (_("No memory available to program: call to malloc failed"));
204
    }
205
  return val;
206
}
207
 
208
static CORE_ADDR
209
allocate_space_in_inferior (int len)
210
{
211
  return value_as_long (value_allocate_space_in_inferior (len));
212
}
213
 
214
/* Cast struct value VAL to type TYPE and return as a value.
215
   Both type and val must be of TYPE_CODE_STRUCT or TYPE_CODE_UNION
216
   for this to work.  Typedef to one of the codes is permitted.
217
   Returns NULL if the cast is neither an upcast nor a downcast.  */
218
 
219
static struct value *
220
value_cast_structs (struct type *type, struct value *v2)
221
{
222
  struct type *t1;
223
  struct type *t2;
224
  struct value *v;
225
 
226
  gdb_assert (type != NULL && v2 != NULL);
227
 
228
  t1 = check_typedef (type);
229
  t2 = check_typedef (value_type (v2));
230
 
231
  /* Check preconditions.  */
232
  gdb_assert ((TYPE_CODE (t1) == TYPE_CODE_STRUCT
233
               || TYPE_CODE (t1) == TYPE_CODE_UNION)
234
              && !!"Precondition is that type is of STRUCT or UNION kind.");
235
  gdb_assert ((TYPE_CODE (t2) == TYPE_CODE_STRUCT
236
               || TYPE_CODE (t2) == TYPE_CODE_UNION)
237
              && !!"Precondition is that value is of STRUCT or UNION kind");
238
 
239
  if (TYPE_NAME (t1) != NULL
240
      && TYPE_NAME (t2) != NULL
241
      && !strcmp (TYPE_NAME (t1), TYPE_NAME (t2)))
242
    return NULL;
243
 
244
  /* Upcasting: look in the type of the source to see if it contains the
245
     type of the target as a superclass.  If so, we'll need to
246
     offset the pointer rather than just change its type.  */
247
  if (TYPE_NAME (t1) != NULL)
248
    {
249
      v = search_struct_field (type_name_no_tag (t1),
250
                               v2, 0, t2, 1);
251
      if (v)
252
        return v;
253
    }
254
 
255
  /* Downcasting: look in the type of the target to see if it contains the
256
     type of the source as a superclass.  If so, we'll need to
257
     offset the pointer rather than just change its type.  */
258
  if (TYPE_NAME (t2) != NULL)
259
    {
260
      /* Try downcasting using the run-time type of the value.  */
261
      int full, top, using_enc;
262
      struct type *real_type;
263
 
264
      real_type = value_rtti_type (v2, &full, &top, &using_enc);
265
      if (real_type)
266
        {
267
          v = value_full_object (v2, real_type, full, top, using_enc);
268
          v = value_at_lazy (real_type, value_address (v));
269
 
270
          /* We might be trying to cast to the outermost enclosing
271
             type, in which case search_struct_field won't work.  */
272
          if (TYPE_NAME (real_type) != NULL
273
              && !strcmp (TYPE_NAME (real_type), TYPE_NAME (t1)))
274
            return v;
275
 
276
          v = search_struct_field (type_name_no_tag (t2), v, 0, real_type, 1);
277
          if (v)
278
            return v;
279
        }
280
 
281
      /* Try downcasting using information from the destination type
282
         T2.  This wouldn't work properly for classes with virtual
283
         bases, but those were handled above.  */
284
      v = search_struct_field (type_name_no_tag (t2),
285
                               value_zero (t1, not_lval), 0, t1, 1);
286
      if (v)
287
        {
288
          /* Downcasting is possible (t1 is superclass of v2).  */
289
          CORE_ADDR addr2 = value_address (v2);
290
 
291
          addr2 -= value_address (v) + value_embedded_offset (v);
292
          return value_at (type, addr2);
293
        }
294
    }
295
 
296
  return NULL;
297
}
298
 
299
/* Cast one pointer or reference type to another.  Both TYPE and
300
   the type of ARG2 should be pointer types, or else both should be
301
   reference types.  Returns the new pointer or reference.  */
302
 
303
struct value *
304
value_cast_pointers (struct type *type, struct value *arg2)
305
{
306
  struct type *type1 = check_typedef (type);
307
  struct type *type2 = check_typedef (value_type (arg2));
308
  struct type *t1 = check_typedef (TYPE_TARGET_TYPE (type1));
309
  struct type *t2 = check_typedef (TYPE_TARGET_TYPE (type2));
310
 
311
  if (TYPE_CODE (t1) == TYPE_CODE_STRUCT
312
      && TYPE_CODE (t2) == TYPE_CODE_STRUCT
313
      && !value_logical_not (arg2))
314
    {
315
      struct value *v2;
316
 
317
      if (TYPE_CODE (type2) == TYPE_CODE_REF)
318
        v2 = coerce_ref (arg2);
319
      else
320
        v2 = value_ind (arg2);
321
      gdb_assert (TYPE_CODE (check_typedef (value_type (v2))) == TYPE_CODE_STRUCT
322
                  && !!"Why did coercion fail?");
323
      v2 = value_cast_structs (t1, v2);
324
      /* At this point we have what we can have, un-dereference if needed.  */
325
      if (v2)
326
        {
327
          struct value *v = value_addr (v2);
328
 
329
          deprecated_set_value_type (v, type);
330
          return v;
331
        }
332
   }
333
 
334
  /* No superclass found, just change the pointer type.  */
335
  arg2 = value_copy (arg2);
336
  deprecated_set_value_type (arg2, type);
337
  arg2 = value_change_enclosing_type (arg2, type);
338
  set_value_pointed_to_offset (arg2, 0); /* pai: chk_val */
339
  return arg2;
340
}
341
 
342
/* Cast value ARG2 to type TYPE and return as a value.
343
   More general than a C cast: accepts any two types of the same length,
344
   and if ARG2 is an lvalue it can be cast into anything at all.  */
345
/* In C++, casts may change pointer or object representations.  */
346
 
347
struct value *
348
value_cast (struct type *type, struct value *arg2)
349
{
350
  enum type_code code1;
351
  enum type_code code2;
352
  int scalar;
353
  struct type *type2;
354
 
355
  int convert_to_boolean = 0;
356
 
357
  if (value_type (arg2) == type)
358
    return arg2;
359
 
360
  code1 = TYPE_CODE (check_typedef (type));
361
 
362
  /* Check if we are casting struct reference to struct reference.  */
363
  if (code1 == TYPE_CODE_REF)
364
    {
365
      /* We dereference type; then we recurse and finally
366
         we generate value of the given reference. Nothing wrong with
367
         that.  */
368
      struct type *t1 = check_typedef (type);
369
      struct type *dereftype = check_typedef (TYPE_TARGET_TYPE (t1));
370
      struct value *val =  value_cast (dereftype, arg2);
371
 
372
      return value_ref (val);
373
    }
374
 
375
  code2 = TYPE_CODE (check_typedef (value_type (arg2)));
376
 
377
  if (code2 == TYPE_CODE_REF)
378
    /* We deref the value and then do the cast.  */
379
    return value_cast (type, coerce_ref (arg2));
380
 
381
  CHECK_TYPEDEF (type);
382
  code1 = TYPE_CODE (type);
383
  arg2 = coerce_ref (arg2);
384
  type2 = check_typedef (value_type (arg2));
385
 
386
  /* You can't cast to a reference type.  See value_cast_pointers
387
     instead.  */
388
  gdb_assert (code1 != TYPE_CODE_REF);
389
 
390
  /* A cast to an undetermined-length array_type, such as
391
     (TYPE [])OBJECT, is treated like a cast to (TYPE [N])OBJECT,
392
     where N is sizeof(OBJECT)/sizeof(TYPE).  */
393
  if (code1 == TYPE_CODE_ARRAY)
394
    {
395
      struct type *element_type = TYPE_TARGET_TYPE (type);
396
      unsigned element_length = TYPE_LENGTH (check_typedef (element_type));
397
 
398
      if (element_length > 0 && TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type))
399
        {
400
          struct type *range_type = TYPE_INDEX_TYPE (type);
401
          int val_length = TYPE_LENGTH (type2);
402
          LONGEST low_bound, high_bound, new_length;
403
 
404
          if (get_discrete_bounds (range_type, &low_bound, &high_bound) < 0)
405
            low_bound = 0, high_bound = 0;
406
          new_length = val_length / element_length;
407
          if (val_length % element_length != 0)
408
            warning (_("array element type size does not divide object size in cast"));
409
          /* FIXME-type-allocation: need a way to free this type when
410
             we are done with it.  */
411
          range_type = create_range_type ((struct type *) NULL,
412
                                          TYPE_TARGET_TYPE (range_type),
413
                                          low_bound,
414
                                          new_length + low_bound - 1);
415
          deprecated_set_value_type (arg2,
416
                                     create_array_type ((struct type *) NULL,
417
                                                        element_type,
418
                                                        range_type));
419
          return arg2;
420
        }
421
    }
422
 
423
  if (current_language->c_style_arrays
424
      && TYPE_CODE (type2) == TYPE_CODE_ARRAY)
425
    arg2 = value_coerce_array (arg2);
426
 
427
  if (TYPE_CODE (type2) == TYPE_CODE_FUNC)
428
    arg2 = value_coerce_function (arg2);
429
 
430
  type2 = check_typedef (value_type (arg2));
431
  code2 = TYPE_CODE (type2);
432
 
433
  if (code1 == TYPE_CODE_COMPLEX)
434
    return cast_into_complex (type, arg2);
435
  if (code1 == TYPE_CODE_BOOL)
436
    {
437
      code1 = TYPE_CODE_INT;
438
      convert_to_boolean = 1;
439
    }
440
  if (code1 == TYPE_CODE_CHAR)
441
    code1 = TYPE_CODE_INT;
442
  if (code2 == TYPE_CODE_BOOL || code2 == TYPE_CODE_CHAR)
443
    code2 = TYPE_CODE_INT;
444
 
445
  scalar = (code2 == TYPE_CODE_INT || code2 == TYPE_CODE_FLT
446
            || code2 == TYPE_CODE_DECFLOAT || code2 == TYPE_CODE_ENUM
447
            || code2 == TYPE_CODE_RANGE);
448
 
449
  if ((code1 == TYPE_CODE_STRUCT || code1 == TYPE_CODE_UNION)
450
      && (code2 == TYPE_CODE_STRUCT || code2 == TYPE_CODE_UNION)
451
      && TYPE_NAME (type) != 0)
452
    {
453
      struct value *v = value_cast_structs (type, arg2);
454
 
455
      if (v)
456
        return v;
457
    }
458
 
459
  if (code1 == TYPE_CODE_FLT && scalar)
460
    return value_from_double (type, value_as_double (arg2));
461
  else if (code1 == TYPE_CODE_DECFLOAT && scalar)
462
    {
463
      enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
464
      int dec_len = TYPE_LENGTH (type);
465
      gdb_byte dec[16];
466
 
467
      if (code2 == TYPE_CODE_FLT)
468
        decimal_from_floating (arg2, dec, dec_len, byte_order);
469
      else if (code2 == TYPE_CODE_DECFLOAT)
470
        decimal_convert (value_contents (arg2), TYPE_LENGTH (type2),
471
                         byte_order, dec, dec_len, byte_order);
472
      else
473
        /* The only option left is an integral type.  */
474
        decimal_from_integral (arg2, dec, dec_len, byte_order);
475
 
476
      return value_from_decfloat (type, dec);
477
    }
478
  else if ((code1 == TYPE_CODE_INT || code1 == TYPE_CODE_ENUM
479
            || code1 == TYPE_CODE_RANGE)
480
           && (scalar || code2 == TYPE_CODE_PTR
481
               || code2 == TYPE_CODE_MEMBERPTR))
482
    {
483
      LONGEST longest;
484
 
485
      /* When we cast pointers to integers, we mustn't use
486
         gdbarch_pointer_to_address to find the address the pointer
487
         represents, as value_as_long would.  GDB should evaluate
488
         expressions just as the compiler would --- and the compiler
489
         sees a cast as a simple reinterpretation of the pointer's
490
         bits.  */
491
      if (code2 == TYPE_CODE_PTR)
492
        longest = extract_unsigned_integer
493
                    (value_contents (arg2), TYPE_LENGTH (type2),
494
                     gdbarch_byte_order (get_type_arch (type2)));
495
      else
496
        longest = value_as_long (arg2);
497
      return value_from_longest (type, convert_to_boolean ?
498
                                 (LONGEST) (longest ? 1 : 0) : longest);
499
    }
500
  else if (code1 == TYPE_CODE_PTR && (code2 == TYPE_CODE_INT
501
                                      || code2 == TYPE_CODE_ENUM
502
                                      || code2 == TYPE_CODE_RANGE))
503
    {
504
      /* TYPE_LENGTH (type) is the length of a pointer, but we really
505
         want the length of an address! -- we are really dealing with
506
         addresses (i.e., gdb representations) not pointers (i.e.,
507
         target representations) here.
508
 
509
         This allows things like "print *(int *)0x01000234" to work
510
         without printing a misleading message -- which would
511
         otherwise occur when dealing with a target having two byte
512
         pointers and four byte addresses.  */
513
 
514
      int addr_bit = gdbarch_addr_bit (get_type_arch (type2));
515
      LONGEST longest = value_as_long (arg2);
516
 
517
      if (addr_bit < sizeof (LONGEST) * HOST_CHAR_BIT)
518
        {
519
          if (longest >= ((LONGEST) 1 << addr_bit)
520
              || longest <= -((LONGEST) 1 << addr_bit))
521
            warning (_("value truncated"));
522
        }
523
      return value_from_longest (type, longest);
524
    }
525
  else if (code1 == TYPE_CODE_METHODPTR && code2 == TYPE_CODE_INT
526
           && value_as_long (arg2) == 0)
527
    {
528
      struct value *result = allocate_value (type);
529
 
530
      cplus_make_method_ptr (type, value_contents_writeable (result), 0, 0);
531
      return result;
532
    }
533
  else if (code1 == TYPE_CODE_MEMBERPTR && code2 == TYPE_CODE_INT
534
           && value_as_long (arg2) == 0)
535
    {
536
      /* The Itanium C++ ABI represents NULL pointers to members as
537
         minus one, instead of biasing the normal case.  */
538
      return value_from_longest (type, -1);
539
    }
540
  else if (TYPE_LENGTH (type) == TYPE_LENGTH (type2))
541
    {
542
      if (code1 == TYPE_CODE_PTR && code2 == TYPE_CODE_PTR)
543
        return value_cast_pointers (type, arg2);
544
 
545
      arg2 = value_copy (arg2);
546
      deprecated_set_value_type (arg2, type);
547
      arg2 = value_change_enclosing_type (arg2, type);
548
      set_value_pointed_to_offset (arg2, 0);     /* pai: chk_val */
549
      return arg2;
550
    }
551
  else if (VALUE_LVAL (arg2) == lval_memory)
552
    return value_at_lazy (type, value_address (arg2));
553
  else if (code1 == TYPE_CODE_VOID)
554
    {
555
      return value_zero (type, not_lval);
556
    }
557
  else
558
    {
559
      error (_("Invalid cast."));
560
      return 0;
561
    }
562
}
563
 
564
/* The C++ reinterpret_cast operator.  */
565
 
566
struct value *
567
value_reinterpret_cast (struct type *type, struct value *arg)
568
{
569
  struct value *result;
570
  struct type *real_type = check_typedef (type);
571
  struct type *arg_type, *dest_type;
572
  int is_ref = 0;
573
  enum type_code dest_code, arg_code;
574
 
575
  /* Do reference, function, and array conversion.  */
576
  arg = coerce_array (arg);
577
 
578
  /* Attempt to preserve the type the user asked for.  */
579
  dest_type = type;
580
 
581
  /* If we are casting to a reference type, transform
582
     reinterpret_cast<T&>(V) to *reinterpret_cast<T*>(&V).  */
583
  if (TYPE_CODE (real_type) == TYPE_CODE_REF)
584
    {
585
      is_ref = 1;
586
      arg = value_addr (arg);
587
      dest_type = lookup_pointer_type (TYPE_TARGET_TYPE (dest_type));
588
      real_type = lookup_pointer_type (real_type);
589
    }
590
 
591
  arg_type = value_type (arg);
592
 
593
  dest_code = TYPE_CODE (real_type);
594
  arg_code = TYPE_CODE (arg_type);
595
 
596
  /* We can convert pointer types, or any pointer type to int, or int
597
     type to pointer.  */
598
  if ((dest_code == TYPE_CODE_PTR && arg_code == TYPE_CODE_INT)
599
      || (dest_code == TYPE_CODE_INT && arg_code == TYPE_CODE_PTR)
600
      || (dest_code == TYPE_CODE_METHODPTR && arg_code == TYPE_CODE_INT)
601
      || (dest_code == TYPE_CODE_INT && arg_code == TYPE_CODE_METHODPTR)
602
      || (dest_code == TYPE_CODE_MEMBERPTR && arg_code == TYPE_CODE_INT)
603
      || (dest_code == TYPE_CODE_INT && arg_code == TYPE_CODE_MEMBERPTR)
604
      || (dest_code == arg_code
605
          && (dest_code == TYPE_CODE_PTR
606
              || dest_code == TYPE_CODE_METHODPTR
607
              || dest_code == TYPE_CODE_MEMBERPTR)))
608
    result = value_cast (dest_type, arg);
609
  else
610
    error (_("Invalid reinterpret_cast"));
611
 
612
  if (is_ref)
613
    result = value_cast (type, value_ref (value_ind (result)));
614
 
615
  return result;
616
}
617
 
618
/* A helper for value_dynamic_cast.  This implements the first of two
619
   runtime checks: we iterate over all the base classes of the value's
620
   class which are equal to the desired class; if only one of these
621
   holds the value, then it is the answer.  */
622
 
623
static int
624
dynamic_cast_check_1 (struct type *desired_type,
625
                      const bfd_byte *contents,
626
                      CORE_ADDR address,
627
                      struct type *search_type,
628
                      CORE_ADDR arg_addr,
629
                      struct type *arg_type,
630
                      struct value **result)
631
{
632
  int i, result_count = 0;
633
 
634
  for (i = 0; i < TYPE_N_BASECLASSES (search_type) && result_count < 2; ++i)
635
    {
636
      int offset = baseclass_offset (search_type, i, contents, address);
637
 
638
      if (offset == -1)
639
        error (_("virtual baseclass botch"));
640
      if (class_types_same_p (desired_type, TYPE_BASECLASS (search_type, i)))
641
        {
642
          if (address + offset >= arg_addr
643
              && address + offset < arg_addr + TYPE_LENGTH (arg_type))
644
            {
645
              ++result_count;
646
              if (!*result)
647
                *result = value_at_lazy (TYPE_BASECLASS (search_type, i),
648
                                         address + offset);
649
            }
650
        }
651
      else
652
        result_count += dynamic_cast_check_1 (desired_type,
653
                                              contents + offset,
654
                                              address + offset,
655
                                              TYPE_BASECLASS (search_type, i),
656
                                              arg_addr,
657
                                              arg_type,
658
                                              result);
659
    }
660
 
661
  return result_count;
662
}
663
 
664
/* A helper for value_dynamic_cast.  This implements the second of two
665
   runtime checks: we look for a unique public sibling class of the
666
   argument's declared class.  */
667
 
668
static int
669
dynamic_cast_check_2 (struct type *desired_type,
670
                      const bfd_byte *contents,
671
                      CORE_ADDR address,
672
                      struct type *search_type,
673
                      struct value **result)
674
{
675
  int i, result_count = 0;
676
 
677
  for (i = 0; i < TYPE_N_BASECLASSES (search_type) && result_count < 2; ++i)
678
    {
679
      int offset;
680
 
681
      if (! BASETYPE_VIA_PUBLIC (search_type, i))
682
        continue;
683
 
684
      offset = baseclass_offset (search_type, i, contents, address);
685
      if (offset == -1)
686
        error (_("virtual baseclass botch"));
687
      if (class_types_same_p (desired_type, TYPE_BASECLASS (search_type, i)))
688
        {
689
          ++result_count;
690
          if (*result == NULL)
691
            *result = value_at_lazy (TYPE_BASECLASS (search_type, i),
692
                                     address + offset);
693
        }
694
      else
695
        result_count += dynamic_cast_check_2 (desired_type,
696
                                              contents + offset,
697
                                              address + offset,
698
                                              TYPE_BASECLASS (search_type, i),
699
                                              result);
700
    }
701
 
702
  return result_count;
703
}
704
 
705
/* The C++ dynamic_cast operator.  */
706
 
707
struct value *
708
value_dynamic_cast (struct type *type, struct value *arg)
709
{
710
  int full, top, using_enc;
711
  struct type *resolved_type = check_typedef (type);
712
  struct type *arg_type = check_typedef (value_type (arg));
713
  struct type *class_type, *rtti_type;
714
  struct value *result, *tem, *original_arg = arg;
715
  CORE_ADDR addr;
716
  int is_ref = TYPE_CODE (resolved_type) == TYPE_CODE_REF;
717
 
718
  if (TYPE_CODE (resolved_type) != TYPE_CODE_PTR
719
      && TYPE_CODE (resolved_type) != TYPE_CODE_REF)
720
    error (_("Argument to dynamic_cast must be a pointer or reference type"));
721
  if (TYPE_CODE (TYPE_TARGET_TYPE (resolved_type)) != TYPE_CODE_VOID
722
      && TYPE_CODE (TYPE_TARGET_TYPE (resolved_type)) != TYPE_CODE_CLASS)
723
    error (_("Argument to dynamic_cast must be pointer to class or `void *'"));
724
 
725
  class_type = check_typedef (TYPE_TARGET_TYPE (resolved_type));
726
  if (TYPE_CODE (resolved_type) == TYPE_CODE_PTR)
727
    {
728
      if (TYPE_CODE (arg_type) != TYPE_CODE_PTR
729
          && ! (TYPE_CODE (arg_type) == TYPE_CODE_INT
730
                && value_as_long (arg) == 0))
731
        error (_("Argument to dynamic_cast does not have pointer type"));
732
      if (TYPE_CODE (arg_type) == TYPE_CODE_PTR)
733
        {
734
          arg_type = check_typedef (TYPE_TARGET_TYPE (arg_type));
735
          if (TYPE_CODE (arg_type) != TYPE_CODE_CLASS)
736
            error (_("Argument to dynamic_cast does not have pointer to class type"));
737
        }
738
 
739
      /* Handle NULL pointers.  */
740
      if (value_as_long (arg) == 0)
741
        return value_zero (type, not_lval);
742
 
743
      arg = value_ind (arg);
744
    }
745
  else
746
    {
747
      if (TYPE_CODE (arg_type) != TYPE_CODE_CLASS)
748
        error (_("Argument to dynamic_cast does not have class type"));
749
    }
750
 
751
  /* If the classes are the same, just return the argument.  */
752
  if (class_types_same_p (class_type, arg_type))
753
    return value_cast (type, arg);
754
 
755
  /* If the target type is a unique base class of the argument's
756
     declared type, just cast it.  */
757
  if (is_ancestor (class_type, arg_type))
758
    {
759
      if (is_unique_ancestor (class_type, arg))
760
        return value_cast (type, original_arg);
761
      error (_("Ambiguous dynamic_cast"));
762
    }
763
 
764
  rtti_type = value_rtti_type (arg, &full, &top, &using_enc);
765
  if (! rtti_type)
766
    error (_("Couldn't determine value's most derived type for dynamic_cast"));
767
 
768
  /* Compute the most derived object's address.  */
769
  addr = value_address (arg);
770
  if (full)
771
    {
772
      /* Done.  */
773
    }
774
  else if (using_enc)
775
    addr += top;
776
  else
777
    addr += top + value_embedded_offset (arg);
778
 
779
  /* dynamic_cast<void *> means to return a pointer to the
780
     most-derived object.  */
781
  if (TYPE_CODE (resolved_type) == TYPE_CODE_PTR
782
      && TYPE_CODE (TYPE_TARGET_TYPE (resolved_type)) == TYPE_CODE_VOID)
783
    return value_at_lazy (type, addr);
784
 
785
  tem = value_at (type, addr);
786
 
787
  /* The first dynamic check specified in 5.2.7.  */
788
  if (is_public_ancestor (arg_type, TYPE_TARGET_TYPE (resolved_type)))
789
    {
790
      if (class_types_same_p (rtti_type, TYPE_TARGET_TYPE (resolved_type)))
791
        return tem;
792
      result = NULL;
793
      if (dynamic_cast_check_1 (TYPE_TARGET_TYPE (resolved_type),
794
                                value_contents (tem), value_address (tem),
795
                                rtti_type, addr,
796
                                arg_type,
797
                                &result) == 1)
798
        return value_cast (type,
799
                           is_ref ? value_ref (result) : value_addr (result));
800
    }
801
 
802
  /* The second dynamic check specified in 5.2.7.  */
803
  result = NULL;
804
  if (is_public_ancestor (arg_type, rtti_type)
805
      && dynamic_cast_check_2 (TYPE_TARGET_TYPE (resolved_type),
806
                               value_contents (tem), value_address (tem),
807
                               rtti_type, &result) == 1)
808
    return value_cast (type,
809
                       is_ref ? value_ref (result) : value_addr (result));
810
 
811
  if (TYPE_CODE (resolved_type) == TYPE_CODE_PTR)
812
    return value_zero (type, not_lval);
813
 
814
  error (_("dynamic_cast failed"));
815
}
816
 
817
/* Create a value of type TYPE that is zero, and return it.  */
818
 
819
struct value *
820
value_zero (struct type *type, enum lval_type lv)
821
{
822
  struct value *val = allocate_value (type);
823
 
824
  VALUE_LVAL (val) = lv;
825
  return val;
826
}
827
 
828
/* Create a value of numeric type TYPE that is one, and return it.  */
829
 
830
struct value *
831
value_one (struct type *type, enum lval_type lv)
832
{
833
  struct type *type1 = check_typedef (type);
834
  struct value *val;
835
 
836
  if (TYPE_CODE (type1) == TYPE_CODE_DECFLOAT)
837
    {
838
      enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
839
      gdb_byte v[16];
840
 
841
      decimal_from_string (v, TYPE_LENGTH (type), byte_order, "1");
842
      val = value_from_decfloat (type, v);
843
    }
844
  else if (TYPE_CODE (type1) == TYPE_CODE_FLT)
845
    {
846
      val = value_from_double (type, (DOUBLEST) 1);
847
    }
848
  else if (is_integral_type (type1))
849
    {
850
      val = value_from_longest (type, (LONGEST) 1);
851
    }
852
  else
853
    {
854
      error (_("Not a numeric type."));
855
    }
856
 
857
  VALUE_LVAL (val) = lv;
858
  return val;
859
}
860
 
861
/* Helper function for value_at, value_at_lazy, and value_at_lazy_stack.  */
862
 
863
static struct value *
864
get_value_at (struct type *type, CORE_ADDR addr, int lazy)
865
{
866
  struct value *val;
867
 
868
  if (TYPE_CODE (check_typedef (type)) == TYPE_CODE_VOID)
869
    error (_("Attempt to dereference a generic pointer."));
870
 
871
  if (lazy)
872
    {
873
      val = allocate_value_lazy (type);
874
    }
875
  else
876
    {
877
      val = allocate_value (type);
878
      read_memory (addr, value_contents_all_raw (val), TYPE_LENGTH (type));
879
    }
880
 
881
  VALUE_LVAL (val) = lval_memory;
882
  set_value_address (val, addr);
883
 
884
  return val;
885
}
886
 
887
/* Return a value with type TYPE located at ADDR.
888
 
889
   Call value_at only if the data needs to be fetched immediately;
890
   if we can be 'lazy' and defer the fetch, perhaps indefinately, call
891
   value_at_lazy instead.  value_at_lazy simply records the address of
892
   the data and sets the lazy-evaluation-required flag.  The lazy flag
893
   is tested in the value_contents macro, which is used if and when
894
   the contents are actually required.
895
 
896
   Note: value_at does *NOT* handle embedded offsets; perform such
897
   adjustments before or after calling it.  */
898
 
899
struct value *
900
value_at (struct type *type, CORE_ADDR addr)
901
{
902
  return get_value_at (type, addr, 0);
903
}
904
 
905
/* Return a lazy value with type TYPE located at ADDR (cf. value_at).  */
906
 
907
struct value *
908
value_at_lazy (struct type *type, CORE_ADDR addr)
909
{
910
  return get_value_at (type, addr, 1);
911
}
912
 
913
/* Called only from the value_contents and value_contents_all()
914
   macros, if the current data for a variable needs to be loaded into
915
   value_contents(VAL).  Fetches the data from the user's process, and
916
   clears the lazy flag to indicate that the data in the buffer is
917
   valid.
918
 
919
   If the value is zero-length, we avoid calling read_memory, which
920
   would abort.  We mark the value as fetched anyway -- all 0 bytes of
921
   it.
922
 
923
   This function returns a value because it is used in the
924
   value_contents macro as part of an expression, where a void would
925
   not work.  The value is ignored.  */
926
 
927
int
928
value_fetch_lazy (struct value *val)
929
{
930
  gdb_assert (value_lazy (val));
931
  allocate_value_contents (val);
932
  if (value_bitsize (val))
933
    {
934
      /* To read a lazy bitfield, read the entire enclosing value.  This
935
         prevents reading the same block of (possibly volatile) memory once
936
         per bitfield.  It would be even better to read only the containing
937
         word, but we have no way to record that just specific bits of a
938
         value have been fetched.  */
939
      struct type *type = check_typedef (value_type (val));
940
      enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
941
      struct value *parent = value_parent (val);
942
      LONGEST offset = value_offset (val);
943
      LONGEST num = unpack_bits_as_long (value_type (val),
944
                                         (value_contents_for_printing (parent)
945
                                          + offset),
946
                                         value_bitpos (val),
947
                                         value_bitsize (val));
948
      int length = TYPE_LENGTH (type);
949
 
950
      if (!value_bits_valid (val,
951
                             TARGET_CHAR_BIT * offset + value_bitpos (val),
952
                             value_bitsize (val)))
953
        error (_("value has been optimized out"));
954
 
955
      store_signed_integer (value_contents_raw (val), length, byte_order, num);
956
    }
957
  else if (VALUE_LVAL (val) == lval_memory)
958
    {
959
      CORE_ADDR addr = value_address (val);
960
      int length = TYPE_LENGTH (check_typedef (value_enclosing_type (val)));
961
 
962
      if (length)
963
        {
964
          if (value_stack (val))
965
            read_stack (addr, value_contents_all_raw (val), length);
966
          else
967
            read_memory (addr, value_contents_all_raw (val), length);
968
        }
969
    }
970
  else if (VALUE_LVAL (val) == lval_register)
971
    {
972
      struct frame_info *frame;
973
      int regnum;
974
      struct type *type = check_typedef (value_type (val));
975
      struct value *new_val = val, *mark = value_mark ();
976
 
977
      /* Offsets are not supported here; lazy register values must
978
         refer to the entire register.  */
979
      gdb_assert (value_offset (val) == 0);
980
 
981
      while (VALUE_LVAL (new_val) == lval_register && value_lazy (new_val))
982
        {
983
          frame = frame_find_by_id (VALUE_FRAME_ID (new_val));
984
          regnum = VALUE_REGNUM (new_val);
985
 
986
          gdb_assert (frame != NULL);
987
 
988
          /* Convertible register routines are used for multi-register
989
             values and for interpretation in different types
990
             (e.g. float or int from a double register).  Lazy
991
             register values should have the register's natural type,
992
             so they do not apply.  */
993
          gdb_assert (!gdbarch_convert_register_p (get_frame_arch (frame),
994
                                                   regnum, type));
995
 
996
          new_val = get_frame_register_value (frame, regnum);
997
        }
998
 
999
      /* If it's still lazy (for instance, a saved register on the
1000
         stack), fetch it.  */
1001
      if (value_lazy (new_val))
1002
        value_fetch_lazy (new_val);
1003
 
1004
      /* If the register was not saved, mark it unavailable.  */
1005
      if (value_optimized_out (new_val))
1006
        set_value_optimized_out (val, 1);
1007
      else
1008
        memcpy (value_contents_raw (val), value_contents (new_val),
1009
                TYPE_LENGTH (type));
1010
 
1011
      if (frame_debug)
1012
        {
1013
          struct gdbarch *gdbarch;
1014
          frame = frame_find_by_id (VALUE_FRAME_ID (val));
1015
          regnum = VALUE_REGNUM (val);
1016
          gdbarch = get_frame_arch (frame);
1017
 
1018
          fprintf_unfiltered (gdb_stdlog, "\
1019
{ value_fetch_lazy (frame=%d,regnum=%d(%s),...) ",
1020
                              frame_relative_level (frame), regnum,
1021
                              user_reg_map_regnum_to_name (gdbarch, regnum));
1022
 
1023
          fprintf_unfiltered (gdb_stdlog, "->");
1024
          if (value_optimized_out (new_val))
1025
            fprintf_unfiltered (gdb_stdlog, " optimized out");
1026
          else
1027
            {
1028
              int i;
1029
              const gdb_byte *buf = value_contents (new_val);
1030
 
1031
              if (VALUE_LVAL (new_val) == lval_register)
1032
                fprintf_unfiltered (gdb_stdlog, " register=%d",
1033
                                    VALUE_REGNUM (new_val));
1034
              else if (VALUE_LVAL (new_val) == lval_memory)
1035
                fprintf_unfiltered (gdb_stdlog, " address=%s",
1036
                                    paddress (gdbarch,
1037
                                              value_address (new_val)));
1038
              else
1039
                fprintf_unfiltered (gdb_stdlog, " computed");
1040
 
1041
              fprintf_unfiltered (gdb_stdlog, " bytes=");
1042
              fprintf_unfiltered (gdb_stdlog, "[");
1043
              for (i = 0; i < register_size (gdbarch, regnum); i++)
1044
                fprintf_unfiltered (gdb_stdlog, "%02x", buf[i]);
1045
              fprintf_unfiltered (gdb_stdlog, "]");
1046
            }
1047
 
1048
          fprintf_unfiltered (gdb_stdlog, " }\n");
1049
        }
1050
 
1051
      /* Dispose of the intermediate values.  This prevents
1052
         watchpoints from trying to watch the saved frame pointer.  */
1053
      value_free_to_mark (mark);
1054
    }
1055
  else if (VALUE_LVAL (val) == lval_computed)
1056
    value_computed_funcs (val)->read (val);
1057
  else
1058
    internal_error (__FILE__, __LINE__, "Unexpected lazy value type.");
1059
 
1060
  set_value_lazy (val, 0);
1061
  return 0;
1062
}
1063
 
1064
 
1065
/* Store the contents of FROMVAL into the location of TOVAL.
1066
   Return a new value with the location of TOVAL and contents of FROMVAL.  */
1067
 
1068
struct value *
1069
value_assign (struct value *toval, struct value *fromval)
1070
{
1071
  struct type *type;
1072
  struct value *val;
1073
  struct frame_id old_frame;
1074
 
1075
  if (!deprecated_value_modifiable (toval))
1076
    error (_("Left operand of assignment is not a modifiable lvalue."));
1077
 
1078
  toval = coerce_ref (toval);
1079
 
1080
  type = value_type (toval);
1081
  if (VALUE_LVAL (toval) != lval_internalvar)
1082
    {
1083
      toval = value_coerce_to_target (toval);
1084
      fromval = value_cast (type, fromval);
1085
    }
1086
  else
1087
    {
1088
      /* Coerce arrays and functions to pointers, except for arrays
1089
         which only live in GDB's storage.  */
1090
      if (!value_must_coerce_to_target (fromval))
1091
        fromval = coerce_array (fromval);
1092
    }
1093
 
1094
  CHECK_TYPEDEF (type);
1095
 
1096
  /* Since modifying a register can trash the frame chain, and
1097
     modifying memory can trash the frame cache, we save the old frame
1098
     and then restore the new frame afterwards.  */
1099
  old_frame = get_frame_id (deprecated_safe_get_selected_frame ());
1100
 
1101
  switch (VALUE_LVAL (toval))
1102
    {
1103
    case lval_internalvar:
1104
      set_internalvar (VALUE_INTERNALVAR (toval), fromval);
1105
      val = value_copy (fromval);
1106
      val = value_change_enclosing_type (val,
1107
                                         value_enclosing_type (fromval));
1108
      set_value_embedded_offset (val, value_embedded_offset (fromval));
1109
      set_value_pointed_to_offset (val,
1110
                                   value_pointed_to_offset (fromval));
1111
      return val;
1112
 
1113
    case lval_internalvar_component:
1114
      set_internalvar_component (VALUE_INTERNALVAR (toval),
1115
                                 value_offset (toval),
1116
                                 value_bitpos (toval),
1117
                                 value_bitsize (toval),
1118
                                 fromval);
1119
      break;
1120
 
1121
    case lval_memory:
1122
      {
1123
        const gdb_byte *dest_buffer;
1124
        CORE_ADDR changed_addr;
1125
        int changed_len;
1126
        gdb_byte buffer[sizeof (LONGEST)];
1127
 
1128
        if (value_bitsize (toval))
1129
          {
1130
            struct value *parent = value_parent (toval);
1131
 
1132
            changed_addr = value_address (parent) + value_offset (toval);
1133
            changed_len = (value_bitpos (toval)
1134
                           + value_bitsize (toval)
1135
                           + HOST_CHAR_BIT - 1)
1136
              / HOST_CHAR_BIT;
1137
 
1138
            /* If we can read-modify-write exactly the size of the
1139
               containing type (e.g. short or int) then do so.  This
1140
               is safer for volatile bitfields mapped to hardware
1141
               registers.  */
1142
            if (changed_len < TYPE_LENGTH (type)
1143
                && TYPE_LENGTH (type) <= (int) sizeof (LONGEST)
1144
                && ((LONGEST) changed_addr % TYPE_LENGTH (type)) == 0)
1145
              changed_len = TYPE_LENGTH (type);
1146
 
1147
            if (changed_len > (int) sizeof (LONGEST))
1148
              error (_("Can't handle bitfields which don't fit in a %d bit word."),
1149
                     (int) sizeof (LONGEST) * HOST_CHAR_BIT);
1150
 
1151
            read_memory (changed_addr, buffer, changed_len);
1152
            modify_field (type, buffer, value_as_long (fromval),
1153
                          value_bitpos (toval), value_bitsize (toval));
1154
            dest_buffer = buffer;
1155
          }
1156
        else
1157
          {
1158
            changed_addr = value_address (toval);
1159
            changed_len = TYPE_LENGTH (type);
1160
            dest_buffer = value_contents (fromval);
1161
          }
1162
 
1163
        write_memory (changed_addr, dest_buffer, changed_len);
1164
        observer_notify_memory_changed (changed_addr, changed_len,
1165
                                        dest_buffer);
1166
      }
1167
      break;
1168
 
1169
    case lval_register:
1170
      {
1171
        struct frame_info *frame;
1172
        struct gdbarch *gdbarch;
1173
        int value_reg;
1174
 
1175
        /* Figure out which frame this is in currently.  */
1176
        frame = frame_find_by_id (VALUE_FRAME_ID (toval));
1177
        value_reg = VALUE_REGNUM (toval);
1178
 
1179
        if (!frame)
1180
          error (_("Value being assigned to is no longer active."));
1181
 
1182
        gdbarch = get_frame_arch (frame);
1183
        if (gdbarch_convert_register_p (gdbarch, VALUE_REGNUM (toval), type))
1184
          {
1185
            /* If TOVAL is a special machine register requiring
1186
               conversion of program values to a special raw
1187
               format.  */
1188
            gdbarch_value_to_register (gdbarch, frame,
1189
                                       VALUE_REGNUM (toval), type,
1190
                                       value_contents (fromval));
1191
          }
1192
        else
1193
          {
1194
            if (value_bitsize (toval))
1195
              {
1196
                struct value *parent = value_parent (toval);
1197
                int offset = value_offset (parent) + value_offset (toval);
1198
                int changed_len;
1199
                gdb_byte buffer[sizeof (LONGEST)];
1200
 
1201
                changed_len = (value_bitpos (toval)
1202
                               + value_bitsize (toval)
1203
                               + HOST_CHAR_BIT - 1)
1204
                  / HOST_CHAR_BIT;
1205
 
1206
                if (changed_len > (int) sizeof (LONGEST))
1207
                  error (_("Can't handle bitfields which don't fit in a %d bit word."),
1208
                         (int) sizeof (LONGEST) * HOST_CHAR_BIT);
1209
 
1210
                get_frame_register_bytes (frame, value_reg, offset,
1211
                                          changed_len, buffer);
1212
 
1213
                modify_field (type, buffer, value_as_long (fromval),
1214
                              value_bitpos (toval), value_bitsize (toval));
1215
 
1216
                put_frame_register_bytes (frame, value_reg, offset,
1217
                                          changed_len, buffer);
1218
              }
1219
            else
1220
              {
1221
                put_frame_register_bytes (frame, value_reg,
1222
                                          value_offset (toval),
1223
                                          TYPE_LENGTH (type),
1224
                                          value_contents (fromval));
1225
              }
1226
          }
1227
 
1228
        if (deprecated_register_changed_hook)
1229
          deprecated_register_changed_hook (-1);
1230
        observer_notify_target_changed (&current_target);
1231
        break;
1232
      }
1233
 
1234
    case lval_computed:
1235
      {
1236
        struct lval_funcs *funcs = value_computed_funcs (toval);
1237
 
1238
        funcs->write (toval, fromval);
1239
      }
1240
      break;
1241
 
1242
    default:
1243
      error (_("Left operand of assignment is not an lvalue."));
1244
    }
1245
 
1246
  /* Assigning to the stack pointer, frame pointer, and other
1247
     (architecture and calling convention specific) registers may
1248
     cause the frame cache to be out of date.  Assigning to memory
1249
     also can.  We just do this on all assignments to registers or
1250
     memory, for simplicity's sake; I doubt the slowdown matters.  */
1251
  switch (VALUE_LVAL (toval))
1252
    {
1253
    case lval_memory:
1254
    case lval_register:
1255
    case lval_computed:
1256
 
1257
      reinit_frame_cache ();
1258
 
1259
      /* Having destroyed the frame cache, restore the selected
1260
         frame.  */
1261
 
1262
      /* FIXME: cagney/2002-11-02: There has to be a better way of
1263
         doing this.  Instead of constantly saving/restoring the
1264
         frame.  Why not create a get_selected_frame() function that,
1265
         having saved the selected frame's ID can automatically
1266
         re-find the previously selected frame automatically.  */
1267
 
1268
      {
1269
        struct frame_info *fi = frame_find_by_id (old_frame);
1270
 
1271
        if (fi != NULL)
1272
          select_frame (fi);
1273
      }
1274
 
1275
      break;
1276
    default:
1277
      break;
1278
    }
1279
 
1280
  /* If the field does not entirely fill a LONGEST, then zero the sign
1281
     bits.  If the field is signed, and is negative, then sign
1282
     extend.  */
1283
  if ((value_bitsize (toval) > 0)
1284
      && (value_bitsize (toval) < 8 * (int) sizeof (LONGEST)))
1285
    {
1286
      LONGEST fieldval = value_as_long (fromval);
1287
      LONGEST valmask = (((ULONGEST) 1) << value_bitsize (toval)) - 1;
1288
 
1289
      fieldval &= valmask;
1290
      if (!TYPE_UNSIGNED (type)
1291
          && (fieldval & (valmask ^ (valmask >> 1))))
1292
        fieldval |= ~valmask;
1293
 
1294
      fromval = value_from_longest (type, fieldval);
1295
    }
1296
 
1297
  val = value_copy (toval);
1298
  memcpy (value_contents_raw (val), value_contents (fromval),
1299
          TYPE_LENGTH (type));
1300
  deprecated_set_value_type (val, type);
1301
  val = value_change_enclosing_type (val,
1302
                                     value_enclosing_type (fromval));
1303
  set_value_embedded_offset (val, value_embedded_offset (fromval));
1304
  set_value_pointed_to_offset (val, value_pointed_to_offset (fromval));
1305
 
1306
  return val;
1307
}
1308
 
1309
/* Extend a value VAL to COUNT repetitions of its type.  */
1310
 
1311
struct value *
1312
value_repeat (struct value *arg1, int count)
1313
{
1314
  struct value *val;
1315
 
1316
  if (VALUE_LVAL (arg1) != lval_memory)
1317
    error (_("Only values in memory can be extended with '@'."));
1318
  if (count < 1)
1319
    error (_("Invalid number %d of repetitions."), count);
1320
 
1321
  val = allocate_repeat_value (value_enclosing_type (arg1), count);
1322
 
1323
  read_memory (value_address (arg1),
1324
               value_contents_all_raw (val),
1325
               TYPE_LENGTH (value_enclosing_type (val)));
1326
  VALUE_LVAL (val) = lval_memory;
1327
  set_value_address (val, value_address (arg1));
1328
 
1329
  return val;
1330
}
1331
 
1332
struct value *
1333
value_of_variable (struct symbol *var, struct block *b)
1334
{
1335
  struct value *val;
1336
  struct frame_info *frame;
1337
 
1338
  if (!symbol_read_needs_frame (var))
1339
    frame = NULL;
1340
  else if (!b)
1341
    frame = get_selected_frame (_("No frame selected."));
1342
  else
1343
    {
1344
      frame = block_innermost_frame (b);
1345
      if (!frame)
1346
        {
1347
          if (BLOCK_FUNCTION (b) && !block_inlined_p (b)
1348
              && SYMBOL_PRINT_NAME (BLOCK_FUNCTION (b)))
1349
            error (_("No frame is currently executing in block %s."),
1350
                   SYMBOL_PRINT_NAME (BLOCK_FUNCTION (b)));
1351
          else
1352
            error (_("No frame is currently executing in specified block"));
1353
        }
1354
    }
1355
 
1356
  val = read_var_value (var, frame);
1357
  if (!val)
1358
    error (_("Address of symbol \"%s\" is unknown."), SYMBOL_PRINT_NAME (var));
1359
 
1360
  return val;
1361
}
1362
 
1363
struct value *
1364
address_of_variable (struct symbol *var, struct block *b)
1365
{
1366
  struct type *type = SYMBOL_TYPE (var);
1367
  struct value *val;
1368
 
1369
  /* Evaluate it first; if the result is a memory address, we're fine.
1370
     Lazy evaluation pays off here. */
1371
 
1372
  val = value_of_variable (var, b);
1373
 
1374
  if ((VALUE_LVAL (val) == lval_memory && value_lazy (val))
1375
      || TYPE_CODE (type) == TYPE_CODE_FUNC)
1376
    {
1377
      CORE_ADDR addr = value_address (val);
1378
 
1379
      return value_from_pointer (lookup_pointer_type (type), addr);
1380
    }
1381
 
1382
  /* Not a memory address; check what the problem was.  */
1383
  switch (VALUE_LVAL (val))
1384
    {
1385
    case lval_register:
1386
      {
1387
        struct frame_info *frame;
1388
        const char *regname;
1389
 
1390
        frame = frame_find_by_id (VALUE_FRAME_ID (val));
1391
        gdb_assert (frame);
1392
 
1393
        regname = gdbarch_register_name (get_frame_arch (frame),
1394
                                         VALUE_REGNUM (val));
1395
        gdb_assert (regname && *regname);
1396
 
1397
        error (_("Address requested for identifier "
1398
                 "\"%s\" which is in register $%s"),
1399
               SYMBOL_PRINT_NAME (var), regname);
1400
        break;
1401
      }
1402
 
1403
    default:
1404
      error (_("Can't take address of \"%s\" which isn't an lvalue."),
1405
             SYMBOL_PRINT_NAME (var));
1406
      break;
1407
    }
1408
 
1409
  return val;
1410
}
1411
 
1412
/* Return one if VAL does not live in target memory, but should in order
1413
   to operate on it.  Otherwise return zero.  */
1414
 
1415
int
1416
value_must_coerce_to_target (struct value *val)
1417
{
1418
  struct type *valtype;
1419
 
1420
  /* The only lval kinds which do not live in target memory.  */
1421
  if (VALUE_LVAL (val) != not_lval
1422
      && VALUE_LVAL (val) != lval_internalvar)
1423
    return 0;
1424
 
1425
  valtype = check_typedef (value_type (val));
1426
 
1427
  switch (TYPE_CODE (valtype))
1428
    {
1429
    case TYPE_CODE_ARRAY:
1430
    case TYPE_CODE_STRING:
1431
      return 1;
1432
    default:
1433
      return 0;
1434
    }
1435
}
1436
 
1437
/* Make sure that VAL lives in target memory if it's supposed to.  For instance,
1438
   strings are constructed as character arrays in GDB's storage, and this
1439
   function copies them to the target.  */
1440
 
1441
struct value *
1442
value_coerce_to_target (struct value *val)
1443
{
1444
  LONGEST length;
1445
  CORE_ADDR addr;
1446
 
1447
  if (!value_must_coerce_to_target (val))
1448
    return val;
1449
 
1450
  length = TYPE_LENGTH (check_typedef (value_type (val)));
1451
  addr = allocate_space_in_inferior (length);
1452
  write_memory (addr, value_contents (val), length);
1453
  return value_at_lazy (value_type (val), addr);
1454
}
1455
 
1456
/* Given a value which is an array, return a value which is a pointer
1457
   to its first element, regardless of whether or not the array has a
1458
   nonzero lower bound.
1459
 
1460
   FIXME: A previous comment here indicated that this routine should
1461
   be substracting the array's lower bound.  It's not clear to me that
1462
   this is correct.  Given an array subscripting operation, it would
1463
   certainly work to do the adjustment here, essentially computing:
1464
 
1465
   (&array[0] - (lowerbound * sizeof array[0])) + (index * sizeof array[0])
1466
 
1467
   However I believe a more appropriate and logical place to account
1468
   for the lower bound is to do so in value_subscript, essentially
1469
   computing:
1470
 
1471
   (&array[0] + ((index - lowerbound) * sizeof array[0]))
1472
 
1473
   As further evidence consider what would happen with operations
1474
   other than array subscripting, where the caller would get back a
1475
   value that had an address somewhere before the actual first element
1476
   of the array, and the information about the lower bound would be
1477
   lost because of the coercion to pointer type.
1478
 */
1479
 
1480
struct value *
1481
value_coerce_array (struct value *arg1)
1482
{
1483
  struct type *type = check_typedef (value_type (arg1));
1484
 
1485
  /* If the user tries to do something requiring a pointer with an
1486
     array that has not yet been pushed to the target, then this would
1487
     be a good time to do so.  */
1488
  arg1 = value_coerce_to_target (arg1);
1489
 
1490
  if (VALUE_LVAL (arg1) != lval_memory)
1491
    error (_("Attempt to take address of value not located in memory."));
1492
 
1493
  return value_from_pointer (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
1494
                             value_address (arg1));
1495
}
1496
 
1497
/* Given a value which is a function, return a value which is a pointer
1498
   to it.  */
1499
 
1500
struct value *
1501
value_coerce_function (struct value *arg1)
1502
{
1503
  struct value *retval;
1504
 
1505
  if (VALUE_LVAL (arg1) != lval_memory)
1506
    error (_("Attempt to take address of value not located in memory."));
1507
 
1508
  retval = value_from_pointer (lookup_pointer_type (value_type (arg1)),
1509
                               value_address (arg1));
1510
  return retval;
1511
}
1512
 
1513
/* Return a pointer value for the object for which ARG1 is the
1514
   contents.  */
1515
 
1516
struct value *
1517
value_addr (struct value *arg1)
1518
{
1519
  struct value *arg2;
1520
  struct type *type = check_typedef (value_type (arg1));
1521
 
1522
  if (TYPE_CODE (type) == TYPE_CODE_REF)
1523
    {
1524
      /* Copy the value, but change the type from (T&) to (T*).  We
1525
         keep the same location information, which is efficient, and
1526
         allows &(&X) to get the location containing the reference.  */
1527
      arg2 = value_copy (arg1);
1528
      deprecated_set_value_type (arg2,
1529
                                 lookup_pointer_type (TYPE_TARGET_TYPE (type)));
1530
      return arg2;
1531
    }
1532
  if (TYPE_CODE (type) == TYPE_CODE_FUNC)
1533
    return value_coerce_function (arg1);
1534
 
1535
  /* If this is an array that has not yet been pushed to the target,
1536
     then this would be a good time to force it to memory.  */
1537
  arg1 = value_coerce_to_target (arg1);
1538
 
1539
  if (VALUE_LVAL (arg1) != lval_memory)
1540
    error (_("Attempt to take address of value not located in memory."));
1541
 
1542
  /* Get target memory address */
1543
  arg2 = value_from_pointer (lookup_pointer_type (value_type (arg1)),
1544
                             (value_address (arg1)
1545
                              + value_embedded_offset (arg1)));
1546
 
1547
  /* This may be a pointer to a base subobject; so remember the
1548
     full derived object's type ...  */
1549
  arg2 = value_change_enclosing_type (arg2, lookup_pointer_type (value_enclosing_type (arg1)));
1550
  /* ... and also the relative position of the subobject in the full
1551
     object.  */
1552
  set_value_pointed_to_offset (arg2, value_embedded_offset (arg1));
1553
  return arg2;
1554
}
1555
 
1556
/* Return a reference value for the object for which ARG1 is the
1557
   contents.  */
1558
 
1559
struct value *
1560
value_ref (struct value *arg1)
1561
{
1562
  struct value *arg2;
1563
  struct type *type = check_typedef (value_type (arg1));
1564
 
1565
  if (TYPE_CODE (type) == TYPE_CODE_REF)
1566
    return arg1;
1567
 
1568
  arg2 = value_addr (arg1);
1569
  deprecated_set_value_type (arg2, lookup_reference_type (type));
1570
  return arg2;
1571
}
1572
 
1573
/* Given a value of a pointer type, apply the C unary * operator to
1574
   it.  */
1575
 
1576
struct value *
1577
value_ind (struct value *arg1)
1578
{
1579
  struct type *base_type;
1580
  struct value *arg2;
1581
 
1582
  arg1 = coerce_array (arg1);
1583
 
1584
  base_type = check_typedef (value_type (arg1));
1585
 
1586
  if (TYPE_CODE (base_type) == TYPE_CODE_PTR)
1587
    {
1588
      struct type *enc_type;
1589
 
1590
      /* We may be pointing to something embedded in a larger object.
1591
         Get the real type of the enclosing object.  */
1592
      enc_type = check_typedef (value_enclosing_type (arg1));
1593
      enc_type = TYPE_TARGET_TYPE (enc_type);
1594
 
1595
      if (TYPE_CODE (check_typedef (enc_type)) == TYPE_CODE_FUNC
1596
          || TYPE_CODE (check_typedef (enc_type)) == TYPE_CODE_METHOD)
1597
        /* For functions, go through find_function_addr, which knows
1598
           how to handle function descriptors.  */
1599
        arg2 = value_at_lazy (enc_type,
1600
                              find_function_addr (arg1, NULL));
1601
      else
1602
        /* Retrieve the enclosing object pointed to */
1603
        arg2 = value_at_lazy (enc_type,
1604
                              (value_as_address (arg1)
1605
                               - value_pointed_to_offset (arg1)));
1606
 
1607
      /* Re-adjust type.  */
1608
      deprecated_set_value_type (arg2, TYPE_TARGET_TYPE (base_type));
1609
      /* Add embedding info.  */
1610
      arg2 = value_change_enclosing_type (arg2, enc_type);
1611
      set_value_embedded_offset (arg2, value_pointed_to_offset (arg1));
1612
 
1613
      /* We may be pointing to an object of some derived type.  */
1614
      arg2 = value_full_object (arg2, NULL, 0, 0, 0);
1615
      return arg2;
1616
    }
1617
 
1618
  error (_("Attempt to take contents of a non-pointer value."));
1619
  return 0;                      /* For lint -- never reached.  */
1620
}
1621
 
1622
/* Create a value for an array by allocating space in GDB, copying
1623
   copying the data into that space, and then setting up an array
1624
   value.
1625
 
1626
   The array bounds are set from LOWBOUND and HIGHBOUND, and the array
1627
   is populated from the values passed in ELEMVEC.
1628
 
1629
   The element type of the array is inherited from the type of the
1630
   first element, and all elements must have the same size (though we
1631
   don't currently enforce any restriction on their types).  */
1632
 
1633
struct value *
1634
value_array (int lowbound, int highbound, struct value **elemvec)
1635
{
1636
  int nelem;
1637
  int idx;
1638
  unsigned int typelength;
1639
  struct value *val;
1640
  struct type *arraytype;
1641
 
1642
  /* Validate that the bounds are reasonable and that each of the
1643
     elements have the same size.  */
1644
 
1645
  nelem = highbound - lowbound + 1;
1646
  if (nelem <= 0)
1647
    {
1648
      error (_("bad array bounds (%d, %d)"), lowbound, highbound);
1649
    }
1650
  typelength = TYPE_LENGTH (value_enclosing_type (elemvec[0]));
1651
  for (idx = 1; idx < nelem; idx++)
1652
    {
1653
      if (TYPE_LENGTH (value_enclosing_type (elemvec[idx])) != typelength)
1654
        {
1655
          error (_("array elements must all be the same size"));
1656
        }
1657
    }
1658
 
1659
  arraytype = lookup_array_range_type (value_enclosing_type (elemvec[0]),
1660
                                       lowbound, highbound);
1661
 
1662
  if (!current_language->c_style_arrays)
1663
    {
1664
      val = allocate_value (arraytype);
1665
      for (idx = 0; idx < nelem; idx++)
1666
        {
1667
          memcpy (value_contents_all_raw (val) + (idx * typelength),
1668
                  value_contents_all (elemvec[idx]),
1669
                  typelength);
1670
        }
1671
      return val;
1672
    }
1673
 
1674
  /* Allocate space to store the array, and then initialize it by
1675
     copying in each element.  */
1676
 
1677
  val = allocate_value (arraytype);
1678
  for (idx = 0; idx < nelem; idx++)
1679
    memcpy (value_contents_writeable (val) + (idx * typelength),
1680
            value_contents_all (elemvec[idx]),
1681
            typelength);
1682
  return val;
1683
}
1684
 
1685
struct value *
1686
value_cstring (char *ptr, int len, struct type *char_type)
1687
{
1688
  struct value *val;
1689
  int lowbound = current_language->string_lower_bound;
1690
  int highbound = len / TYPE_LENGTH (char_type);
1691
  struct type *stringtype
1692
    = lookup_array_range_type (char_type, lowbound, highbound + lowbound - 1);
1693
 
1694
  val = allocate_value (stringtype);
1695
  memcpy (value_contents_raw (val), ptr, len);
1696
  return val;
1697
}
1698
 
1699
/* Create a value for a string constant by allocating space in the
1700
   inferior, copying the data into that space, and returning the
1701
   address with type TYPE_CODE_STRING.  PTR points to the string
1702
   constant data; LEN is number of characters.
1703
 
1704
   Note that string types are like array of char types with a lower
1705
   bound of zero and an upper bound of LEN - 1.  Also note that the
1706
   string may contain embedded null bytes.  */
1707
 
1708
struct value *
1709
value_string (char *ptr, int len, struct type *char_type)
1710
{
1711
  struct value *val;
1712
  int lowbound = current_language->string_lower_bound;
1713
  int highbound = len / TYPE_LENGTH (char_type);
1714
  struct type *stringtype
1715
    = lookup_string_range_type (char_type, lowbound, highbound + lowbound - 1);
1716
 
1717
  val = allocate_value (stringtype);
1718
  memcpy (value_contents_raw (val), ptr, len);
1719
  return val;
1720
}
1721
 
1722
struct value *
1723
value_bitstring (char *ptr, int len, struct type *index_type)
1724
{
1725
  struct value *val;
1726
  struct type *domain_type
1727
    = create_range_type (NULL, index_type, 0, len - 1);
1728
  struct type *type = create_set_type (NULL, domain_type);
1729
 
1730
  TYPE_CODE (type) = TYPE_CODE_BITSTRING;
1731
  val = allocate_value (type);
1732
  memcpy (value_contents_raw (val), ptr, TYPE_LENGTH (type));
1733
  return val;
1734
}
1735
 
1736
/* See if we can pass arguments in T2 to a function which takes
1737
   arguments of types T1.  T1 is a list of NARGS arguments, and T2 is
1738
   a NULL-terminated vector.  If some arguments need coercion of some
1739
   sort, then the coerced values are written into T2.  Return value is
1740
 
1741
   differ if not.
1742
 
1743
   STATICP is nonzero if the T1 argument list came from a static
1744
   member function.  T2 will still include the ``this'' pointer, but
1745
   it will be skipped.
1746
 
1747
   For non-static member functions, we ignore the first argument,
1748
   which is the type of the instance variable.  This is because we
1749
   want to handle calls with objects from derived classes.  This is
1750
   not entirely correct: we should actually check to make sure that a
1751
   requested operation is type secure, shouldn't we?  FIXME.  */
1752
 
1753
static int
1754
typecmp (int staticp, int varargs, int nargs,
1755
         struct field t1[], struct value *t2[])
1756
{
1757
  int i;
1758
 
1759
  if (t2 == 0)
1760
    internal_error (__FILE__, __LINE__,
1761
                    _("typecmp: no argument list"));
1762
 
1763
  /* Skip ``this'' argument if applicable.  T2 will always include
1764
     THIS.  */
1765
  if (staticp)
1766
    t2 ++;
1767
 
1768
  for (i = 0;
1769
       (i < nargs) && TYPE_CODE (t1[i].type) != TYPE_CODE_VOID;
1770
       i++)
1771
    {
1772
      struct type *tt1, *tt2;
1773
 
1774
      if (!t2[i])
1775
        return i + 1;
1776
 
1777
      tt1 = check_typedef (t1[i].type);
1778
      tt2 = check_typedef (value_type (t2[i]));
1779
 
1780
      if (TYPE_CODE (tt1) == TYPE_CODE_REF
1781
      /* We should be doing hairy argument matching, as below.  */
1782
          && (TYPE_CODE (check_typedef (TYPE_TARGET_TYPE (tt1))) == TYPE_CODE (tt2)))
1783
        {
1784
          if (TYPE_CODE (tt2) == TYPE_CODE_ARRAY)
1785
            t2[i] = value_coerce_array (t2[i]);
1786
          else
1787
            t2[i] = value_ref (t2[i]);
1788
          continue;
1789
        }
1790
 
1791
      /* djb - 20000715 - Until the new type structure is in the
1792
         place, and we can attempt things like implicit conversions,
1793
         we need to do this so you can take something like a map<const
1794
         char *>, and properly access map["hello"], because the
1795
         argument to [] will be a reference to a pointer to a char,
1796
         and the argument will be a pointer to a char.  */
1797
      while (TYPE_CODE(tt1) == TYPE_CODE_REF
1798
             || TYPE_CODE (tt1) == TYPE_CODE_PTR)
1799
        {
1800
          tt1 = check_typedef( TYPE_TARGET_TYPE(tt1) );
1801
        }
1802
      while (TYPE_CODE(tt2) == TYPE_CODE_ARRAY
1803
             || TYPE_CODE(tt2) == TYPE_CODE_PTR
1804
             || TYPE_CODE(tt2) == TYPE_CODE_REF)
1805
        {
1806
          tt2 = check_typedef (TYPE_TARGET_TYPE(tt2));
1807
        }
1808
      if (TYPE_CODE (tt1) == TYPE_CODE (tt2))
1809
        continue;
1810
      /* Array to pointer is a `trivial conversion' according to the
1811
         ARM.  */
1812
 
1813
      /* We should be doing much hairier argument matching (see
1814
         section 13.2 of the ARM), but as a quick kludge, just check
1815
         for the same type code.  */
1816
      if (TYPE_CODE (t1[i].type) != TYPE_CODE (value_type (t2[i])))
1817
        return i + 1;
1818
    }
1819
  if (varargs || t2[i] == NULL)
1820
    return 0;
1821
  return i + 1;
1822
}
1823
 
1824
/* Helper function used by value_struct_elt to recurse through
1825
   baseclasses.  Look for a field NAME in ARG1. Adjust the address of
1826
   ARG1 by OFFSET bytes, and search in it assuming it has (class) type
1827
   TYPE.  If found, return value, else return NULL.
1828
 
1829
   If LOOKING_FOR_BASECLASS, then instead of looking for struct
1830
   fields, look for a baseclass named NAME.  */
1831
 
1832
static struct value *
1833
search_struct_field (const char *name, struct value *arg1, int offset,
1834
                     struct type *type, int looking_for_baseclass)
1835
{
1836
  int i;
1837
  int nbases;
1838
 
1839
  CHECK_TYPEDEF (type);
1840
  nbases = TYPE_N_BASECLASSES (type);
1841
 
1842
  if (!looking_for_baseclass)
1843
    for (i = TYPE_NFIELDS (type) - 1; i >= nbases; i--)
1844
      {
1845
        char *t_field_name = TYPE_FIELD_NAME (type, i);
1846
 
1847
        if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
1848
          {
1849
            struct value *v;
1850
 
1851
            if (field_is_static (&TYPE_FIELD (type, i)))
1852
              {
1853
                v = value_static_field (type, i);
1854
                if (v == 0)
1855
                  error (_("field %s is nonexistent or has been optimized out"),
1856
                         name);
1857
              }
1858
            else
1859
              {
1860
                v = value_primitive_field (arg1, offset, i, type);
1861
                if (v == 0)
1862
                  error (_("there is no field named %s"), name);
1863
              }
1864
            return v;
1865
          }
1866
 
1867
        if (t_field_name
1868
            && (t_field_name[0] == '\0'
1869
                || (TYPE_CODE (type) == TYPE_CODE_UNION
1870
                    && (strcmp_iw (t_field_name, "else") == 0))))
1871
          {
1872
            struct type *field_type = TYPE_FIELD_TYPE (type, i);
1873
 
1874
            if (TYPE_CODE (field_type) == TYPE_CODE_UNION
1875
                || TYPE_CODE (field_type) == TYPE_CODE_STRUCT)
1876
              {
1877
                /* Look for a match through the fields of an anonymous
1878
                   union, or anonymous struct.  C++ provides anonymous
1879
                   unions.
1880
 
1881
                   In the GNU Chill (now deleted from GDB)
1882
                   implementation of variant record types, each
1883
                   <alternative field> has an (anonymous) union type,
1884
                   each member of the union represents a <variant
1885
                   alternative>.  Each <variant alternative> is
1886
                   represented as a struct, with a member for each
1887
                   <variant field>.  */
1888
 
1889
                struct value *v;
1890
                int new_offset = offset;
1891
 
1892
                /* This is pretty gross.  In G++, the offset in an
1893
                   anonymous union is relative to the beginning of the
1894
                   enclosing struct.  In the GNU Chill (now deleted
1895
                   from GDB) implementation of variant records, the
1896
                   bitpos is zero in an anonymous union field, so we
1897
                   have to add the offset of the union here.  */
1898
                if (TYPE_CODE (field_type) == TYPE_CODE_STRUCT
1899
                    || (TYPE_NFIELDS (field_type) > 0
1900
                        && TYPE_FIELD_BITPOS (field_type, 0) == 0))
1901
                  new_offset += TYPE_FIELD_BITPOS (type, i) / 8;
1902
 
1903
                v = search_struct_field (name, arg1, new_offset,
1904
                                         field_type,
1905
                                         looking_for_baseclass);
1906
                if (v)
1907
                  return v;
1908
              }
1909
          }
1910
      }
1911
 
1912
  for (i = 0; i < nbases; i++)
1913
    {
1914
      struct value *v;
1915
      struct type *basetype = check_typedef (TYPE_BASECLASS (type, i));
1916
      /* If we are looking for baseclasses, this is what we get when
1917
         we hit them.  But it could happen that the base part's member
1918
         name is not yet filled in.  */
1919
      int found_baseclass = (looking_for_baseclass
1920
                             && TYPE_BASECLASS_NAME (type, i) != NULL
1921
                             && (strcmp_iw (name,
1922
                                            TYPE_BASECLASS_NAME (type,
1923
                                                                 i)) == 0));
1924
 
1925
      if (BASETYPE_VIA_VIRTUAL (type, i))
1926
        {
1927
          int boffset;
1928
          struct value *v2;
1929
 
1930
          boffset = baseclass_offset (type, i,
1931
                                      value_contents (arg1) + offset,
1932
                                      value_address (arg1)
1933
                                      + value_embedded_offset (arg1)
1934
                                      + offset);
1935
          if (boffset == -1)
1936
            error (_("virtual baseclass botch"));
1937
 
1938
          /* The virtual base class pointer might have been clobbered
1939
             by the user program. Make sure that it still points to a
1940
             valid memory location.  */
1941
 
1942
          boffset += value_embedded_offset (arg1) + offset;
1943
          if (boffset < 0
1944
              || boffset >= TYPE_LENGTH (value_enclosing_type (arg1)))
1945
            {
1946
              CORE_ADDR base_addr;
1947
 
1948
              v2  = allocate_value (basetype);
1949
              base_addr = value_address (arg1) + boffset;
1950
              if (target_read_memory (base_addr,
1951
                                      value_contents_raw (v2),
1952
                                      TYPE_LENGTH (basetype)) != 0)
1953
                error (_("virtual baseclass botch"));
1954
              VALUE_LVAL (v2) = lval_memory;
1955
              set_value_address (v2, base_addr);
1956
            }
1957
          else
1958
            {
1959
              v2 = value_copy (arg1);
1960
              deprecated_set_value_type (v2, basetype);
1961
              set_value_embedded_offset (v2, boffset);
1962
            }
1963
 
1964
          if (found_baseclass)
1965
            return v2;
1966
          v = search_struct_field (name, v2, 0,
1967
                                   TYPE_BASECLASS (type, i),
1968
                                   looking_for_baseclass);
1969
        }
1970
      else if (found_baseclass)
1971
        v = value_primitive_field (arg1, offset, i, type);
1972
      else
1973
        v = search_struct_field (name, arg1,
1974
                                 offset + TYPE_BASECLASS_BITPOS (type,
1975
                                                                 i) / 8,
1976
                                 basetype, looking_for_baseclass);
1977
      if (v)
1978
        return v;
1979
    }
1980
  return NULL;
1981
}
1982
 
1983
/* Helper function used by value_struct_elt to recurse through
1984
   baseclasses.  Look for a field NAME in ARG1. Adjust the address of
1985
   ARG1 by OFFSET bytes, and search in it assuming it has (class) type
1986
   TYPE.
1987
 
1988
   If found, return value, else if name matched and args not return
1989
   (value) -1, else return NULL.  */
1990
 
1991
static struct value *
1992
search_struct_method (const char *name, struct value **arg1p,
1993
                      struct value **args, int offset,
1994
                      int *static_memfuncp, struct type *type)
1995
{
1996
  int i;
1997
  struct value *v;
1998
  int name_matched = 0;
1999
  char dem_opname[64];
2000
 
2001
  CHECK_TYPEDEF (type);
2002
  for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
2003
    {
2004
      char *t_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
2005
 
2006
      /* FIXME!  May need to check for ARM demangling here */
2007
      if (strncmp (t_field_name, "__", 2) == 0 ||
2008
          strncmp (t_field_name, "op", 2) == 0 ||
2009
          strncmp (t_field_name, "type", 4) == 0)
2010
        {
2011
          if (cplus_demangle_opname (t_field_name, dem_opname, DMGL_ANSI))
2012
            t_field_name = dem_opname;
2013
          else if (cplus_demangle_opname (t_field_name, dem_opname, 0))
2014
            t_field_name = dem_opname;
2015
        }
2016
      if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
2017
        {
2018
          int j = TYPE_FN_FIELDLIST_LENGTH (type, i) - 1;
2019
          struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
2020
 
2021
          name_matched = 1;
2022
          check_stub_method_group (type, i);
2023
          if (j > 0 && args == 0)
2024
            error (_("cannot resolve overloaded method `%s': no arguments supplied"), name);
2025
          else if (j == 0 && args == 0)
2026
            {
2027
              v = value_fn_field (arg1p, f, j, type, offset);
2028
              if (v != NULL)
2029
                return v;
2030
            }
2031
          else
2032
            while (j >= 0)
2033
              {
2034
                if (!typecmp (TYPE_FN_FIELD_STATIC_P (f, j),
2035
                              TYPE_VARARGS (TYPE_FN_FIELD_TYPE (f, j)),
2036
                              TYPE_NFIELDS (TYPE_FN_FIELD_TYPE (f, j)),
2037
                              TYPE_FN_FIELD_ARGS (f, j), args))
2038
                  {
2039
                    if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
2040
                      return value_virtual_fn_field (arg1p, f, j,
2041
                                                     type, offset);
2042
                    if (TYPE_FN_FIELD_STATIC_P (f, j)
2043
                        && static_memfuncp)
2044
                      *static_memfuncp = 1;
2045
                    v = value_fn_field (arg1p, f, j, type, offset);
2046
                    if (v != NULL)
2047
                      return v;
2048
                  }
2049
                j--;
2050
              }
2051
        }
2052
    }
2053
 
2054
  for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
2055
    {
2056
      int base_offset;
2057
 
2058
      if (BASETYPE_VIA_VIRTUAL (type, i))
2059
        {
2060
          struct type *baseclass = check_typedef (TYPE_BASECLASS (type, i));
2061
          const gdb_byte *base_valaddr;
2062
 
2063
          /* The virtual base class pointer might have been
2064
             clobbered by the user program. Make sure that it
2065
            still points to a valid memory location.  */
2066
 
2067
          if (offset < 0 || offset >= TYPE_LENGTH (type))
2068
            {
2069
              gdb_byte *tmp = alloca (TYPE_LENGTH (baseclass));
2070
 
2071
              if (target_read_memory (value_address (*arg1p) + offset,
2072
                                      tmp, TYPE_LENGTH (baseclass)) != 0)
2073
                error (_("virtual baseclass botch"));
2074
              base_valaddr = tmp;
2075
            }
2076
          else
2077
            base_valaddr = value_contents (*arg1p) + offset;
2078
 
2079
          base_offset = baseclass_offset (type, i, base_valaddr,
2080
                                          value_address (*arg1p) + offset);
2081
          if (base_offset == -1)
2082
            error (_("virtual baseclass botch"));
2083
        }
2084
      else
2085
        {
2086
          base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
2087
        }
2088
      v = search_struct_method (name, arg1p, args, base_offset + offset,
2089
                                static_memfuncp, TYPE_BASECLASS (type, i));
2090
      if (v == (struct value *) - 1)
2091
        {
2092
          name_matched = 1;
2093
        }
2094
      else if (v)
2095
        {
2096
          /* FIXME-bothner:  Why is this commented out?  Why is it here?  */
2097
          /* *arg1p = arg1_tmp; */
2098
          return v;
2099
        }
2100
    }
2101
  if (name_matched)
2102
    return (struct value *) - 1;
2103
  else
2104
    return NULL;
2105
}
2106
 
2107
/* Given *ARGP, a value of type (pointer to a)* structure/union,
2108
   extract the component named NAME from the ultimate target
2109
   structure/union and return it as a value with its appropriate type.
2110
   ERR is used in the error message if *ARGP's type is wrong.
2111
 
2112
   C++: ARGS is a list of argument types to aid in the selection of
2113
   an appropriate method. Also, handle derived types.
2114
 
2115
   STATIC_MEMFUNCP, if non-NULL, points to a caller-supplied location
2116
   where the truthvalue of whether the function that was resolved was
2117
   a static member function or not is stored.
2118
 
2119
   ERR is an error message to be printed in case the field is not
2120
   found.  */
2121
 
2122
struct value *
2123
value_struct_elt (struct value **argp, struct value **args,
2124
                  const char *name, int *static_memfuncp, const char *err)
2125
{
2126
  struct type *t;
2127
  struct value *v;
2128
 
2129
  *argp = coerce_array (*argp);
2130
 
2131
  t = check_typedef (value_type (*argp));
2132
 
2133
  /* Follow pointers until we get to a non-pointer.  */
2134
 
2135
  while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
2136
    {
2137
      *argp = value_ind (*argp);
2138
      /* Don't coerce fn pointer to fn and then back again!  */
2139
      if (TYPE_CODE (value_type (*argp)) != TYPE_CODE_FUNC)
2140
        *argp = coerce_array (*argp);
2141
      t = check_typedef (value_type (*argp));
2142
    }
2143
 
2144
  if (TYPE_CODE (t) != TYPE_CODE_STRUCT
2145
      && TYPE_CODE (t) != TYPE_CODE_UNION)
2146
    error (_("Attempt to extract a component of a value that is not a %s."), err);
2147
 
2148
  /* Assume it's not, unless we see that it is.  */
2149
  if (static_memfuncp)
2150
    *static_memfuncp = 0;
2151
 
2152
  if (!args)
2153
    {
2154
      /* if there are no arguments ...do this...  */
2155
 
2156
      /* Try as a field first, because if we succeed, there is less
2157
         work to be done.  */
2158
      v = search_struct_field (name, *argp, 0, t, 0);
2159
      if (v)
2160
        return v;
2161
 
2162
      /* C++: If it was not found as a data field, then try to
2163
         return it as a pointer to a method.  */
2164
      v = search_struct_method (name, argp, args, 0,
2165
                                static_memfuncp, t);
2166
 
2167
      if (v == (struct value *) - 1)
2168
        error (_("Cannot take address of method %s."), name);
2169
      else if (v == 0)
2170
        {
2171
          if (TYPE_NFN_FIELDS (t))
2172
            error (_("There is no member or method named %s."), name);
2173
          else
2174
            error (_("There is no member named %s."), name);
2175
        }
2176
      return v;
2177
    }
2178
 
2179
    v = search_struct_method (name, argp, args, 0,
2180
                              static_memfuncp, t);
2181
 
2182
  if (v == (struct value *) - 1)
2183
    {
2184
      error (_("One of the arguments you tried to pass to %s could not be converted to what the function wants."), name);
2185
    }
2186
  else if (v == 0)
2187
    {
2188
      /* See if user tried to invoke data as function.  If so, hand it
2189
         back.  If it's not callable (i.e., a pointer to function),
2190
         gdb should give an error.  */
2191
      v = search_struct_field (name, *argp, 0, t, 0);
2192
      /* If we found an ordinary field, then it is not a method call.
2193
         So, treat it as if it were a static member function.  */
2194
      if (v && static_memfuncp)
2195
        *static_memfuncp = 1;
2196
    }
2197
 
2198
  if (!v)
2199
    error (_("Structure has no component named %s."), name);
2200
  return v;
2201
}
2202
 
2203
/* Search through the methods of an object (and its bases) to find a
2204
   specified method.  Return the pointer to the fn_field list of
2205
   overloaded instances.
2206
 
2207
   Helper function for value_find_oload_list.
2208
   ARGP is a pointer to a pointer to a value (the object).
2209
   METHOD is a string containing the method name.
2210
   OFFSET is the offset within the value.
2211
   TYPE is the assumed type of the object.
2212
   NUM_FNS is the number of overloaded instances.
2213
   BASETYPE is set to the actual type of the subobject where the
2214
      method is found.
2215
   BOFFSET is the offset of the base subobject where the method is found.
2216
*/
2217
 
2218
static struct fn_field *
2219
find_method_list (struct value **argp, const char *method,
2220
                  int offset, struct type *type, int *num_fns,
2221
                  struct type **basetype, int *boffset)
2222
{
2223
  int i;
2224
  struct fn_field *f;
2225
  CHECK_TYPEDEF (type);
2226
 
2227
  *num_fns = 0;
2228
 
2229
  /* First check in object itself.  */
2230
  for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
2231
    {
2232
      /* pai: FIXME What about operators and type conversions?  */
2233
      char *fn_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
2234
 
2235
      if (fn_field_name && (strcmp_iw (fn_field_name, method) == 0))
2236
        {
2237
          int len = TYPE_FN_FIELDLIST_LENGTH (type, i);
2238
          struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
2239
 
2240
          *num_fns = len;
2241
          *basetype = type;
2242
          *boffset = offset;
2243
 
2244
          /* Resolve any stub methods.  */
2245
          check_stub_method_group (type, i);
2246
 
2247
          return f;
2248
        }
2249
    }
2250
 
2251
  /* Not found in object, check in base subobjects.  */
2252
  for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
2253
    {
2254
      int base_offset;
2255
 
2256
      if (BASETYPE_VIA_VIRTUAL (type, i))
2257
        {
2258
          base_offset = value_offset (*argp) + offset;
2259
          base_offset = baseclass_offset (type, i,
2260
                                          value_contents (*argp) + base_offset,
2261
                                          value_address (*argp) + base_offset);
2262
          if (base_offset == -1)
2263
            error (_("virtual baseclass botch"));
2264
        }
2265
      else /* Non-virtual base, simply use bit position from debug
2266
              info.  */
2267
        {
2268
          base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
2269
        }
2270
      f = find_method_list (argp, method, base_offset + offset,
2271
                            TYPE_BASECLASS (type, i), num_fns,
2272
                            basetype, boffset);
2273
      if (f)
2274
        return f;
2275
    }
2276
  return NULL;
2277
}
2278
 
2279
/* Return the list of overloaded methods of a specified name.
2280
 
2281
   ARGP is a pointer to a pointer to a value (the object).
2282
   METHOD is the method name.
2283
   OFFSET is the offset within the value contents.
2284
   NUM_FNS is the number of overloaded instances.
2285
   BASETYPE is set to the type of the base subobject that defines the
2286
      method.
2287
   BOFFSET is the offset of the base subobject which defines the method.
2288
*/
2289
 
2290
struct fn_field *
2291
value_find_oload_method_list (struct value **argp, const char *method,
2292
                              int offset, int *num_fns,
2293
                              struct type **basetype, int *boffset)
2294
{
2295
  struct type *t;
2296
 
2297
  t = check_typedef (value_type (*argp));
2298
 
2299
  /* Code snarfed from value_struct_elt.  */
2300
  while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
2301
    {
2302
      *argp = value_ind (*argp);
2303
      /* Don't coerce fn pointer to fn and then back again!  */
2304
      if (TYPE_CODE (value_type (*argp)) != TYPE_CODE_FUNC)
2305
        *argp = coerce_array (*argp);
2306
      t = check_typedef (value_type (*argp));
2307
    }
2308
 
2309
  if (TYPE_CODE (t) != TYPE_CODE_STRUCT
2310
      && TYPE_CODE (t) != TYPE_CODE_UNION)
2311
    error (_("Attempt to extract a component of a value that is not a struct or union"));
2312
 
2313
  return find_method_list (argp, method, 0, t, num_fns,
2314
                           basetype, boffset);
2315
}
2316
 
2317
/* Given an array of argument types (ARGTYPES) (which includes an
2318
   entry for "this" in the case of C++ methods), the number of
2319
   arguments NARGS, the NAME of a function whether it's a method or
2320
   not (METHOD), and the degree of laxness (LAX) in conforming to
2321
   overload resolution rules in ANSI C++, find the best function that
2322
   matches on the argument types according to the overload resolution
2323
   rules.
2324
 
2325
   METHOD can be one of three values:
2326
     NON_METHOD for non-member functions.
2327
     METHOD: for member functions.
2328
     BOTH: used for overload resolution of operators where the
2329
       candidates are expected to be either member or non member
2330
       functions. In this case the first argument ARGTYPES
2331
       (representing 'this') is expected to be a reference to the
2332
       target object, and will be dereferenced when attempting the
2333
       non-member search.
2334
 
2335
   In the case of class methods, the parameter OBJ is an object value
2336
   in which to search for overloaded methods.
2337
 
2338
   In the case of non-method functions, the parameter FSYM is a symbol
2339
   corresponding to one of the overloaded functions.
2340
 
2341
   Return value is an integer: 0 -> good match, 10 -> debugger applied
2342
   non-standard coercions, 100 -> incompatible.
2343
 
2344
   If a method is being searched for, VALP will hold the value.
2345
   If a non-method is being searched for, SYMP will hold the symbol
2346
   for it.
2347
 
2348
   If a method is being searched for, and it is a static method,
2349
   then STATICP will point to a non-zero value.
2350
 
2351
   If NO_ADL argument dependent lookup is disabled.  This is used to prevent
2352
   ADL overload candidates when performing overload resolution for a fully
2353
   qualified name.
2354
 
2355
   Note: This function does *not* check the value of
2356
   overload_resolution.  Caller must check it to see whether overload
2357
   resolution is permitted.
2358
*/
2359
 
2360
int
2361
find_overload_match (struct type **arg_types, int nargs,
2362
                     const char *name, enum oload_search_type method,
2363
                     int lax, struct value **objp, struct symbol *fsym,
2364
                     struct value **valp, struct symbol **symp,
2365
                     int *staticp, const int no_adl)
2366
{
2367
  struct value *obj = (objp ? *objp : NULL);
2368
  /* Index of best overloaded function.  */
2369
  int func_oload_champ = -1;
2370
  int method_oload_champ = -1;
2371
 
2372
  /* The measure for the current best match.  */
2373
  struct badness_vector *method_badness = NULL;
2374
  struct badness_vector *func_badness = NULL;
2375
 
2376
  struct value *temp = obj;
2377
  /* For methods, the list of overloaded methods.  */
2378
  struct fn_field *fns_ptr = NULL;
2379
  /* For non-methods, the list of overloaded function symbols.  */
2380
  struct symbol **oload_syms = NULL;
2381
  /* Number of overloaded instances being considered.  */
2382
  int num_fns = 0;
2383
  struct type *basetype = NULL;
2384
  int boffset;
2385
 
2386
  struct cleanup *all_cleanups = make_cleanup (null_cleanup, NULL);
2387
 
2388
  const char *obj_type_name = NULL;
2389
  const char *func_name = NULL;
2390
  enum oload_classification match_quality;
2391
  enum oload_classification method_match_quality = INCOMPATIBLE;
2392
  enum oload_classification func_match_quality = INCOMPATIBLE;
2393
 
2394
  /* Get the list of overloaded methods or functions.  */
2395
  if (method == METHOD || method == BOTH)
2396
    {
2397
      gdb_assert (obj);
2398
 
2399
      /* OBJ may be a pointer value rather than the object itself.  */
2400
      obj = coerce_ref (obj);
2401
      while (TYPE_CODE (check_typedef (value_type (obj))) == TYPE_CODE_PTR)
2402
        obj = coerce_ref (value_ind (obj));
2403
      obj_type_name = TYPE_NAME (value_type (obj));
2404
 
2405
      /* First check whether this is a data member, e.g. a pointer to
2406
         a function.  */
2407
      if (TYPE_CODE (check_typedef (value_type (obj))) == TYPE_CODE_STRUCT)
2408
        {
2409
          *valp = search_struct_field (name, obj, 0,
2410
                                       check_typedef (value_type (obj)), 0);
2411
          if (*valp)
2412
            {
2413
              *staticp = 1;
2414
              return 0;
2415
            }
2416
        }
2417
 
2418
      /* Retrieve the list of methods with the name NAME.  */
2419
      fns_ptr = value_find_oload_method_list (&temp, name,
2420
                                              0, &num_fns,
2421
                                              &basetype, &boffset);
2422
      /* If this is a method only search, and no methods were found
2423
         the search has faild.  */
2424
      if (method == METHOD && (!fns_ptr || !num_fns))
2425
        error (_("Couldn't find method %s%s%s"),
2426
               obj_type_name,
2427
               (obj_type_name && *obj_type_name) ? "::" : "",
2428
               name);
2429
      /* If we are dealing with stub method types, they should have
2430
         been resolved by find_method_list via
2431
         value_find_oload_method_list above.  */
2432
      if (fns_ptr)
2433
        {
2434
          gdb_assert (TYPE_DOMAIN_TYPE (fns_ptr[0].type) != NULL);
2435
          method_oload_champ = find_oload_champ (arg_types, nargs, method,
2436
                                                 num_fns, fns_ptr,
2437
                                                 oload_syms, &method_badness);
2438
 
2439
          method_match_quality =
2440
              classify_oload_match (method_badness, nargs,
2441
                                    oload_method_static (method, fns_ptr,
2442
                                                         method_oload_champ));
2443
 
2444
          make_cleanup (xfree, method_badness);
2445
        }
2446
 
2447
    }
2448
 
2449
  if (method == NON_METHOD || method == BOTH)
2450
    {
2451
      const char *qualified_name = NULL;
2452
 
2453
      /* If the the overload match is being search for both
2454
         as a method and non member function, the first argument
2455
         must now be dereferenced.  */
2456
      if (method == BOTH)
2457
        arg_types[0] = TYPE_TARGET_TYPE (arg_types[0]);
2458
 
2459
      if (fsym)
2460
        {
2461
          qualified_name = SYMBOL_NATURAL_NAME (fsym);
2462
 
2463
          /* If we have a function with a C++ name, try to extract just
2464
             the function part.  Do not try this for non-functions (e.g.
2465
             function pointers).  */
2466
          if (qualified_name
2467
              && TYPE_CODE (check_typedef (SYMBOL_TYPE (fsym))) == TYPE_CODE_FUNC)
2468
            {
2469
              char *temp;
2470
 
2471
              temp = cp_func_name (qualified_name);
2472
 
2473
              /* If cp_func_name did not remove anything, the name of the
2474
                 symbol did not include scope or argument types - it was
2475
                 probably a C-style function.  */
2476
              if (temp)
2477
                {
2478
                  make_cleanup (xfree, temp);
2479
                  if (strcmp (temp, qualified_name) == 0)
2480
                    func_name = NULL;
2481
                  else
2482
                    func_name = temp;
2483
                }
2484
            }
2485
        }
2486
      else
2487
        {
2488
          func_name = name;
2489
          qualified_name = name;
2490
        }
2491
 
2492
      /* If there was no C++ name, this must be a C-style function or
2493
         not a function at all.  Just return the same symbol.  Do the
2494
         same if cp_func_name fails for some reason.  */
2495
      if (func_name == NULL)
2496
        {
2497
          *symp = fsym;
2498
          return 0;
2499
        }
2500
 
2501
      func_oload_champ = find_oload_champ_namespace (arg_types, nargs,
2502
                                                     func_name,
2503
                                                     qualified_name,
2504
                                                     &oload_syms,
2505
                                                     &func_badness,
2506
                                                     no_adl);
2507
 
2508
      if (func_oload_champ >= 0)
2509
        func_match_quality = classify_oload_match (func_badness, nargs, 0);
2510
 
2511
      make_cleanup (xfree, oload_syms);
2512
      make_cleanup (xfree, func_badness);
2513
    }
2514
 
2515
  /* Did we find a match ?  */
2516
  if (method_oload_champ == -1 && func_oload_champ == -1)
2517
    error (_("No symbol \"%s\" in current context."), name);
2518
 
2519
  /* If we have found both a method match and a function
2520
     match, find out which one is better, and calculate match
2521
     quality.  */
2522
  if (method_oload_champ >= 0 && func_oload_champ >= 0)
2523
    {
2524
      switch (compare_badness (func_badness, method_badness))
2525
        {
2526
          case 0: /* Top two contenders are equally good.  */
2527
            /* FIXME: GDB does not support the general ambiguous
2528
             case.  All candidates should be collected and presented
2529
             the the user.  */
2530
            error (_("Ambiguous overload resolution"));
2531
            break;
2532
          case 1: /* Incomparable top contenders.  */
2533
            /* This is an error incompatible candidates
2534
               should not have been proposed.  */
2535
            error (_("Internal error: incompatible overload candidates proposed"));
2536
            break;
2537
          case 2: /* Function champion.  */
2538
            method_oload_champ = -1;
2539
            match_quality = func_match_quality;
2540
            break;
2541
          case 3: /* Method champion.  */
2542
            func_oload_champ = -1;
2543
            match_quality = method_match_quality;
2544
            break;
2545
          default:
2546
            error (_("Internal error: unexpected overload comparison result"));
2547
            break;
2548
        }
2549
    }
2550
  else
2551
    {
2552
      /* We have either a method match or a function match.  */
2553
      if (method_oload_champ >= 0)
2554
        match_quality = method_match_quality;
2555
      else
2556
        match_quality = func_match_quality;
2557
    }
2558
 
2559
  if (match_quality == INCOMPATIBLE)
2560
    {
2561
      if (method == METHOD)
2562
        error (_("Cannot resolve method %s%s%s to any overloaded instance"),
2563
               obj_type_name,
2564
               (obj_type_name && *obj_type_name) ? "::" : "",
2565
               name);
2566
      else
2567
        error (_("Cannot resolve function %s to any overloaded instance"),
2568
               func_name);
2569
    }
2570
  else if (match_quality == NON_STANDARD)
2571
    {
2572
      if (method == METHOD)
2573
        warning (_("Using non-standard conversion to match method %s%s%s to supplied arguments"),
2574
                 obj_type_name,
2575
                 (obj_type_name && *obj_type_name) ? "::" : "",
2576
                 name);
2577
      else
2578
        warning (_("Using non-standard conversion to match function %s to supplied arguments"),
2579
                 func_name);
2580
    }
2581
 
2582
  if (staticp != NULL)
2583
    *staticp = oload_method_static (method, fns_ptr, method_oload_champ);
2584
 
2585
  if (method_oload_champ >= 0)
2586
    {
2587
      if (TYPE_FN_FIELD_VIRTUAL_P (fns_ptr, method_oload_champ))
2588
        *valp = value_virtual_fn_field (&temp, fns_ptr, method_oload_champ,
2589
                                        basetype, boffset);
2590
      else
2591
        *valp = value_fn_field (&temp, fns_ptr, method_oload_champ,
2592
                                basetype, boffset);
2593
    }
2594
  else
2595
    *symp = oload_syms[func_oload_champ];
2596
 
2597
  if (objp)
2598
    {
2599
      struct type *temp_type = check_typedef (value_type (temp));
2600
      struct type *obj_type = check_typedef (value_type (*objp));
2601
 
2602
      if (TYPE_CODE (temp_type) != TYPE_CODE_PTR
2603
          && (TYPE_CODE (obj_type) == TYPE_CODE_PTR
2604
              || TYPE_CODE (obj_type) == TYPE_CODE_REF))
2605
        {
2606
          temp = value_addr (temp);
2607
        }
2608
      *objp = temp;
2609
    }
2610
 
2611
  do_cleanups (all_cleanups);
2612
 
2613
  switch (match_quality)
2614
    {
2615
    case INCOMPATIBLE:
2616
      return 100;
2617
    case NON_STANDARD:
2618
      return 10;
2619
    default:                            /* STANDARD */
2620
      return 0;
2621
    }
2622
}
2623
 
2624
/* Find the best overload match, searching for FUNC_NAME in namespaces
2625
   contained in QUALIFIED_NAME until it either finds a good match or
2626
   runs out of namespaces.  It stores the overloaded functions in
2627
   *OLOAD_SYMS, and the badness vector in *OLOAD_CHAMP_BV.  The
2628
   calling function is responsible for freeing *OLOAD_SYMS and
2629
   *OLOAD_CHAMP_BV.  If NO_ADL, argument dependent lookup is not
2630
   performned.  */
2631
 
2632
static int
2633
find_oload_champ_namespace (struct type **arg_types, int nargs,
2634
                            const char *func_name,
2635
                            const char *qualified_name,
2636
                            struct symbol ***oload_syms,
2637
                            struct badness_vector **oload_champ_bv,
2638
                            const int no_adl)
2639
{
2640
  int oload_champ;
2641
 
2642
  find_oload_champ_namespace_loop (arg_types, nargs,
2643
                                   func_name,
2644
                                   qualified_name, 0,
2645
                                   oload_syms, oload_champ_bv,
2646
                                   &oload_champ,
2647
                                   no_adl);
2648
 
2649
  return oload_champ;
2650
}
2651
 
2652
/* Helper function for find_oload_champ_namespace; NAMESPACE_LEN is
2653
   how deep we've looked for namespaces, and the champ is stored in
2654
   OLOAD_CHAMP.  The return value is 1 if the champ is a good one, 0
2655
   if it isn't.  Other arguments are the same as in
2656
   find_oload_champ_namespace
2657
 
2658
   It is the caller's responsibility to free *OLOAD_SYMS and
2659
   *OLOAD_CHAMP_BV.  */
2660
 
2661
static int
2662
find_oload_champ_namespace_loop (struct type **arg_types, int nargs,
2663
                                 const char *func_name,
2664
                                 const char *qualified_name,
2665
                                 int namespace_len,
2666
                                 struct symbol ***oload_syms,
2667
                                 struct badness_vector **oload_champ_bv,
2668
                                 int *oload_champ,
2669
                                 const int no_adl)
2670
{
2671
  int next_namespace_len = namespace_len;
2672
  int searched_deeper = 0;
2673
  int num_fns = 0;
2674
  struct cleanup *old_cleanups;
2675
  int new_oload_champ;
2676
  struct symbol **new_oload_syms;
2677
  struct badness_vector *new_oload_champ_bv;
2678
  char *new_namespace;
2679
 
2680
  if (next_namespace_len != 0)
2681
    {
2682
      gdb_assert (qualified_name[next_namespace_len] == ':');
2683
      next_namespace_len +=  2;
2684
    }
2685
  next_namespace_len +=
2686
    cp_find_first_component (qualified_name + next_namespace_len);
2687
 
2688
  /* Initialize these to values that can safely be xfree'd.  */
2689
  *oload_syms = NULL;
2690
  *oload_champ_bv = NULL;
2691
 
2692
  /* First, see if we have a deeper namespace we can search in.
2693
     If we get a good match there, use it.  */
2694
 
2695
  if (qualified_name[next_namespace_len] == ':')
2696
    {
2697
      searched_deeper = 1;
2698
 
2699
      if (find_oload_champ_namespace_loop (arg_types, nargs,
2700
                                           func_name, qualified_name,
2701
                                           next_namespace_len,
2702
                                           oload_syms, oload_champ_bv,
2703
                                           oload_champ, no_adl))
2704
        {
2705
          return 1;
2706
        }
2707
    };
2708
 
2709
  /* If we reach here, either we're in the deepest namespace or we
2710
     didn't find a good match in a deeper namespace.  But, in the
2711
     latter case, we still have a bad match in a deeper namespace;
2712
     note that we might not find any match at all in the current
2713
     namespace.  (There's always a match in the deepest namespace,
2714
     because this overload mechanism only gets called if there's a
2715
     function symbol to start off with.)  */
2716
 
2717
  old_cleanups = make_cleanup (xfree, *oload_syms);
2718
  old_cleanups = make_cleanup (xfree, *oload_champ_bv);
2719
  new_namespace = alloca (namespace_len + 1);
2720
  strncpy (new_namespace, qualified_name, namespace_len);
2721
  new_namespace[namespace_len] = '\0';
2722
  new_oload_syms = make_symbol_overload_list (func_name,
2723
                                              new_namespace);
2724
 
2725
  /* If we have reached the deepest level perform argument
2726
     determined lookup.  */
2727
  if (!searched_deeper && !no_adl)
2728
    make_symbol_overload_list_adl (arg_types, nargs, func_name);
2729
 
2730
  while (new_oload_syms[num_fns])
2731
    ++num_fns;
2732
 
2733
  new_oload_champ = find_oload_champ (arg_types, nargs, 0, num_fns,
2734
                                      NULL, new_oload_syms,
2735
                                      &new_oload_champ_bv);
2736
 
2737
  /* Case 1: We found a good match.  Free earlier matches (if any),
2738
     and return it.  Case 2: We didn't find a good match, but we're
2739
     not the deepest function.  Then go with the bad match that the
2740
     deeper function found.  Case 3: We found a bad match, and we're
2741
     the deepest function.  Then return what we found, even though
2742
     it's a bad match.  */
2743
 
2744
  if (new_oload_champ != -1
2745
      && classify_oload_match (new_oload_champ_bv, nargs, 0) == STANDARD)
2746
    {
2747
      *oload_syms = new_oload_syms;
2748
      *oload_champ = new_oload_champ;
2749
      *oload_champ_bv = new_oload_champ_bv;
2750
      do_cleanups (old_cleanups);
2751
      return 1;
2752
    }
2753
  else if (searched_deeper)
2754
    {
2755
      xfree (new_oload_syms);
2756
      xfree (new_oload_champ_bv);
2757
      discard_cleanups (old_cleanups);
2758
      return 0;
2759
    }
2760
  else
2761
    {
2762
      *oload_syms = new_oload_syms;
2763
      *oload_champ = new_oload_champ;
2764
      *oload_champ_bv = new_oload_champ_bv;
2765
      discard_cleanups (old_cleanups);
2766
      return 0;
2767
    }
2768
}
2769
 
2770
/* Look for a function to take NARGS args of types ARG_TYPES.  Find
2771
   the best match from among the overloaded methods or functions
2772
   (depending on METHOD) given by FNS_PTR or OLOAD_SYMS, respectively.
2773
   The number of methods/functions in the list is given by NUM_FNS.
2774
   Return the index of the best match; store an indication of the
2775
   quality of the match in OLOAD_CHAMP_BV.
2776
 
2777
   It is the caller's responsibility to free *OLOAD_CHAMP_BV.  */
2778
 
2779
static int
2780
find_oload_champ (struct type **arg_types, int nargs, int method,
2781
                  int num_fns, struct fn_field *fns_ptr,
2782
                  struct symbol **oload_syms,
2783
                  struct badness_vector **oload_champ_bv)
2784
{
2785
  int ix;
2786
  /* A measure of how good an overloaded instance is.  */
2787
  struct badness_vector *bv;
2788
  /* Index of best overloaded function.  */
2789
  int oload_champ = -1;
2790
  /* Current ambiguity state for overload resolution.  */
2791
  int oload_ambiguous = 0;
2792
  /* 0 => no ambiguity, 1 => two good funcs, 2 => incomparable funcs.  */
2793
 
2794
  *oload_champ_bv = NULL;
2795
 
2796
  /* Consider each candidate in turn.  */
2797
  for (ix = 0; ix < num_fns; ix++)
2798
    {
2799
      int jj;
2800
      int static_offset = oload_method_static (method, fns_ptr, ix);
2801
      int nparms;
2802
      struct type **parm_types;
2803
 
2804
      if (method)
2805
        {
2806
          nparms = TYPE_NFIELDS (TYPE_FN_FIELD_TYPE (fns_ptr, ix));
2807
        }
2808
      else
2809
        {
2810
          /* If it's not a method, this is the proper place.  */
2811
          nparms = TYPE_NFIELDS (SYMBOL_TYPE (oload_syms[ix]));
2812
        }
2813
 
2814
      /* Prepare array of parameter types.  */
2815
      parm_types = (struct type **)
2816
        xmalloc (nparms * (sizeof (struct type *)));
2817
      for (jj = 0; jj < nparms; jj++)
2818
        parm_types[jj] = (method
2819
                          ? (TYPE_FN_FIELD_ARGS (fns_ptr, ix)[jj].type)
2820
                          : TYPE_FIELD_TYPE (SYMBOL_TYPE (oload_syms[ix]),
2821
                                             jj));
2822
 
2823
      /* Compare parameter types to supplied argument types.  Skip
2824
         THIS for static methods.  */
2825
      bv = rank_function (parm_types, nparms,
2826
                          arg_types + static_offset,
2827
                          nargs - static_offset);
2828
 
2829
      if (!*oload_champ_bv)
2830
        {
2831
          *oload_champ_bv = bv;
2832
          oload_champ = 0;
2833
        }
2834
      else /* See whether current candidate is better or worse than
2835
              previous best.  */
2836
        switch (compare_badness (bv, *oload_champ_bv))
2837
          {
2838
          case 0:                /* Top two contenders are equally good.  */
2839
            oload_ambiguous = 1;
2840
            break;
2841
          case 1:               /* Incomparable top contenders.  */
2842
            oload_ambiguous = 2;
2843
            break;
2844
          case 2:               /* New champion, record details.  */
2845
            *oload_champ_bv = bv;
2846
            oload_ambiguous = 0;
2847
            oload_champ = ix;
2848
            break;
2849
          case 3:
2850
          default:
2851
            break;
2852
          }
2853
      xfree (parm_types);
2854
      if (overload_debug)
2855
        {
2856
          if (method)
2857
            fprintf_filtered (gdb_stderr,
2858
                              "Overloaded method instance %s, # of parms %d\n",
2859
                              fns_ptr[ix].physname, nparms);
2860
          else
2861
            fprintf_filtered (gdb_stderr,
2862
                              "Overloaded function instance %s # of parms %d\n",
2863
                              SYMBOL_DEMANGLED_NAME (oload_syms[ix]),
2864
                              nparms);
2865
          for (jj = 0; jj < nargs - static_offset; jj++)
2866
            fprintf_filtered (gdb_stderr,
2867
                              "...Badness @ %d : %d\n",
2868
                              jj, bv->rank[jj]);
2869
          fprintf_filtered (gdb_stderr,
2870
                            "Overload resolution champion is %d, ambiguous? %d\n",
2871
                            oload_champ, oload_ambiguous);
2872
        }
2873
    }
2874
 
2875
  return oload_champ;
2876
}
2877
 
2878
/* Return 1 if we're looking at a static method, 0 if we're looking at
2879
   a non-static method or a function that isn't a method.  */
2880
 
2881
static int
2882
oload_method_static (int method, struct fn_field *fns_ptr, int index)
2883
{
2884
  if (method && fns_ptr && index >= 0
2885
      && TYPE_FN_FIELD_STATIC_P (fns_ptr, index))
2886
    return 1;
2887
  else
2888
    return 0;
2889
}
2890
 
2891
/* Check how good an overload match OLOAD_CHAMP_BV represents.  */
2892
 
2893
static enum oload_classification
2894
classify_oload_match (struct badness_vector *oload_champ_bv,
2895
                      int nargs,
2896
                      int static_offset)
2897
{
2898
  int ix;
2899
 
2900
  for (ix = 1; ix <= nargs - static_offset; ix++)
2901
    {
2902
      if (oload_champ_bv->rank[ix] >= 100)
2903
        return INCOMPATIBLE;    /* Truly mismatched types.  */
2904
      else if (oload_champ_bv->rank[ix] >= 10)
2905
        return NON_STANDARD;    /* Non-standard type conversions
2906
                                   needed.  */
2907
    }
2908
 
2909
  return STANDARD;              /* Only standard conversions needed.  */
2910
}
2911
 
2912
/* C++: return 1 is NAME is a legitimate name for the destructor of
2913
   type TYPE.  If TYPE does not have a destructor, or if NAME is
2914
   inappropriate for TYPE, an error is signaled.  */
2915
int
2916
destructor_name_p (const char *name, const struct type *type)
2917
{
2918
  if (name[0] == '~')
2919
    {
2920
      char *dname = type_name_no_tag (type);
2921
      char *cp = strchr (dname, '<');
2922
      unsigned int len;
2923
 
2924
      /* Do not compare the template part for template classes.  */
2925
      if (cp == NULL)
2926
        len = strlen (dname);
2927
      else
2928
        len = cp - dname;
2929
      if (strlen (name + 1) != len || strncmp (dname, name + 1, len) != 0)
2930
        error (_("name of destructor must equal name of class"));
2931
      else
2932
        return 1;
2933
    }
2934
  return 0;
2935
}
2936
 
2937
/* Given TYPE, a structure/union,
2938
   return 1 if the component named NAME from the ultimate target
2939
   structure/union is defined, otherwise, return 0.  */
2940
 
2941
int
2942
check_field (struct type *type, const char *name)
2943
{
2944
  int i;
2945
 
2946
  /* The type may be a stub.  */
2947
  CHECK_TYPEDEF (type);
2948
 
2949
  for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
2950
    {
2951
      char *t_field_name = TYPE_FIELD_NAME (type, i);
2952
 
2953
      if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
2954
        return 1;
2955
    }
2956
 
2957
  /* C++: If it was not found as a data field, then try to return it
2958
     as a pointer to a method.  */
2959
 
2960
  for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; --i)
2961
    {
2962
      if (strcmp_iw (TYPE_FN_FIELDLIST_NAME (type, i), name) == 0)
2963
        return 1;
2964
    }
2965
 
2966
  for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
2967
    if (check_field (TYPE_BASECLASS (type, i), name))
2968
      return 1;
2969
 
2970
  return 0;
2971
}
2972
 
2973
/* C++: Given an aggregate type CURTYPE, and a member name NAME,
2974
   return the appropriate member (or the address of the member, if
2975
   WANT_ADDRESS).  This function is used to resolve user expressions
2976
   of the form "DOMAIN::NAME".  For more details on what happens, see
2977
   the comment before value_struct_elt_for_reference.  */
2978
 
2979
struct value *
2980
value_aggregate_elt (struct type *curtype, char *name,
2981
                     struct type *expect_type, int want_address,
2982
                     enum noside noside)
2983
{
2984
  switch (TYPE_CODE (curtype))
2985
    {
2986
    case TYPE_CODE_STRUCT:
2987
    case TYPE_CODE_UNION:
2988
      return value_struct_elt_for_reference (curtype, 0, curtype,
2989
                                             name, expect_type,
2990
                                             want_address, noside);
2991
    case TYPE_CODE_NAMESPACE:
2992
      return value_namespace_elt (curtype, name,
2993
                                  want_address, noside);
2994
    default:
2995
      internal_error (__FILE__, __LINE__,
2996
                      _("non-aggregate type in value_aggregate_elt"));
2997
    }
2998
}
2999
 
3000
/* Compares the two method/function types T1 and T2 for "equality"
3001
   with respect to the the methods' parameters.  If the types of the
3002
   two parameter lists are the same, returns 1; 0 otherwise.  This
3003
   comparison may ignore any artificial parameters in T1 if
3004
   SKIP_ARTIFICIAL is non-zero.  This function will ALWAYS skip
3005
   the first artificial parameter in T1, assumed to be a 'this' pointer.
3006
 
3007
   The type T2 is expected to have come from make_params (in eval.c).  */
3008
 
3009
static int
3010
compare_parameters (struct type *t1, struct type *t2, int skip_artificial)
3011
{
3012
  int start = 0;
3013
 
3014
  if (TYPE_FIELD_ARTIFICIAL (t1, 0))
3015
    ++start;
3016
 
3017
  /* If skipping artificial fields, find the first real field
3018
     in T1. */
3019
  if (skip_artificial)
3020
    {
3021
      while (start < TYPE_NFIELDS (t1)
3022
             && TYPE_FIELD_ARTIFICIAL (t1, start))
3023
        ++start;
3024
    }
3025
 
3026
  /* Now compare parameters */
3027
 
3028
  /* Special case: a method taking void.  T1 will contain no
3029
     non-artificial fields, and T2 will contain TYPE_CODE_VOID.  */
3030
  if ((TYPE_NFIELDS (t1) - start) == 0 && TYPE_NFIELDS (t2) == 1
3031
      && TYPE_CODE (TYPE_FIELD_TYPE (t2, 0)) == TYPE_CODE_VOID)
3032
    return 1;
3033
 
3034
  if ((TYPE_NFIELDS (t1) - start) == TYPE_NFIELDS (t2))
3035
    {
3036
      int i;
3037
 
3038
      for (i = 0; i < TYPE_NFIELDS (t2); ++i)
3039
        {
3040
          if (rank_one_type (TYPE_FIELD_TYPE (t1, start + i),
3041
                              TYPE_FIELD_TYPE (t2, i))
3042
              != 0)
3043
            return 0;
3044
        }
3045
 
3046
      return 1;
3047
    }
3048
 
3049
  return 0;
3050
}
3051
 
3052
/* C++: Given an aggregate type CURTYPE, and a member name NAME,
3053
   return the address of this member as a "pointer to member" type.
3054
   If INTYPE is non-null, then it will be the type of the member we
3055
   are looking for.  This will help us resolve "pointers to member
3056
   functions".  This function is used to resolve user expressions of
3057
   the form "DOMAIN::NAME".  */
3058
 
3059
static struct value *
3060
value_struct_elt_for_reference (struct type *domain, int offset,
3061
                                struct type *curtype, char *name,
3062
                                struct type *intype,
3063
                                int want_address,
3064
                                enum noside noside)
3065
{
3066
  struct type *t = curtype;
3067
  int i;
3068
  struct value *v, *result;
3069
 
3070
  if (TYPE_CODE (t) != TYPE_CODE_STRUCT
3071
      && TYPE_CODE (t) != TYPE_CODE_UNION)
3072
    error (_("Internal error: non-aggregate type to value_struct_elt_for_reference"));
3073
 
3074
  for (i = TYPE_NFIELDS (t) - 1; i >= TYPE_N_BASECLASSES (t); i--)
3075
    {
3076
      char *t_field_name = TYPE_FIELD_NAME (t, i);
3077
 
3078
      if (t_field_name && strcmp (t_field_name, name) == 0)
3079
        {
3080
          if (field_is_static (&TYPE_FIELD (t, i)))
3081
            {
3082
              v = value_static_field (t, i);
3083
              if (v == NULL)
3084
                error (_("static field %s has been optimized out"),
3085
                       name);
3086
              if (want_address)
3087
                v = value_addr (v);
3088
              return v;
3089
            }
3090
          if (TYPE_FIELD_PACKED (t, i))
3091
            error (_("pointers to bitfield members not allowed"));
3092
 
3093
          if (want_address)
3094
            return value_from_longest
3095
              (lookup_memberptr_type (TYPE_FIELD_TYPE (t, i), domain),
3096
               offset + (LONGEST) (TYPE_FIELD_BITPOS (t, i) >> 3));
3097
          else if (noside == EVAL_AVOID_SIDE_EFFECTS)
3098
            return allocate_value (TYPE_FIELD_TYPE (t, i));
3099
          else
3100
            error (_("Cannot reference non-static field \"%s\""), name);
3101
        }
3102
    }
3103
 
3104
  /* C++: If it was not found as a data field, then try to return it
3105
     as a pointer to a method.  */
3106
 
3107
  /* Perform all necessary dereferencing.  */
3108
  while (intype && TYPE_CODE (intype) == TYPE_CODE_PTR)
3109
    intype = TYPE_TARGET_TYPE (intype);
3110
 
3111
  for (i = TYPE_NFN_FIELDS (t) - 1; i >= 0; --i)
3112
    {
3113
      char *t_field_name = TYPE_FN_FIELDLIST_NAME (t, i);
3114
      char dem_opname[64];
3115
 
3116
      if (strncmp (t_field_name, "__", 2) == 0
3117
          || strncmp (t_field_name, "op", 2) == 0
3118
          || strncmp (t_field_name, "type", 4) == 0)
3119
        {
3120
          if (cplus_demangle_opname (t_field_name,
3121
                                     dem_opname, DMGL_ANSI))
3122
            t_field_name = dem_opname;
3123
          else if (cplus_demangle_opname (t_field_name,
3124
                                          dem_opname, 0))
3125
            t_field_name = dem_opname;
3126
        }
3127
      if (t_field_name && strcmp (t_field_name, name) == 0)
3128
        {
3129
          int j;
3130
          int len = TYPE_FN_FIELDLIST_LENGTH (t, i);
3131
          struct fn_field *f = TYPE_FN_FIELDLIST1 (t, i);
3132
 
3133
          check_stub_method_group (t, i);
3134
 
3135
          if (intype)
3136
            {
3137
              for (j = 0; j < len; ++j)
3138
                {
3139
                  if (compare_parameters (TYPE_FN_FIELD_TYPE (f, j), intype, 0)
3140
                      || compare_parameters (TYPE_FN_FIELD_TYPE (f, j), intype, 1))
3141
                    break;
3142
                }
3143
 
3144
              if (j == len)
3145
                error (_("no member function matches that type instantiation"));
3146
            }
3147
          else
3148
            {
3149
              int ii;
3150
 
3151
              j = -1;
3152
              for (ii = 0; ii < TYPE_FN_FIELDLIST_LENGTH (t, i);
3153
                   ++ii)
3154
                {
3155
                  /* Skip artificial methods.  This is necessary if,
3156
                     for example, the user wants to "print
3157
                     subclass::subclass" with only one user-defined
3158
                     constructor.  There is no ambiguity in this
3159
                     case.  */
3160
                  if (TYPE_FN_FIELD_ARTIFICIAL (f, ii))
3161
                    continue;
3162
 
3163
                  /* Desired method is ambiguous if more than one
3164
                     method is defined.  */
3165
                  if (j != -1)
3166
                    error (_("non-unique member `%s' requires type instantiation"), name);
3167
 
3168
                  j = ii;
3169
                }
3170
            }
3171
 
3172
          if (TYPE_FN_FIELD_STATIC_P (f, j))
3173
            {
3174
              struct symbol *s =
3175
                lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
3176
                               0, VAR_DOMAIN, 0);
3177
 
3178
              if (s == NULL)
3179
                return NULL;
3180
 
3181
              if (want_address)
3182
                return value_addr (read_var_value (s, 0));
3183
              else
3184
                return read_var_value (s, 0);
3185
            }
3186
 
3187
          if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
3188
            {
3189
              if (want_address)
3190
                {
3191
                  result = allocate_value
3192
                    (lookup_methodptr_type (TYPE_FN_FIELD_TYPE (f, j)));
3193
                  cplus_make_method_ptr (value_type (result),
3194
                                         value_contents_writeable (result),
3195
                                         TYPE_FN_FIELD_VOFFSET (f, j), 1);
3196
                }
3197
              else if (noside == EVAL_AVOID_SIDE_EFFECTS)
3198
                return allocate_value (TYPE_FN_FIELD_TYPE (f, j));
3199
              else
3200
                error (_("Cannot reference virtual member function \"%s\""),
3201
                       name);
3202
            }
3203
          else
3204
            {
3205
              struct symbol *s =
3206
                lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
3207
                               0, VAR_DOMAIN, 0);
3208
 
3209
              if (s == NULL)
3210
                return NULL;
3211
 
3212
              v = read_var_value (s, 0);
3213
              if (!want_address)
3214
                result = v;
3215
              else
3216
                {
3217
                  result = allocate_value (lookup_methodptr_type (TYPE_FN_FIELD_TYPE (f, j)));
3218
                  cplus_make_method_ptr (value_type (result),
3219
                                         value_contents_writeable (result),
3220
                                         value_address (v), 0);
3221
                }
3222
            }
3223
          return result;
3224
        }
3225
    }
3226
  for (i = TYPE_N_BASECLASSES (t) - 1; i >= 0; i--)
3227
    {
3228
      struct value *v;
3229
      int base_offset;
3230
 
3231
      if (BASETYPE_VIA_VIRTUAL (t, i))
3232
        base_offset = 0;
3233
      else
3234
        base_offset = TYPE_BASECLASS_BITPOS (t, i) / 8;
3235
      v = value_struct_elt_for_reference (domain,
3236
                                          offset + base_offset,
3237
                                          TYPE_BASECLASS (t, i),
3238
                                          name, intype,
3239
                                          want_address, noside);
3240
      if (v)
3241
        return v;
3242
    }
3243
 
3244
  /* As a last chance, pretend that CURTYPE is a namespace, and look
3245
     it up that way; this (frequently) works for types nested inside
3246
     classes.  */
3247
 
3248
  return value_maybe_namespace_elt (curtype, name,
3249
                                    want_address, noside);
3250
}
3251
 
3252
/* C++: Return the member NAME of the namespace given by the type
3253
   CURTYPE.  */
3254
 
3255
static struct value *
3256
value_namespace_elt (const struct type *curtype,
3257
                     char *name, int want_address,
3258
                     enum noside noside)
3259
{
3260
  struct value *retval = value_maybe_namespace_elt (curtype, name,
3261
                                                    want_address,
3262
                                                    noside);
3263
 
3264
  if (retval == NULL)
3265
    error (_("No symbol \"%s\" in namespace \"%s\"."),
3266
           name, TYPE_TAG_NAME (curtype));
3267
 
3268
  return retval;
3269
}
3270
 
3271
/* A helper function used by value_namespace_elt and
3272
   value_struct_elt_for_reference.  It looks up NAME inside the
3273
   context CURTYPE; this works if CURTYPE is a namespace or if CURTYPE
3274
   is a class and NAME refers to a type in CURTYPE itself (as opposed
3275
   to, say, some base class of CURTYPE).  */
3276
 
3277
static struct value *
3278
value_maybe_namespace_elt (const struct type *curtype,
3279
                           char *name, int want_address,
3280
                           enum noside noside)
3281
{
3282
  const char *namespace_name = TYPE_TAG_NAME (curtype);
3283
  struct symbol *sym;
3284
  struct value *result;
3285
 
3286
  sym = cp_lookup_symbol_namespace (namespace_name, name,
3287
                                    get_selected_block (0), VAR_DOMAIN);
3288
 
3289
  if (sym == NULL)
3290
    {
3291
      char *concatenated_name = alloca (strlen (namespace_name) + 2
3292
                                        + strlen (name) + 1);
3293
 
3294
      sprintf (concatenated_name, "%s::%s", namespace_name, name);
3295
      sym = lookup_static_symbol_aux (concatenated_name, VAR_DOMAIN);
3296
    }
3297
 
3298
  if (sym == NULL)
3299
    return NULL;
3300
  else if ((noside == EVAL_AVOID_SIDE_EFFECTS)
3301
           && (SYMBOL_CLASS (sym) == LOC_TYPEDEF))
3302
    result = allocate_value (SYMBOL_TYPE (sym));
3303
  else
3304
    result = value_of_variable (sym, get_selected_block (0));
3305
 
3306
  if (result && want_address)
3307
    result = value_addr (result);
3308
 
3309
  return result;
3310
}
3311
 
3312
/* Given a pointer value V, find the real (RTTI) type of the object it
3313
   points to.
3314
 
3315
   Other parameters FULL, TOP, USING_ENC as with value_rtti_type()
3316
   and refer to the values computed for the object pointed to.  */
3317
 
3318
struct type *
3319
value_rtti_target_type (struct value *v, int *full,
3320
                        int *top, int *using_enc)
3321
{
3322
  struct value *target;
3323
 
3324
  target = value_ind (v);
3325
 
3326
  return value_rtti_type (target, full, top, using_enc);
3327
}
3328
 
3329
/* Given a value pointed to by ARGP, check its real run-time type, and
3330
   if that is different from the enclosing type, create a new value
3331
   using the real run-time type as the enclosing type (and of the same
3332
   type as ARGP) and return it, with the embedded offset adjusted to
3333
   be the correct offset to the enclosed object.  RTYPE is the type,
3334
   and XFULL, XTOP, and XUSING_ENC are the other parameters, computed
3335
   by value_rtti_type().  If these are available, they can be supplied
3336
   and a second call to value_rtti_type() is avoided.  (Pass RTYPE ==
3337
   NULL if they're not available.  */
3338
 
3339
struct value *
3340
value_full_object (struct value *argp,
3341
                   struct type *rtype,
3342
                   int xfull, int xtop,
3343
                   int xusing_enc)
3344
{
3345
  struct type *real_type;
3346
  int full = 0;
3347
  int top = -1;
3348
  int using_enc = 0;
3349
  struct value *new_val;
3350
 
3351
  if (rtype)
3352
    {
3353
      real_type = rtype;
3354
      full = xfull;
3355
      top = xtop;
3356
      using_enc = xusing_enc;
3357
    }
3358
  else
3359
    real_type = value_rtti_type (argp, &full, &top, &using_enc);
3360
 
3361
  /* If no RTTI data, or if object is already complete, do nothing.  */
3362
  if (!real_type || real_type == value_enclosing_type (argp))
3363
    return argp;
3364
 
3365
  /* If we have the full object, but for some reason the enclosing
3366
     type is wrong, set it.  */
3367
  /* pai: FIXME -- sounds iffy */
3368
  if (full)
3369
    {
3370
      argp = value_change_enclosing_type (argp, real_type);
3371
      return argp;
3372
    }
3373
 
3374
  /* Check if object is in memory */
3375
  if (VALUE_LVAL (argp) != lval_memory)
3376
    {
3377
      warning (_("Couldn't retrieve complete object of RTTI type %s; object may be in register(s)."),
3378
               TYPE_NAME (real_type));
3379
 
3380
      return argp;
3381
    }
3382
 
3383
  /* All other cases -- retrieve the complete object.  */
3384
  /* Go back by the computed top_offset from the beginning of the
3385
     object, adjusting for the embedded offset of argp if that's what
3386
     value_rtti_type used for its computation.  */
3387
  new_val = value_at_lazy (real_type, value_address (argp) - top +
3388
                           (using_enc ? 0 : value_embedded_offset (argp)));
3389
  deprecated_set_value_type (new_val, value_type (argp));
3390
  set_value_embedded_offset (new_val, (using_enc
3391
                                       ? top + value_embedded_offset (argp)
3392
                                       : top));
3393
  return new_val;
3394
}
3395
 
3396
 
3397
/* Return the value of the local variable, if one exists.
3398
   Flag COMPLAIN signals an error if the request is made in an
3399
   inappropriate context.  */
3400
 
3401
struct value *
3402
value_of_local (const char *name, int complain)
3403
{
3404
  struct symbol *func, *sym;
3405
  struct block *b;
3406
  struct value * ret;
3407
  struct frame_info *frame;
3408
 
3409
  if (complain)
3410
    frame = get_selected_frame (_("no frame selected"));
3411
  else
3412
    {
3413
      frame = deprecated_safe_get_selected_frame ();
3414
      if (frame == 0)
3415
        return 0;
3416
    }
3417
 
3418
  func = get_frame_function (frame);
3419
  if (!func)
3420
    {
3421
      if (complain)
3422
        error (_("no `%s' in nameless context"), name);
3423
      else
3424
        return 0;
3425
    }
3426
 
3427
  b = SYMBOL_BLOCK_VALUE (func);
3428
  if (dict_empty (BLOCK_DICT (b)))
3429
    {
3430
      if (complain)
3431
        error (_("no args, no `%s'"), name);
3432
      else
3433
        return 0;
3434
    }
3435
 
3436
  /* Calling lookup_block_symbol is necessary to get the LOC_REGISTER
3437
     symbol instead of the LOC_ARG one (if both exist).  */
3438
  sym = lookup_block_symbol (b, name, VAR_DOMAIN);
3439
  if (sym == NULL)
3440
    {
3441
      if (complain)
3442
        error (_("current stack frame does not contain a variable named `%s'"),
3443
               name);
3444
      else
3445
        return NULL;
3446
    }
3447
 
3448
  ret = read_var_value (sym, frame);
3449
  if (ret == 0 && complain)
3450
    error (_("`%s' argument unreadable"), name);
3451
  return ret;
3452
}
3453
 
3454
/* C++/Objective-C: return the value of the class instance variable,
3455
   if one exists.  Flag COMPLAIN signals an error if the request is
3456
   made in an inappropriate context.  */
3457
 
3458
struct value *
3459
value_of_this (int complain)
3460
{
3461
  if (!current_language->la_name_of_this)
3462
    return 0;
3463
  return value_of_local (current_language->la_name_of_this, complain);
3464
}
3465
 
3466
/* Create a slice (sub-string, sub-array) of ARRAY, that is LENGTH
3467
   elements long, starting at LOWBOUND.  The result has the same lower
3468
   bound as the original ARRAY.  */
3469
 
3470
struct value *
3471
value_slice (struct value *array, int lowbound, int length)
3472
{
3473
  struct type *slice_range_type, *slice_type, *range_type;
3474
  LONGEST lowerbound, upperbound;
3475
  struct value *slice;
3476
  struct type *array_type;
3477
 
3478
  array_type = check_typedef (value_type (array));
3479
  if (TYPE_CODE (array_type) != TYPE_CODE_ARRAY
3480
      && TYPE_CODE (array_type) != TYPE_CODE_STRING
3481
      && TYPE_CODE (array_type) != TYPE_CODE_BITSTRING)
3482
    error (_("cannot take slice of non-array"));
3483
 
3484
  range_type = TYPE_INDEX_TYPE (array_type);
3485
  if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
3486
    error (_("slice from bad array or bitstring"));
3487
 
3488
  if (lowbound < lowerbound || length < 0
3489
      || lowbound + length - 1 > upperbound)
3490
    error (_("slice out of range"));
3491
 
3492
  /* FIXME-type-allocation: need a way to free this type when we are
3493
     done with it.  */
3494
  slice_range_type = create_range_type ((struct type *) NULL,
3495
                                        TYPE_TARGET_TYPE (range_type),
3496
                                        lowbound,
3497
                                        lowbound + length - 1);
3498
  if (TYPE_CODE (array_type) == TYPE_CODE_BITSTRING)
3499
    {
3500
      int i;
3501
 
3502
      slice_type = create_set_type ((struct type *) NULL,
3503
                                    slice_range_type);
3504
      TYPE_CODE (slice_type) = TYPE_CODE_BITSTRING;
3505
      slice = value_zero (slice_type, not_lval);
3506
 
3507
      for (i = 0; i < length; i++)
3508
        {
3509
          int element = value_bit_index (array_type,
3510
                                         value_contents (array),
3511
                                         lowbound + i);
3512
 
3513
          if (element < 0)
3514
            error (_("internal error accessing bitstring"));
3515
          else if (element > 0)
3516
            {
3517
              int j = i % TARGET_CHAR_BIT;
3518
 
3519
              if (gdbarch_bits_big_endian (get_type_arch (array_type)))
3520
                j = TARGET_CHAR_BIT - 1 - j;
3521
              value_contents_raw (slice)[i / TARGET_CHAR_BIT] |= (1 << j);
3522
            }
3523
        }
3524
      /* We should set the address, bitssize, and bitspos, so the
3525
         slice can be used on the LHS, but that may require extensions
3526
         to value_assign.  For now, just leave as a non_lval.
3527
         FIXME.  */
3528
    }
3529
  else
3530
    {
3531
      struct type *element_type = TYPE_TARGET_TYPE (array_type);
3532
      LONGEST offset =
3533
        (lowbound - lowerbound) * TYPE_LENGTH (check_typedef (element_type));
3534
 
3535
      slice_type = create_array_type ((struct type *) NULL,
3536
                                      element_type,
3537
                                      slice_range_type);
3538
      TYPE_CODE (slice_type) = TYPE_CODE (array_type);
3539
 
3540
      if (VALUE_LVAL (array) == lval_memory && value_lazy (array))
3541
        slice = allocate_value_lazy (slice_type);
3542
      else
3543
        {
3544
          slice = allocate_value (slice_type);
3545
          memcpy (value_contents_writeable (slice),
3546
                  value_contents (array) + offset,
3547
                  TYPE_LENGTH (slice_type));
3548
        }
3549
 
3550
      set_value_component_location (slice, array);
3551
      VALUE_FRAME_ID (slice) = VALUE_FRAME_ID (array);
3552
      set_value_offset (slice, value_offset (array) + offset);
3553
    }
3554
  return slice;
3555
}
3556
 
3557
/* Create a value for a FORTRAN complex number.  Currently most of the
3558
   time values are coerced to COMPLEX*16 (i.e. a complex number
3559
   composed of 2 doubles.  This really should be a smarter routine
3560
   that figures out precision inteligently as opposed to assuming
3561
   doubles.  FIXME: fmb  */
3562
 
3563
struct value *
3564
value_literal_complex (struct value *arg1,
3565
                       struct value *arg2,
3566
                       struct type *type)
3567
{
3568
  struct value *val;
3569
  struct type *real_type = TYPE_TARGET_TYPE (type);
3570
 
3571
  val = allocate_value (type);
3572
  arg1 = value_cast (real_type, arg1);
3573
  arg2 = value_cast (real_type, arg2);
3574
 
3575
  memcpy (value_contents_raw (val),
3576
          value_contents (arg1), TYPE_LENGTH (real_type));
3577
  memcpy (value_contents_raw (val) + TYPE_LENGTH (real_type),
3578
          value_contents (arg2), TYPE_LENGTH (real_type));
3579
  return val;
3580
}
3581
 
3582
/* Cast a value into the appropriate complex data type.  */
3583
 
3584
static struct value *
3585
cast_into_complex (struct type *type, struct value *val)
3586
{
3587
  struct type *real_type = TYPE_TARGET_TYPE (type);
3588
 
3589
  if (TYPE_CODE (value_type (val)) == TYPE_CODE_COMPLEX)
3590
    {
3591
      struct type *val_real_type = TYPE_TARGET_TYPE (value_type (val));
3592
      struct value *re_val = allocate_value (val_real_type);
3593
      struct value *im_val = allocate_value (val_real_type);
3594
 
3595
      memcpy (value_contents_raw (re_val),
3596
              value_contents (val), TYPE_LENGTH (val_real_type));
3597
      memcpy (value_contents_raw (im_val),
3598
              value_contents (val) + TYPE_LENGTH (val_real_type),
3599
              TYPE_LENGTH (val_real_type));
3600
 
3601
      return value_literal_complex (re_val, im_val, type);
3602
    }
3603
  else if (TYPE_CODE (value_type (val)) == TYPE_CODE_FLT
3604
           || TYPE_CODE (value_type (val)) == TYPE_CODE_INT)
3605
    return value_literal_complex (val,
3606
                                  value_zero (real_type, not_lval),
3607
                                  type);
3608
  else
3609
    error (_("cannot cast non-number to complex"));
3610
}
3611
 
3612
void
3613
_initialize_valops (void)
3614
{
3615
  add_setshow_boolean_cmd ("overload-resolution", class_support,
3616
                           &overload_resolution, _("\
3617
Set overload resolution in evaluating C++ functions."), _("\
3618
Show overload resolution in evaluating C++ functions."),
3619
                           NULL, NULL,
3620
                           show_overload_resolution,
3621
                           &setlist, &showlist);
3622
  overload_resolution = 1;
3623
}

powered by: WebSVN 2.1.0

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