OSDN Git Service

2007-06-13 Markus Deuling <deuling@de.ibm.com>
[pf3gnuchains/sourceware.git] / gdb / valops.c
1 /* 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    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 2 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, write to the Free Software
21    Foundation, Inc., 51 Franklin Street, Fifth Floor,
22    Boston, MA 02110-1301, USA.  */
23
24 #include "defs.h"
25 #include "symtab.h"
26 #include "gdbtypes.h"
27 #include "value.h"
28 #include "frame.h"
29 #include "inferior.h"
30 #include "gdbcore.h"
31 #include "target.h"
32 #include "demangle.h"
33 #include "language.h"
34 #include "gdbcmd.h"
35 #include "regcache.h"
36 #include "cp-abi.h"
37 #include "block.h"
38 #include "infcall.h"
39 #include "dictionary.h"
40 #include "cp-support.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
48 extern int overload_debug;
49 /* Local functions.  */
50
51 static int typecmp (int staticp, int varargs, int nargs,
52                     struct field t1[], struct value *t2[]);
53
54 static struct value *search_struct_field (char *, struct value *, int,
55                                       struct type *, int);
56
57 static struct value *search_struct_method (char *, struct value **,
58                                        struct value **,
59                                        int, int *, struct type *);
60
61 static int find_oload_champ_namespace (struct type **arg_types, int nargs,
62                                        const char *func_name,
63                                        const char *qualified_name,
64                                        struct symbol ***oload_syms,
65                                        struct badness_vector **oload_champ_bv);
66
67 static
68 int find_oload_champ_namespace_loop (struct type **arg_types, int nargs,
69                                      const char *func_name,
70                                      const char *qualified_name,
71                                      int namespace_len,
72                                      struct symbol ***oload_syms,
73                                      struct badness_vector **oload_champ_bv,
74                                      int *oload_champ);
75
76 static int find_oload_champ (struct type **arg_types, int nargs, int method,
77                              int num_fns,
78                              struct fn_field *fns_ptr,
79                              struct symbol **oload_syms,
80                              struct badness_vector **oload_champ_bv);
81
82 static int oload_method_static (int method, struct fn_field *fns_ptr,
83                                 int index);
84
85 enum oload_classification { STANDARD, NON_STANDARD, INCOMPATIBLE };
86
87 static enum
88 oload_classification classify_oload_match (struct badness_vector
89                                            * oload_champ_bv,
90                                            int nargs,
91                                            int static_offset);
92
93 static int check_field_in (struct type *, const char *);
94
95 static struct value *value_struct_elt_for_reference (struct type *domain,
96                                                      int offset,
97                                                      struct type *curtype,
98                                                      char *name,
99                                                      struct type *intype,
100                                                      int want_address,
101                                                      enum noside noside);
102
103 static struct value *value_namespace_elt (const struct type *curtype,
104                                           char *name, int want_address,
105                                           enum noside noside);
106
107 static struct value *value_maybe_namespace_elt (const struct type *curtype,
108                                                 char *name, int want_address,
109                                                 enum noside noside);
110
111 static CORE_ADDR allocate_space_in_inferior (int);
112
113 static struct value *cast_into_complex (struct type *, struct value *);
114
115 static struct fn_field *find_method_list (struct value ** argp, char *method,
116                                           int offset,
117                                           struct type *type, int *num_fns,
118                                           struct type **basetype,
119                                           int *boffset);
120
121 void _initialize_valops (void);
122
123 /* Flag for whether we want to abandon failed expression evals by default.  */
124
125 #if 0
126 static int auto_abandon = 0;
127 #endif
128
129 int overload_resolution = 0;
130 static void
131 show_overload_resolution (struct ui_file *file, int from_tty,
132                           struct cmd_list_element *c, const char *value)
133 {
134   fprintf_filtered (file, _("\
135 Overload resolution in evaluating C++ functions is %s.\n"),
136                     value);
137 }
138
139 /* Find the address of function name NAME in the inferior.  */
140
141 struct value *
142 find_function_in_inferior (const char *name)
143 {
144   struct symbol *sym;
145   sym = lookup_symbol (name, 0, VAR_DOMAIN, 0, NULL);
146   if (sym != NULL)
147     {
148       if (SYMBOL_CLASS (sym) != LOC_BLOCK)
149         {
150           error (_("\"%s\" exists in this program but is not a function."),
151                  name);
152         }
153       return value_of_variable (sym, NULL);
154     }
155   else
156     {
157       struct minimal_symbol *msymbol = lookup_minimal_symbol (name, NULL, NULL);
158       if (msymbol != NULL)
159         {
160           struct type *type;
161           CORE_ADDR maddr;
162           type = lookup_pointer_type (builtin_type_char);
163           type = lookup_function_type (type);
164           type = lookup_pointer_type (type);
165           maddr = SYMBOL_VALUE_ADDRESS (msymbol);
166           return value_from_pointer (type, maddr);
167         }
168       else
169         {
170           if (!target_has_execution)
171             error (_("evaluation of this expression requires the target program to be active"));
172           else
173             error (_("evaluation of this expression requires the program to have a function \"%s\"."), name);
174         }
175     }
176 }
177
178 /* Allocate NBYTES of space in the inferior using the inferior's malloc
179    and return a value that is a pointer to the allocated space. */
180
181 struct value *
182 value_allocate_space_in_inferior (int len)
183 {
184   struct value *blocklen;
185   struct value *val = find_function_in_inferior
186                         (gdbarch_name_of_malloc (current_gdbarch));
187
188   blocklen = value_from_longest (builtin_type_int, (LONGEST) len);
189   val = call_function_by_hand (val, 1, &blocklen);
190   if (value_logical_not (val))
191     {
192       if (!target_has_execution)
193         error (_("No memory available to program now: you need to start the target first"));
194       else
195         error (_("No memory available to program: call to malloc failed"));
196     }
197   return val;
198 }
199
200 static CORE_ADDR
201 allocate_space_in_inferior (int len)
202 {
203   return value_as_long (value_allocate_space_in_inferior (len));
204 }
205
206 /* Cast one pointer or reference type to another.  Both TYPE and
207    the type of ARG2 should be pointer types, or else both should be
208    reference types.  Returns the new pointer or reference.  */
209
210 struct value *
211 value_cast_pointers (struct type *type, struct value *arg2)
212 {
213   struct type *type2 = check_typedef (value_type (arg2));
214   struct type *t1 = check_typedef (TYPE_TARGET_TYPE (type));
215   struct type *t2 = check_typedef (TYPE_TARGET_TYPE (type2));
216
217   if (TYPE_CODE (t1) == TYPE_CODE_STRUCT
218       && TYPE_CODE (t2) == TYPE_CODE_STRUCT
219       && !value_logical_not (arg2))
220     {
221       struct value *v;
222
223       /* Look in the type of the source to see if it contains the
224          type of the target as a superclass.  If so, we'll need to
225          offset the pointer rather than just change its type.  */
226       if (TYPE_NAME (t1) != NULL)
227         {
228           struct value *v2;
229
230           if (TYPE_CODE (type2) == TYPE_CODE_REF)
231             v2 = coerce_ref (arg2);
232           else
233             v2 = value_ind (arg2);
234           v = search_struct_field (type_name_no_tag (t1),
235                                    v2, 0, t2, 1);
236           if (v)
237             {
238               v = value_addr (v);
239               deprecated_set_value_type (v, type);
240               return v;
241             }
242         }
243
244       /* Look in the type of the target to see if it contains the
245          type of the source as a superclass.  If so, we'll need to
246          offset the pointer rather than just change its type.
247          FIXME: This fails silently with virtual inheritance.  */
248       if (TYPE_NAME (t2) != NULL)
249         {
250           v = search_struct_field (type_name_no_tag (t2),
251                                    value_zero (t1, not_lval), 0, t1, 1);
252           if (v)
253             {
254               CORE_ADDR addr2 = value_as_address (arg2);
255               addr2 -= (VALUE_ADDRESS (v)
256                         + value_offset (v)
257                         + value_embedded_offset (v));
258               return value_from_pointer (type, addr2);
259             }
260         }
261     }
262
263   /* No superclass found, just change the pointer type.  */
264   arg2 = value_copy (arg2);
265   deprecated_set_value_type (arg2, type);
266   arg2 = value_change_enclosing_type (arg2, type);
267   set_value_pointed_to_offset (arg2, 0);        /* pai: chk_val */
268   return arg2;
269 }
270
271 /* Cast value ARG2 to type TYPE and return as a value.
272    More general than a C cast: accepts any two types of the same length,
273    and if ARG2 is an lvalue it can be cast into anything at all.  */
274 /* In C++, casts may change pointer or object representations.  */
275
276 struct value *
277 value_cast (struct type *type, struct value *arg2)
278 {
279   enum type_code code1;
280   enum type_code code2;
281   int scalar;
282   struct type *type2;
283
284   int convert_to_boolean = 0;
285
286   if (value_type (arg2) == type)
287     return arg2;
288
289   CHECK_TYPEDEF (type);
290   code1 = TYPE_CODE (type);
291   arg2 = coerce_ref (arg2);
292   type2 = check_typedef (value_type (arg2));
293
294   /* You can't cast to a reference type.  See value_cast_pointers
295      instead.  */
296   gdb_assert (code1 != TYPE_CODE_REF);
297
298   /* A cast to an undetermined-length array_type, such as (TYPE [])OBJECT,
299      is treated like a cast to (TYPE [N])OBJECT,
300      where N is sizeof(OBJECT)/sizeof(TYPE). */
301   if (code1 == TYPE_CODE_ARRAY)
302     {
303       struct type *element_type = TYPE_TARGET_TYPE (type);
304       unsigned element_length = TYPE_LENGTH (check_typedef (element_type));
305       if (element_length > 0
306         && TYPE_ARRAY_UPPER_BOUND_TYPE (type) == BOUND_CANNOT_BE_DETERMINED)
307         {
308           struct type *range_type = TYPE_INDEX_TYPE (type);
309           int val_length = TYPE_LENGTH (type2);
310           LONGEST low_bound, high_bound, new_length;
311           if (get_discrete_bounds (range_type, &low_bound, &high_bound) < 0)
312             low_bound = 0, high_bound = 0;
313           new_length = val_length / element_length;
314           if (val_length % element_length != 0)
315             warning (_("array element type size does not divide object size in cast"));
316           /* FIXME-type-allocation: need a way to free this type when we are
317              done with it.  */
318           range_type = create_range_type ((struct type *) NULL,
319                                           TYPE_TARGET_TYPE (range_type),
320                                           low_bound,
321                                           new_length + low_bound - 1);
322           deprecated_set_value_type (arg2, create_array_type ((struct type *) NULL,
323                                                               element_type, range_type));
324           return arg2;
325         }
326     }
327
328   if (current_language->c_style_arrays
329       && TYPE_CODE (type2) == TYPE_CODE_ARRAY)
330     arg2 = value_coerce_array (arg2);
331
332   if (TYPE_CODE (type2) == TYPE_CODE_FUNC)
333     arg2 = value_coerce_function (arg2);
334
335   type2 = check_typedef (value_type (arg2));
336   code2 = TYPE_CODE (type2);
337
338   if (code1 == TYPE_CODE_COMPLEX)
339     return cast_into_complex (type, arg2);
340   if (code1 == TYPE_CODE_BOOL)
341     {
342       code1 = TYPE_CODE_INT;
343       convert_to_boolean = 1;
344     }
345   if (code1 == TYPE_CODE_CHAR)
346     code1 = TYPE_CODE_INT;
347   if (code2 == TYPE_CODE_BOOL || code2 == TYPE_CODE_CHAR)
348     code2 = TYPE_CODE_INT;
349
350   scalar = (code2 == TYPE_CODE_INT || code2 == TYPE_CODE_FLT
351             || code2 == TYPE_CODE_ENUM || code2 == TYPE_CODE_RANGE);
352
353   if (code1 == TYPE_CODE_STRUCT
354       && code2 == TYPE_CODE_STRUCT
355       && TYPE_NAME (type) != 0)
356     {
357       /* Look in the type of the source to see if it contains the
358          type of the target as a superclass.  If so, we'll need to
359          offset the object in addition to changing its type.  */
360       struct value *v = search_struct_field (type_name_no_tag (type),
361                                          arg2, 0, type2, 1);
362       if (v)
363         {
364           deprecated_set_value_type (v, type);
365           return v;
366         }
367     }
368   if (code1 == TYPE_CODE_FLT && scalar)
369     return value_from_double (type, value_as_double (arg2));
370   else if ((code1 == TYPE_CODE_INT || code1 == TYPE_CODE_ENUM
371             || code1 == TYPE_CODE_RANGE)
372            && (scalar || code2 == TYPE_CODE_PTR
373                || code2 == TYPE_CODE_MEMBERPTR))
374     {
375       LONGEST longest;
376
377       /* When we cast pointers to integers, we mustn't use
378          gdbarch_pointer_to_address to find the address the pointer
379          represents, as value_as_long would.  GDB should evaluate
380          expressions just as the compiler would --- and the compiler
381          sees a cast as a simple reinterpretation of the pointer's
382          bits.  */
383       if (code2 == TYPE_CODE_PTR)
384         longest = extract_unsigned_integer (value_contents (arg2),
385                                             TYPE_LENGTH (type2));
386       else
387         longest = value_as_long (arg2);
388       return value_from_longest (type, convert_to_boolean ?
389                                  (LONGEST) (longest ? 1 : 0) : longest);
390     }
391   else if (code1 == TYPE_CODE_PTR && (code2 == TYPE_CODE_INT  ||
392                                       code2 == TYPE_CODE_ENUM ||
393                                       code2 == TYPE_CODE_RANGE))
394     {
395       /* TYPE_LENGTH (type) is the length of a pointer, but we really
396          want the length of an address! -- we are really dealing with
397          addresses (i.e., gdb representations) not pointers (i.e.,
398          target representations) here.
399
400          This allows things like "print *(int *)0x01000234" to work
401          without printing a misleading message -- which would
402          otherwise occur when dealing with a target having two byte
403          pointers and four byte addresses.  */
404
405       int addr_bit = gdbarch_addr_bit (current_gdbarch);
406
407       LONGEST longest = value_as_long (arg2);
408       if (addr_bit < sizeof (LONGEST) * HOST_CHAR_BIT)
409         {
410           if (longest >= ((LONGEST) 1 << addr_bit)
411               || longest <= -((LONGEST) 1 << addr_bit))
412             warning (_("value truncated"));
413         }
414       return value_from_longest (type, longest);
415     }
416   else if (code1 == TYPE_CODE_METHODPTR && code2 == TYPE_CODE_INT
417            && value_as_long (arg2) == 0)
418     {
419       struct value *result = allocate_value (type);
420       cplus_make_method_ptr (value_contents_writeable (result), 0, 0);
421       return result;
422     }
423   else if (code1 == TYPE_CODE_MEMBERPTR && code2 == TYPE_CODE_INT
424            && value_as_long (arg2) == 0)
425     {
426       /* The Itanium C++ ABI represents NULL pointers to members as
427          minus one, instead of biasing the normal case.  */
428       return value_from_longest (type, -1);
429     }
430   else if (TYPE_LENGTH (type) == TYPE_LENGTH (type2))
431     {
432       if (code1 == TYPE_CODE_PTR && code2 == TYPE_CODE_PTR)
433         return value_cast_pointers (type, arg2);
434
435       arg2 = value_copy (arg2);
436       deprecated_set_value_type (arg2, type);
437       arg2 = value_change_enclosing_type (arg2, type);
438       set_value_pointed_to_offset (arg2, 0);    /* pai: chk_val */
439       return arg2;
440     }
441   else if (VALUE_LVAL (arg2) == lval_memory)
442     return value_at_lazy (type, VALUE_ADDRESS (arg2) + value_offset (arg2));
443   else if (code1 == TYPE_CODE_VOID)
444     {
445       return value_zero (builtin_type_void, not_lval);
446     }
447   else
448     {
449       error (_("Invalid cast."));
450       return 0;
451     }
452 }
453
454 /* Create a value of type TYPE that is zero, and return it.  */
455
456 struct value *
457 value_zero (struct type *type, enum lval_type lv)
458 {
459   struct value *val = allocate_value (type);
460   VALUE_LVAL (val) = lv;
461
462   return val;
463 }
464
465 /* Return a value with type TYPE located at ADDR.
466
467    Call value_at only if the data needs to be fetched immediately;
468    if we can be 'lazy' and defer the fetch, perhaps indefinately, call
469    value_at_lazy instead.  value_at_lazy simply records the address of
470    the data and sets the lazy-evaluation-required flag.  The lazy flag
471    is tested in the value_contents macro, which is used if and when
472    the contents are actually required.
473
474    Note: value_at does *NOT* handle embedded offsets; perform such
475    adjustments before or after calling it. */
476
477 struct value *
478 value_at (struct type *type, CORE_ADDR addr)
479 {
480   struct value *val;
481
482   if (TYPE_CODE (check_typedef (type)) == TYPE_CODE_VOID)
483     error (_("Attempt to dereference a generic pointer."));
484
485   val = allocate_value (type);
486
487   read_memory (addr, value_contents_all_raw (val), TYPE_LENGTH (type));
488
489   VALUE_LVAL (val) = lval_memory;
490   VALUE_ADDRESS (val) = addr;
491
492   return val;
493 }
494
495 /* Return a lazy value with type TYPE located at ADDR (cf. value_at).  */
496
497 struct value *
498 value_at_lazy (struct type *type, CORE_ADDR addr)
499 {
500   struct value *val;
501
502   if (TYPE_CODE (check_typedef (type)) == TYPE_CODE_VOID)
503     error (_("Attempt to dereference a generic pointer."));
504
505   val = allocate_value (type);
506
507   VALUE_LVAL (val) = lval_memory;
508   VALUE_ADDRESS (val) = addr;
509   set_value_lazy (val, 1);
510
511   return val;
512 }
513
514 /* Called only from the value_contents and value_contents_all()
515    macros, if the current data for a variable needs to be loaded into
516    value_contents(VAL).  Fetches the data from the user's process, and
517    clears the lazy flag to indicate that the data in the buffer is
518    valid.
519
520    If the value is zero-length, we avoid calling read_memory, which would
521    abort.  We mark the value as fetched anyway -- all 0 bytes of it.
522
523    This function returns a value because it is used in the value_contents
524    macro as part of an expression, where a void would not work.  The
525    value is ignored.  */
526
527 int
528 value_fetch_lazy (struct value *val)
529 {
530   CORE_ADDR addr = VALUE_ADDRESS (val) + value_offset (val);
531   int length = TYPE_LENGTH (value_enclosing_type (val));
532
533   struct type *type = value_type (val);
534   if (length)
535     read_memory (addr, value_contents_all_raw (val), length);
536
537   set_value_lazy (val, 0);
538   return 0;
539 }
540
541
542 /* Store the contents of FROMVAL into the location of TOVAL.
543    Return a new value with the location of TOVAL and contents of FROMVAL.  */
544
545 struct value *
546 value_assign (struct value *toval, struct value *fromval)
547 {
548   struct type *type;
549   struct value *val;
550   struct frame_id old_frame;
551
552   if (!deprecated_value_modifiable (toval))
553     error (_("Left operand of assignment is not a modifiable lvalue."));
554
555   toval = coerce_ref (toval);
556
557   type = value_type (toval);
558   if (VALUE_LVAL (toval) != lval_internalvar)
559     fromval = value_cast (type, fromval);
560   else
561     fromval = coerce_array (fromval);
562   CHECK_TYPEDEF (type);
563
564   /* Since modifying a register can trash the frame chain, and modifying memory
565      can trash the frame cache, we save the old frame and then restore the new
566      frame afterwards.  */
567   old_frame = get_frame_id (deprecated_safe_get_selected_frame ());
568
569   switch (VALUE_LVAL (toval))
570     {
571     case lval_internalvar:
572       set_internalvar (VALUE_INTERNALVAR (toval), fromval);
573       val = value_copy (VALUE_INTERNALVAR (toval)->value);
574       val = value_change_enclosing_type (val, value_enclosing_type (fromval));
575       set_value_embedded_offset (val, value_embedded_offset (fromval));
576       set_value_pointed_to_offset (val, value_pointed_to_offset (fromval));
577       return val;
578
579     case lval_internalvar_component:
580       set_internalvar_component (VALUE_INTERNALVAR (toval),
581                                  value_offset (toval),
582                                  value_bitpos (toval),
583                                  value_bitsize (toval),
584                                  fromval);
585       break;
586
587     case lval_memory:
588       {
589         const gdb_byte *dest_buffer;
590         CORE_ADDR changed_addr;
591         int changed_len;
592         gdb_byte buffer[sizeof (LONGEST)];
593
594         if (value_bitsize (toval))
595           {
596             /* We assume that the argument to read_memory is in units of
597                host chars.  FIXME:  Is that correct?  */
598             changed_len = (value_bitpos (toval)
599                            + value_bitsize (toval)
600                            + HOST_CHAR_BIT - 1)
601               / HOST_CHAR_BIT;
602
603             if (changed_len > (int) sizeof (LONGEST))
604               error (_("Can't handle bitfields which don't fit in a %d bit word."),
605                      (int) sizeof (LONGEST) * HOST_CHAR_BIT);
606
607             read_memory (VALUE_ADDRESS (toval) + value_offset (toval),
608                          buffer, changed_len);
609             modify_field (buffer, value_as_long (fromval),
610                           value_bitpos (toval), value_bitsize (toval));
611             changed_addr = VALUE_ADDRESS (toval) + value_offset (toval);
612             dest_buffer = buffer;
613           }
614         else
615           {
616             changed_addr = VALUE_ADDRESS (toval) + value_offset (toval);
617             changed_len = TYPE_LENGTH (type);
618             dest_buffer = value_contents (fromval);
619           }
620
621         write_memory (changed_addr, dest_buffer, changed_len);
622         if (deprecated_memory_changed_hook)
623           deprecated_memory_changed_hook (changed_addr, changed_len);
624       }
625       break;
626
627     case lval_register:
628       {
629         struct frame_info *frame;
630         int value_reg;
631
632         /* Figure out which frame this is in currently.  */
633         frame = frame_find_by_id (VALUE_FRAME_ID (toval));
634         value_reg = VALUE_REGNUM (toval);
635
636         if (!frame)
637           error (_("Value being assigned to is no longer active."));
638         
639         if (gdbarch_convert_register_p
640             (current_gdbarch, VALUE_REGNUM (toval), type))
641           {
642             /* If TOVAL is a special machine register requiring
643                conversion of program values to a special raw format.  */
644             gdbarch_value_to_register (current_gdbarch,
645                                        frame, VALUE_REGNUM (toval),
646                                        type, value_contents (fromval));
647           }
648         else
649           {
650             if (value_bitsize (toval))
651               {
652                 int changed_len;
653                 gdb_byte buffer[sizeof (LONGEST)];
654
655                 changed_len = (value_bitpos (toval)
656                                + value_bitsize (toval)
657                                + HOST_CHAR_BIT - 1)
658                   / HOST_CHAR_BIT;
659
660                 if (changed_len > (int) sizeof (LONGEST))
661                   error (_("Can't handle bitfields which don't fit in a %d bit word."),
662                          (int) sizeof (LONGEST) * HOST_CHAR_BIT);
663
664                 get_frame_register_bytes (frame, value_reg,
665                                           value_offset (toval),
666                                           changed_len, buffer);
667
668                 modify_field (buffer, value_as_long (fromval),
669                               value_bitpos (toval), value_bitsize (toval));
670
671                 put_frame_register_bytes (frame, value_reg,
672                                           value_offset (toval),
673                                           changed_len, buffer);
674               }
675             else
676               {
677                 put_frame_register_bytes (frame, value_reg,
678                                           value_offset (toval),
679                                           TYPE_LENGTH (type),
680                                           value_contents (fromval));
681               }
682           }
683
684         if (deprecated_register_changed_hook)
685           deprecated_register_changed_hook (-1);
686         observer_notify_target_changed (&current_target);
687         break;
688       }
689       
690     default:
691       error (_("Left operand of assignment is not an lvalue."));
692     }
693
694   /* Assigning to the stack pointer, frame pointer, and other
695      (architecture and calling convention specific) registers may
696      cause the frame cache to be out of date.  Assigning to memory
697      also can.  We just do this on all assignments to registers or
698      memory, for simplicity's sake; I doubt the slowdown matters.  */
699   switch (VALUE_LVAL (toval))
700     {
701     case lval_memory:
702     case lval_register:
703
704       reinit_frame_cache ();
705
706       /* Having destoroyed the frame cache, restore the selected frame.  */
707
708       /* FIXME: cagney/2002-11-02: There has to be a better way of
709          doing this.  Instead of constantly saving/restoring the
710          frame.  Why not create a get_selected_frame() function that,
711          having saved the selected frame's ID can automatically
712          re-find the previously selected frame automatically.  */
713
714       {
715         struct frame_info *fi = frame_find_by_id (old_frame);
716         if (fi != NULL)
717           select_frame (fi);
718       }
719
720       break;
721     default:
722       break;
723     }
724   
725   /* If the field does not entirely fill a LONGEST, then zero the sign bits.
726      If the field is signed, and is negative, then sign extend. */
727   if ((value_bitsize (toval) > 0)
728       && (value_bitsize (toval) < 8 * (int) sizeof (LONGEST)))
729     {
730       LONGEST fieldval = value_as_long (fromval);
731       LONGEST valmask = (((ULONGEST) 1) << value_bitsize (toval)) - 1;
732
733       fieldval &= valmask;
734       if (!TYPE_UNSIGNED (type) && (fieldval & (valmask ^ (valmask >> 1))))
735         fieldval |= ~valmask;
736
737       fromval = value_from_longest (type, fieldval);
738     }
739
740   val = value_copy (toval);
741   memcpy (value_contents_raw (val), value_contents (fromval),
742           TYPE_LENGTH (type));
743   deprecated_set_value_type (val, type);
744   val = value_change_enclosing_type (val, value_enclosing_type (fromval));
745   set_value_embedded_offset (val, value_embedded_offset (fromval));
746   set_value_pointed_to_offset (val, value_pointed_to_offset (fromval));
747
748   return val;
749 }
750
751 /* Extend a value VAL to COUNT repetitions of its type.  */
752
753 struct value *
754 value_repeat (struct value *arg1, int count)
755 {
756   struct value *val;
757
758   if (VALUE_LVAL (arg1) != lval_memory)
759     error (_("Only values in memory can be extended with '@'."));
760   if (count < 1)
761     error (_("Invalid number %d of repetitions."), count);
762
763   val = allocate_repeat_value (value_enclosing_type (arg1), count);
764
765   read_memory (VALUE_ADDRESS (arg1) + value_offset (arg1),
766                value_contents_all_raw (val),
767                TYPE_LENGTH (value_enclosing_type (val)));
768   VALUE_LVAL (val) = lval_memory;
769   VALUE_ADDRESS (val) = VALUE_ADDRESS (arg1) + value_offset (arg1);
770
771   return val;
772 }
773
774 struct value *
775 value_of_variable (struct symbol *var, struct block *b)
776 {
777   struct value *val;
778   struct frame_info *frame = NULL;
779
780   if (!b)
781     frame = NULL;               /* Use selected frame.  */
782   else if (symbol_read_needs_frame (var))
783     {
784       frame = block_innermost_frame (b);
785       if (!frame)
786         {
787           if (BLOCK_FUNCTION (b)
788               && SYMBOL_PRINT_NAME (BLOCK_FUNCTION (b)))
789             error (_("No frame is currently executing in block %s."),
790                    SYMBOL_PRINT_NAME (BLOCK_FUNCTION (b)));
791           else
792             error (_("No frame is currently executing in specified block"));
793         }
794     }
795
796   val = read_var_value (var, frame);
797   if (!val)
798     error (_("Address of symbol \"%s\" is unknown."), SYMBOL_PRINT_NAME (var));
799
800   return val;
801 }
802
803 /* Given a value which is an array, return a value which is a pointer to its
804    first element, regardless of whether or not the array has a nonzero lower
805    bound.
806
807    FIXME:  A previous comment here indicated that this routine should be
808    substracting the array's lower bound.  It's not clear to me that this
809    is correct.  Given an array subscripting operation, it would certainly
810    work to do the adjustment here, essentially computing:
811
812    (&array[0] - (lowerbound * sizeof array[0])) + (index * sizeof array[0])
813
814    However I believe a more appropriate and logical place to account for
815    the lower bound is to do so in value_subscript, essentially computing:
816
817    (&array[0] + ((index - lowerbound) * sizeof array[0]))
818
819    As further evidence consider what would happen with operations other
820    than array subscripting, where the caller would get back a value that
821    had an address somewhere before the actual first element of the array,
822    and the information about the lower bound would be lost because of
823    the coercion to pointer type.
824  */
825
826 struct value *
827 value_coerce_array (struct value *arg1)
828 {
829   struct type *type = check_typedef (value_type (arg1));
830
831   if (VALUE_LVAL (arg1) != lval_memory)
832     error (_("Attempt to take address of value not located in memory."));
833
834   return value_from_pointer (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
835                              (VALUE_ADDRESS (arg1) + value_offset (arg1)));
836 }
837
838 /* Given a value which is a function, return a value which is a pointer
839    to it.  */
840
841 struct value *
842 value_coerce_function (struct value *arg1)
843 {
844   struct value *retval;
845
846   if (VALUE_LVAL (arg1) != lval_memory)
847     error (_("Attempt to take address of value not located in memory."));
848
849   retval = value_from_pointer (lookup_pointer_type (value_type (arg1)),
850                                (VALUE_ADDRESS (arg1) + value_offset (arg1)));
851   return retval;
852 }
853
854 /* Return a pointer value for the object for which ARG1 is the contents.  */
855
856 struct value *
857 value_addr (struct value *arg1)
858 {
859   struct value *arg2;
860
861   struct type *type = check_typedef (value_type (arg1));
862   if (TYPE_CODE (type) == TYPE_CODE_REF)
863     {
864       /* Copy the value, but change the type from (T&) to (T*).
865          We keep the same location information, which is efficient,
866          and allows &(&X) to get the location containing the reference. */
867       arg2 = value_copy (arg1);
868       deprecated_set_value_type (arg2, lookup_pointer_type (TYPE_TARGET_TYPE (type)));
869       return arg2;
870     }
871   if (TYPE_CODE (type) == TYPE_CODE_FUNC)
872     return value_coerce_function (arg1);
873
874   if (VALUE_LVAL (arg1) != lval_memory)
875     error (_("Attempt to take address of value not located in memory."));
876
877   /* Get target memory address */
878   arg2 = value_from_pointer (lookup_pointer_type (value_type (arg1)),
879                              (VALUE_ADDRESS (arg1)
880                               + value_offset (arg1)
881                               + value_embedded_offset (arg1)));
882
883   /* This may be a pointer to a base subobject; so remember the
884      full derived object's type ... */
885   arg2 = value_change_enclosing_type (arg2, lookup_pointer_type (value_enclosing_type (arg1)));
886   /* ... and also the relative position of the subobject in the full object */
887   set_value_pointed_to_offset (arg2, value_embedded_offset (arg1));
888   return arg2;
889 }
890
891 /* Return a reference value for the object for which ARG1 is the contents.  */
892
893 struct value *
894 value_ref (struct value *arg1)
895 {
896   struct value *arg2;
897
898   struct type *type = check_typedef (value_type (arg1));
899   if (TYPE_CODE (type) == TYPE_CODE_REF)
900     return arg1;
901
902   arg2 = value_addr (arg1);
903   deprecated_set_value_type (arg2, lookup_reference_type (type));
904   return arg2;
905 }
906
907 /* Given a value of a pointer type, apply the C unary * operator to it.  */
908
909 struct value *
910 value_ind (struct value *arg1)
911 {
912   struct type *base_type;
913   struct value *arg2;
914
915   arg1 = coerce_array (arg1);
916
917   base_type = check_typedef (value_type (arg1));
918
919   /* Allow * on an integer so we can cast it to whatever we want.
920      This returns an int, which seems like the most C-like thing
921      to do.  "long long" variables are rare enough that
922      BUILTIN_TYPE_LONGEST would seem to be a mistake.  */
923   if (TYPE_CODE (base_type) == TYPE_CODE_INT)
924     return value_at_lazy (builtin_type_int,
925                           (CORE_ADDR) value_as_address (arg1));
926   else if (TYPE_CODE (base_type) == TYPE_CODE_PTR)
927     {
928       struct type *enc_type;
929       /* We may be pointing to something embedded in a larger object */
930       /* Get the real type of the enclosing object */
931       enc_type = check_typedef (value_enclosing_type (arg1));
932       enc_type = TYPE_TARGET_TYPE (enc_type);
933
934       if (TYPE_CODE (check_typedef (enc_type)) == TYPE_CODE_FUNC
935           || TYPE_CODE (check_typedef (enc_type)) == TYPE_CODE_METHOD)
936         /* For functions, go through find_function_addr, which knows
937            how to handle function descriptors.  */
938         arg2 = value_at_lazy (enc_type, find_function_addr (arg1, NULL));
939       else
940         /* Retrieve the enclosing object pointed to */
941         arg2 = value_at_lazy (enc_type, (value_as_address (arg1)
942                                          - value_pointed_to_offset (arg1)));
943
944       /* Re-adjust type */
945       deprecated_set_value_type (arg2, TYPE_TARGET_TYPE (base_type));
946       /* Add embedding info */
947       arg2 = value_change_enclosing_type (arg2, enc_type);
948       set_value_embedded_offset (arg2, value_pointed_to_offset (arg1));
949
950       /* We may be pointing to an object of some derived type */
951       arg2 = value_full_object (arg2, NULL, 0, 0, 0);
952       return arg2;
953     }
954
955   error (_("Attempt to take contents of a non-pointer value."));
956   return 0;                     /* For lint -- never reached */
957 }
958 \f
959 /* Create a value for an array by allocating space in the inferior, copying
960    the data into that space, and then setting up an array value.
961
962    The array bounds are set from LOWBOUND and HIGHBOUND, and the array is
963    populated from the values passed in ELEMVEC.
964
965    The element type of the array is inherited from the type of the
966    first element, and all elements must have the same size (though we
967    don't currently enforce any restriction on their types). */
968
969 struct value *
970 value_array (int lowbound, int highbound, struct value **elemvec)
971 {
972   int nelem;
973   int idx;
974   unsigned int typelength;
975   struct value *val;
976   struct type *rangetype;
977   struct type *arraytype;
978   CORE_ADDR addr;
979
980   /* Validate that the bounds are reasonable and that each of the elements
981      have the same size. */
982
983   nelem = highbound - lowbound + 1;
984   if (nelem <= 0)
985     {
986       error (_("bad array bounds (%d, %d)"), lowbound, highbound);
987     }
988   typelength = TYPE_LENGTH (value_enclosing_type (elemvec[0]));
989   for (idx = 1; idx < nelem; idx++)
990     {
991       if (TYPE_LENGTH (value_enclosing_type (elemvec[idx])) != typelength)
992         {
993           error (_("array elements must all be the same size"));
994         }
995     }
996
997   rangetype = create_range_type ((struct type *) NULL, builtin_type_int,
998                                  lowbound, highbound);
999   arraytype = create_array_type ((struct type *) NULL,
1000                               value_enclosing_type (elemvec[0]), rangetype);
1001
1002   if (!current_language->c_style_arrays)
1003     {
1004       val = allocate_value (arraytype);
1005       for (idx = 0; idx < nelem; idx++)
1006         {
1007           memcpy (value_contents_all_raw (val) + (idx * typelength),
1008                   value_contents_all (elemvec[idx]),
1009                   typelength);
1010         }
1011       return val;
1012     }
1013
1014   /* Allocate space to store the array in the inferior, and then initialize
1015      it by copying in each element.  FIXME:  Is it worth it to create a
1016      local buffer in which to collect each value and then write all the
1017      bytes in one operation? */
1018
1019   addr = allocate_space_in_inferior (nelem * typelength);
1020   for (idx = 0; idx < nelem; idx++)
1021     {
1022       write_memory (addr + (idx * typelength),
1023                     value_contents_all (elemvec[idx]),
1024                     typelength);
1025     }
1026
1027   /* Create the array type and set up an array value to be evaluated lazily. */
1028
1029   val = value_at_lazy (arraytype, addr);
1030   return (val);
1031 }
1032
1033 /* Create a value for a string constant by allocating space in the inferior,
1034    copying the data into that space, and returning the address with type
1035    TYPE_CODE_STRING.  PTR points to the string constant data; LEN is number
1036    of characters.
1037    Note that string types are like array of char types with a lower bound of
1038    zero and an upper bound of LEN - 1.  Also note that the string may contain
1039    embedded null bytes. */
1040
1041 struct value *
1042 value_string (char *ptr, int len)
1043 {
1044   struct value *val;
1045   int lowbound = current_language->string_lower_bound;
1046   struct type *rangetype = create_range_type ((struct type *) NULL,
1047                                               builtin_type_int,
1048                                               lowbound, len + lowbound - 1);
1049   struct type *stringtype
1050   = create_string_type ((struct type *) NULL, rangetype);
1051   CORE_ADDR addr;
1052
1053   if (current_language->c_style_arrays == 0)
1054     {
1055       val = allocate_value (stringtype);
1056       memcpy (value_contents_raw (val), ptr, len);
1057       return val;
1058     }
1059
1060
1061   /* Allocate space to store the string in the inferior, and then
1062      copy LEN bytes from PTR in gdb to that address in the inferior. */
1063
1064   addr = allocate_space_in_inferior (len);
1065   write_memory (addr, (gdb_byte *) ptr, len);
1066
1067   val = value_at_lazy (stringtype, addr);
1068   return (val);
1069 }
1070
1071 struct value *
1072 value_bitstring (char *ptr, int len)
1073 {
1074   struct value *val;
1075   struct type *domain_type = create_range_type (NULL, builtin_type_int,
1076                                                 0, len - 1);
1077   struct type *type = create_set_type ((struct type *) NULL, domain_type);
1078   TYPE_CODE (type) = TYPE_CODE_BITSTRING;
1079   val = allocate_value (type);
1080   memcpy (value_contents_raw (val), ptr, TYPE_LENGTH (type));
1081   return val;
1082 }
1083 \f
1084 /* See if we can pass arguments in T2 to a function which takes arguments
1085    of types T1.  T1 is a list of NARGS arguments, and T2 is a NULL-terminated
1086    vector.  If some arguments need coercion of some sort, then the coerced
1087    values are written into T2.  Return value is 0 if the arguments could be
1088    matched, or the position at which they differ if not.
1089
1090    STATICP is nonzero if the T1 argument list came from a
1091    static member function.  T2 will still include the ``this'' pointer,
1092    but it will be skipped.
1093
1094    For non-static member functions, we ignore the first argument,
1095    which is the type of the instance variable.  This is because we want
1096    to handle calls with objects from derived classes.  This is not
1097    entirely correct: we should actually check to make sure that a
1098    requested operation is type secure, shouldn't we?  FIXME.  */
1099
1100 static int
1101 typecmp (int staticp, int varargs, int nargs,
1102          struct field t1[], struct value *t2[])
1103 {
1104   int i;
1105
1106   if (t2 == 0)
1107     internal_error (__FILE__, __LINE__, _("typecmp: no argument list"));
1108
1109   /* Skip ``this'' argument if applicable.  T2 will always include THIS.  */
1110   if (staticp)
1111     t2 ++;
1112
1113   for (i = 0;
1114        (i < nargs) && TYPE_CODE (t1[i].type) != TYPE_CODE_VOID;
1115        i++)
1116     {
1117       struct type *tt1, *tt2;
1118
1119       if (!t2[i])
1120         return i + 1;
1121
1122       tt1 = check_typedef (t1[i].type);
1123       tt2 = check_typedef (value_type (t2[i]));
1124
1125       if (TYPE_CODE (tt1) == TYPE_CODE_REF
1126       /* We should be doing hairy argument matching, as below.  */
1127           && (TYPE_CODE (check_typedef (TYPE_TARGET_TYPE (tt1))) == TYPE_CODE (tt2)))
1128         {
1129           if (TYPE_CODE (tt2) == TYPE_CODE_ARRAY)
1130             t2[i] = value_coerce_array (t2[i]);
1131           else
1132             t2[i] = value_ref (t2[i]);
1133           continue;
1134         }
1135
1136       /* djb - 20000715 - Until the new type structure is in the
1137          place, and we can attempt things like implicit conversions,
1138          we need to do this so you can take something like a map<const
1139          char *>, and properly access map["hello"], because the
1140          argument to [] will be a reference to a pointer to a char,
1141          and the argument will be a pointer to a char. */
1142       while ( TYPE_CODE(tt1) == TYPE_CODE_REF ||
1143               TYPE_CODE (tt1) == TYPE_CODE_PTR)
1144         {
1145           tt1 = check_typedef( TYPE_TARGET_TYPE(tt1) );
1146         }
1147       while ( TYPE_CODE(tt2) == TYPE_CODE_ARRAY ||
1148               TYPE_CODE(tt2) == TYPE_CODE_PTR ||
1149               TYPE_CODE(tt2) == TYPE_CODE_REF)
1150         {
1151           tt2 = check_typedef( TYPE_TARGET_TYPE(tt2) );
1152         }
1153       if (TYPE_CODE (tt1) == TYPE_CODE (tt2))
1154         continue;
1155       /* Array to pointer is a `trivial conversion' according to the ARM.  */
1156
1157       /* We should be doing much hairier argument matching (see section 13.2
1158          of the ARM), but as a quick kludge, just check for the same type
1159          code.  */
1160       if (TYPE_CODE (t1[i].type) != TYPE_CODE (value_type (t2[i])))
1161         return i + 1;
1162     }
1163   if (varargs || t2[i] == NULL)
1164     return 0;
1165   return i + 1;
1166 }
1167
1168 /* Helper function used by value_struct_elt to recurse through baseclasses.
1169    Look for a field NAME in ARG1. Adjust the address of ARG1 by OFFSET bytes,
1170    and search in it assuming it has (class) type TYPE.
1171    If found, return value, else return NULL.
1172
1173    If LOOKING_FOR_BASECLASS, then instead of looking for struct fields,
1174    look for a baseclass named NAME.  */
1175
1176 static struct value *
1177 search_struct_field (char *name, struct value *arg1, int offset,
1178                      struct type *type, int looking_for_baseclass)
1179 {
1180   int i;
1181   int nbases = TYPE_N_BASECLASSES (type);
1182
1183   CHECK_TYPEDEF (type);
1184
1185   if (!looking_for_baseclass)
1186     for (i = TYPE_NFIELDS (type) - 1; i >= nbases; i--)
1187       {
1188         char *t_field_name = TYPE_FIELD_NAME (type, i);
1189
1190         if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
1191           {
1192             struct value *v;
1193             if (TYPE_FIELD_STATIC (type, i))
1194               {
1195                 v = value_static_field (type, i);
1196                 if (v == 0)
1197                   error (_("field %s is nonexistent or has been optimised out"),
1198                          name);
1199               }
1200             else
1201               {
1202                 v = value_primitive_field (arg1, offset, i, type);
1203                 if (v == 0)
1204                   error (_("there is no field named %s"), name);
1205               }
1206             return v;
1207           }
1208
1209         if (t_field_name
1210             && (t_field_name[0] == '\0'
1211                 || (TYPE_CODE (type) == TYPE_CODE_UNION
1212                     && (strcmp_iw (t_field_name, "else") == 0))))
1213           {
1214             struct type *field_type = TYPE_FIELD_TYPE (type, i);
1215             if (TYPE_CODE (field_type) == TYPE_CODE_UNION
1216                 || TYPE_CODE (field_type) == TYPE_CODE_STRUCT)
1217               {
1218                 /* Look for a match through the fields of an anonymous union,
1219                    or anonymous struct.  C++ provides anonymous unions.
1220
1221                    In the GNU Chill (now deleted from GDB)
1222                    implementation of variant record types, each
1223                    <alternative field> has an (anonymous) union type,
1224                    each member of the union represents a <variant
1225                    alternative>.  Each <variant alternative> is
1226                    represented as a struct, with a member for each
1227                    <variant field>.  */
1228
1229                 struct value *v;
1230                 int new_offset = offset;
1231
1232                 /* This is pretty gross.  In G++, the offset in an
1233                    anonymous union is relative to the beginning of the
1234                    enclosing struct.  In the GNU Chill (now deleted
1235                    from GDB) implementation of variant records, the
1236                    bitpos is zero in an anonymous union field, so we
1237                    have to add the offset of the union here. */
1238                 if (TYPE_CODE (field_type) == TYPE_CODE_STRUCT
1239                     || (TYPE_NFIELDS (field_type) > 0
1240                         && TYPE_FIELD_BITPOS (field_type, 0) == 0))
1241                   new_offset += TYPE_FIELD_BITPOS (type, i) / 8;
1242
1243                 v = search_struct_field (name, arg1, new_offset, field_type,
1244                                          looking_for_baseclass);
1245                 if (v)
1246                   return v;
1247               }
1248           }
1249       }
1250
1251   for (i = 0; i < nbases; i++)
1252     {
1253       struct value *v;
1254       struct type *basetype = check_typedef (TYPE_BASECLASS (type, i));
1255       /* If we are looking for baseclasses, this is what we get when we
1256          hit them.  But it could happen that the base part's member name
1257          is not yet filled in.  */
1258       int found_baseclass = (looking_for_baseclass
1259                              && TYPE_BASECLASS_NAME (type, i) != NULL
1260                              && (strcmp_iw (name, TYPE_BASECLASS_NAME (type, i)) == 0));
1261
1262       if (BASETYPE_VIA_VIRTUAL (type, i))
1263         {
1264           int boffset;
1265           struct value *v2 = allocate_value (basetype);
1266
1267           boffset = baseclass_offset (type, i,
1268                                       value_contents (arg1) + offset,
1269                                       VALUE_ADDRESS (arg1)
1270                                       + value_offset (arg1) + offset);
1271           if (boffset == -1)
1272             error (_("virtual baseclass botch"));
1273
1274           /* The virtual base class pointer might have been clobbered by the
1275              user program. Make sure that it still points to a valid memory
1276              location.  */
1277
1278           boffset += offset;
1279           if (boffset < 0 || boffset >= TYPE_LENGTH (type))
1280             {
1281               CORE_ADDR base_addr;
1282
1283               base_addr = VALUE_ADDRESS (arg1) + value_offset (arg1) + boffset;
1284               if (target_read_memory (base_addr, value_contents_raw (v2),
1285                                       TYPE_LENGTH (basetype)) != 0)
1286                 error (_("virtual baseclass botch"));
1287               VALUE_LVAL (v2) = lval_memory;
1288               VALUE_ADDRESS (v2) = base_addr;
1289             }
1290           else
1291             {
1292               VALUE_LVAL (v2) = VALUE_LVAL (arg1);
1293               VALUE_ADDRESS (v2) = VALUE_ADDRESS (arg1);
1294               VALUE_FRAME_ID (v2) = VALUE_FRAME_ID (arg1);
1295               set_value_offset (v2, value_offset (arg1) + boffset);
1296               if (value_lazy (arg1))
1297                 set_value_lazy (v2, 1);
1298               else
1299                 memcpy (value_contents_raw (v2),
1300                         value_contents_raw (arg1) + boffset,
1301                         TYPE_LENGTH (basetype));
1302             }
1303
1304           if (found_baseclass)
1305             return v2;
1306           v = search_struct_field (name, v2, 0, TYPE_BASECLASS (type, i),
1307                                    looking_for_baseclass);
1308         }
1309       else if (found_baseclass)
1310         v = value_primitive_field (arg1, offset, i, type);
1311       else
1312         v = search_struct_field (name, arg1,
1313                                offset + TYPE_BASECLASS_BITPOS (type, i) / 8,
1314                                  basetype, looking_for_baseclass);
1315       if (v)
1316         return v;
1317     }
1318   return NULL;
1319 }
1320
1321
1322 /* Return the offset (in bytes) of the virtual base of type BASETYPE
1323  * in an object pointed to by VALADDR (on the host), assumed to be of
1324  * type TYPE.  OFFSET is number of bytes beyond start of ARG to start
1325  * looking (in case VALADDR is the contents of an enclosing object).
1326  *
1327  * This routine recurses on the primary base of the derived class because
1328  * the virtual base entries of the primary base appear before the other
1329  * virtual base entries.
1330  *
1331  * If the virtual base is not found, a negative integer is returned.
1332  * The magnitude of the negative integer is the number of entries in
1333  * the virtual table to skip over (entries corresponding to various
1334  * ancestral classes in the chain of primary bases).
1335  *
1336  * Important: This assumes the HP / Taligent C++ runtime
1337  * conventions. Use baseclass_offset() instead to deal with g++
1338  * conventions.  */
1339
1340 void
1341 find_rt_vbase_offset (struct type *type, struct type *basetype,
1342                       const gdb_byte *valaddr, int offset, int *boffset_p,
1343                       int *skip_p)
1344 {
1345   int boffset;                  /* offset of virtual base */
1346   int index;                    /* displacement to use in virtual table */
1347   int skip;
1348
1349   struct value *vp;
1350   CORE_ADDR vtbl;               /* the virtual table pointer */
1351   struct type *pbc;             /* the primary base class */
1352
1353   /* Look for the virtual base recursively in the primary base, first.
1354    * This is because the derived class object and its primary base
1355    * subobject share the primary virtual table.  */
1356
1357   boffset = 0;
1358   pbc = TYPE_PRIMARY_BASE (type);
1359   if (pbc)
1360     {
1361       find_rt_vbase_offset (pbc, basetype, valaddr, offset, &boffset, &skip);
1362       if (skip < 0)
1363         {
1364           *boffset_p = boffset;
1365           *skip_p = -1;
1366           return;
1367         }
1368     }
1369   else
1370     skip = 0;
1371
1372
1373   /* Find the index of the virtual base according to HP/Taligent
1374      runtime spec. (Depth-first, left-to-right.)  */
1375   index = virtual_base_index_skip_primaries (basetype, type);
1376
1377   if (index < 0)
1378     {
1379       *skip_p = skip + virtual_base_list_length_skip_primaries (type);
1380       *boffset_p = 0;
1381       return;
1382     }
1383
1384   /* pai: FIXME -- 32x64 possible problem */
1385   /* First word (4 bytes) in object layout is the vtable pointer */
1386   vtbl = *(CORE_ADDR *) (valaddr + offset);
1387
1388   /* Before the constructor is invoked, things are usually zero'd out. */
1389   if (vtbl == 0)
1390     error (_("Couldn't find virtual table -- object may not be constructed yet."));
1391
1392
1393   /* Find virtual base's offset -- jump over entries for primary base
1394    * ancestors, then use the index computed above.  But also adjust by
1395    * HP_ACC_VBASE_START for the vtable slots before the start of the
1396    * virtual base entries.  Offset is negative -- virtual base entries
1397    * appear _before_ the address point of the virtual table. */
1398
1399   /* pai: FIXME -- 32x64 problem, if word = 8 bytes, change multiplier
1400      & use long type */
1401
1402   /* epstein : FIXME -- added param for overlay section. May not be correct */
1403   vp = value_at (builtin_type_int, vtbl + 4 * (-skip - index - HP_ACC_VBASE_START));
1404   boffset = value_as_long (vp);
1405   *skip_p = -1;
1406   *boffset_p = boffset;
1407   return;
1408 }
1409
1410
1411 /* Helper function used by value_struct_elt to recurse through baseclasses.
1412    Look for a field NAME in ARG1. Adjust the address of ARG1 by OFFSET bytes,
1413    and search in it assuming it has (class) type TYPE.
1414    If found, return value, else if name matched and args not return (value)-1,
1415    else return NULL. */
1416
1417 static struct value *
1418 search_struct_method (char *name, struct value **arg1p,
1419                       struct value **args, int offset,
1420                       int *static_memfuncp, struct type *type)
1421 {
1422   int i;
1423   struct value *v;
1424   int name_matched = 0;
1425   char dem_opname[64];
1426
1427   CHECK_TYPEDEF (type);
1428   for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
1429     {
1430       char *t_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
1431       /* FIXME!  May need to check for ARM demangling here */
1432       if (strncmp (t_field_name, "__", 2) == 0 ||
1433           strncmp (t_field_name, "op", 2) == 0 ||
1434           strncmp (t_field_name, "type", 4) == 0)
1435         {
1436           if (cplus_demangle_opname (t_field_name, dem_opname, DMGL_ANSI))
1437             t_field_name = dem_opname;
1438           else if (cplus_demangle_opname (t_field_name, dem_opname, 0))
1439             t_field_name = dem_opname;
1440         }
1441       if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
1442         {
1443           int j = TYPE_FN_FIELDLIST_LENGTH (type, i) - 1;
1444           struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
1445           name_matched = 1;
1446
1447           check_stub_method_group (type, i);
1448           if (j > 0 && args == 0)
1449             error (_("cannot resolve overloaded method `%s': no arguments supplied"), name);
1450           else if (j == 0 && args == 0)
1451             {
1452               v = value_fn_field (arg1p, f, j, type, offset);
1453               if (v != NULL)
1454                 return v;
1455             }
1456           else
1457             while (j >= 0)
1458               {
1459                 if (!typecmp (TYPE_FN_FIELD_STATIC_P (f, j),
1460                               TYPE_VARARGS (TYPE_FN_FIELD_TYPE (f, j)),
1461                               TYPE_NFIELDS (TYPE_FN_FIELD_TYPE (f, j)),
1462                               TYPE_FN_FIELD_ARGS (f, j), args))
1463                   {
1464                     if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
1465                       return value_virtual_fn_field (arg1p, f, j, type, offset);
1466                     if (TYPE_FN_FIELD_STATIC_P (f, j) && static_memfuncp)
1467                       *static_memfuncp = 1;
1468                     v = value_fn_field (arg1p, f, j, type, offset);
1469                     if (v != NULL)
1470                       return v;       
1471                   }
1472                 j--;
1473               }
1474         }
1475     }
1476
1477   for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1478     {
1479       int base_offset;
1480
1481       if (BASETYPE_VIA_VIRTUAL (type, i))
1482         {
1483           if (TYPE_HAS_VTABLE (type))
1484             {
1485               /* HP aCC compiled type, search for virtual base offset
1486                  according to HP/Taligent runtime spec.  */
1487               int skip;
1488               find_rt_vbase_offset (type, TYPE_BASECLASS (type, i),
1489                                     value_contents_all (*arg1p),
1490                                     offset + value_embedded_offset (*arg1p),
1491                                     &base_offset, &skip);
1492               if (skip >= 0)
1493                 error (_("Virtual base class offset not found in vtable"));
1494             }
1495           else
1496             {
1497               struct type *baseclass = check_typedef (TYPE_BASECLASS (type, i));
1498               const gdb_byte *base_valaddr;
1499
1500               /* The virtual base class pointer might have been clobbered by the
1501                  user program. Make sure that it still points to a valid memory
1502                  location.  */
1503
1504               if (offset < 0 || offset >= TYPE_LENGTH (type))
1505                 {
1506                   gdb_byte *tmp = alloca (TYPE_LENGTH (baseclass));
1507                   if (target_read_memory (VALUE_ADDRESS (*arg1p)
1508                                           + value_offset (*arg1p) + offset,
1509                                           tmp, TYPE_LENGTH (baseclass)) != 0)
1510                     error (_("virtual baseclass botch"));
1511                   base_valaddr = tmp;
1512                 }
1513               else
1514                 base_valaddr = value_contents (*arg1p) + offset;
1515
1516               base_offset =
1517                 baseclass_offset (type, i, base_valaddr,
1518                                   VALUE_ADDRESS (*arg1p)
1519                                   + value_offset (*arg1p) + offset);
1520               if (base_offset == -1)
1521                 error (_("virtual baseclass botch"));
1522             }
1523         }
1524       else
1525         {
1526           base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
1527         }
1528       v = search_struct_method (name, arg1p, args, base_offset + offset,
1529                                 static_memfuncp, TYPE_BASECLASS (type, i));
1530       if (v == (struct value *) - 1)
1531         {
1532           name_matched = 1;
1533         }
1534       else if (v)
1535         {
1536 /* FIXME-bothner:  Why is this commented out?  Why is it here?  */
1537 /*        *arg1p = arg1_tmp; */
1538           return v;
1539         }
1540     }
1541   if (name_matched)
1542     return (struct value *) - 1;
1543   else
1544     return NULL;
1545 }
1546
1547 /* Given *ARGP, a value of type (pointer to a)* structure/union,
1548    extract the component named NAME from the ultimate target structure/union
1549    and return it as a value with its appropriate type.
1550    ERR is used in the error message if *ARGP's type is wrong.
1551
1552    C++: ARGS is a list of argument types to aid in the selection of
1553    an appropriate method. Also, handle derived types.
1554
1555    STATIC_MEMFUNCP, if non-NULL, points to a caller-supplied location
1556    where the truthvalue of whether the function that was resolved was
1557    a static member function or not is stored.
1558
1559    ERR is an error message to be printed in case the field is not found.  */
1560
1561 struct value *
1562 value_struct_elt (struct value **argp, struct value **args,
1563                   char *name, int *static_memfuncp, char *err)
1564 {
1565   struct type *t;
1566   struct value *v;
1567
1568   *argp = coerce_array (*argp);
1569
1570   t = check_typedef (value_type (*argp));
1571
1572   /* Follow pointers until we get to a non-pointer.  */
1573
1574   while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
1575     {
1576       *argp = value_ind (*argp);
1577       /* Don't coerce fn pointer to fn and then back again!  */
1578       if (TYPE_CODE (value_type (*argp)) != TYPE_CODE_FUNC)
1579         *argp = coerce_array (*argp);
1580       t = check_typedef (value_type (*argp));
1581     }
1582
1583   if (TYPE_CODE (t) != TYPE_CODE_STRUCT
1584       && TYPE_CODE (t) != TYPE_CODE_UNION)
1585     error (_("Attempt to extract a component of a value that is not a %s."), err);
1586
1587   /* Assume it's not, unless we see that it is.  */
1588   if (static_memfuncp)
1589     *static_memfuncp = 0;
1590
1591   if (!args)
1592     {
1593       /* if there are no arguments ...do this...  */
1594
1595       /* Try as a field first, because if we succeed, there
1596          is less work to be done.  */
1597       v = search_struct_field (name, *argp, 0, t, 0);
1598       if (v)
1599         return v;
1600
1601       /* C++: If it was not found as a data field, then try to
1602          return it as a pointer to a method.  */
1603
1604       if (destructor_name_p (name, t))
1605         error (_("Cannot get value of destructor"));
1606
1607       v = search_struct_method (name, argp, args, 0, static_memfuncp, t);
1608
1609       if (v == (struct value *) - 1)
1610         error (_("Cannot take address of method %s."), name);
1611       else if (v == 0)
1612         {
1613           if (TYPE_NFN_FIELDS (t))
1614             error (_("There is no member or method named %s."), name);
1615           else
1616             error (_("There is no member named %s."), name);
1617         }
1618       return v;
1619     }
1620
1621   if (destructor_name_p (name, t))
1622     {
1623       if (!args[1])
1624         {
1625           /* Destructors are a special case.  */
1626           int m_index, f_index;
1627
1628           v = NULL;
1629           if (get_destructor_fn_field (t, &m_index, &f_index))
1630             {
1631               v = value_fn_field (NULL, TYPE_FN_FIELDLIST1 (t, m_index),
1632                                   f_index, NULL, 0);
1633             }
1634           if (v == NULL)
1635             error (_("could not find destructor function named %s."), name);
1636           else
1637             return v;
1638         }
1639       else
1640         {
1641           error (_("destructor should not have any argument"));
1642         }
1643     }
1644   else
1645     v = search_struct_method (name, argp, args, 0, static_memfuncp, t);
1646   
1647   if (v == (struct value *) - 1)
1648     {
1649       error (_("One of the arguments you tried to pass to %s could not be converted to what the function wants."), name);
1650     }
1651   else if (v == 0)
1652     {
1653       /* See if user tried to invoke data as function.  If so,
1654          hand it back.  If it's not callable (i.e., a pointer to function),
1655          gdb should give an error.  */
1656       v = search_struct_field (name, *argp, 0, t, 0);
1657     }
1658
1659   if (!v)
1660     error (_("Structure has no component named %s."), name);
1661   return v;
1662 }
1663
1664 /* Search through the methods of an object (and its bases)
1665  * to find a specified method. Return the pointer to the
1666  * fn_field list of overloaded instances.
1667  * Helper function for value_find_oload_list.
1668  * ARGP is a pointer to a pointer to a value (the object)
1669  * METHOD is a string containing the method name
1670  * OFFSET is the offset within the value
1671  * TYPE is the assumed type of the object
1672  * NUM_FNS is the number of overloaded instances
1673  * BASETYPE is set to the actual type of the subobject where the method is found
1674  * BOFFSET is the offset of the base subobject where the method is found */
1675
1676 static struct fn_field *
1677 find_method_list (struct value **argp, char *method, int offset,
1678                   struct type *type, int *num_fns,
1679                   struct type **basetype, int *boffset)
1680 {
1681   int i;
1682   struct fn_field *f;
1683   CHECK_TYPEDEF (type);
1684
1685   *num_fns = 0;
1686
1687   /* First check in object itself */
1688   for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
1689     {
1690       /* pai: FIXME What about operators and type conversions? */
1691       char *fn_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
1692       if (fn_field_name && (strcmp_iw (fn_field_name, method) == 0))
1693         {
1694           int len = TYPE_FN_FIELDLIST_LENGTH (type, i);
1695           struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
1696
1697           *num_fns = len;
1698           *basetype = type;
1699           *boffset = offset;
1700
1701           /* Resolve any stub methods.  */
1702           check_stub_method_group (type, i);
1703
1704           return f;
1705         }
1706     }
1707
1708   /* Not found in object, check in base subobjects */
1709   for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1710     {
1711       int base_offset;
1712       if (BASETYPE_VIA_VIRTUAL (type, i))
1713         {
1714           if (TYPE_HAS_VTABLE (type))
1715             {
1716               /* HP aCC compiled type, search for virtual base offset
1717                * according to HP/Taligent runtime spec.  */
1718               int skip;
1719               find_rt_vbase_offset (type, TYPE_BASECLASS (type, i),
1720                                     value_contents_all (*argp),
1721                                     offset + value_embedded_offset (*argp),
1722                                     &base_offset, &skip);
1723               if (skip >= 0)
1724                 error (_("Virtual base class offset not found in vtable"));
1725             }
1726           else
1727             {
1728               /* probably g++ runtime model */
1729               base_offset = value_offset (*argp) + offset;
1730               base_offset =
1731                 baseclass_offset (type, i,
1732                                   value_contents (*argp) + base_offset,
1733                                   VALUE_ADDRESS (*argp) + base_offset);
1734               if (base_offset == -1)
1735                 error (_("virtual baseclass botch"));
1736             }
1737         }
1738       else
1739         /* non-virtual base, simply use bit position from debug info */
1740         {
1741           base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
1742         }
1743       f = find_method_list (argp, method, base_offset + offset,
1744                             TYPE_BASECLASS (type, i), num_fns, basetype,
1745                             boffset);
1746       if (f)
1747         return f;
1748     }
1749   return NULL;
1750 }
1751
1752 /* Return the list of overloaded methods of a specified name.
1753  * ARGP is a pointer to a pointer to a value (the object)
1754  * METHOD is the method name
1755  * OFFSET is the offset within the value contents
1756  * NUM_FNS is the number of overloaded instances
1757  * BASETYPE is set to the type of the base subobject that defines the method
1758  * BOFFSET is the offset of the base subobject which defines the method */
1759
1760 struct fn_field *
1761 value_find_oload_method_list (struct value **argp, char *method, int offset,
1762                               int *num_fns, struct type **basetype,
1763                               int *boffset)
1764 {
1765   struct type *t;
1766
1767   t = check_typedef (value_type (*argp));
1768
1769   /* code snarfed from value_struct_elt */
1770   while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
1771     {
1772       *argp = value_ind (*argp);
1773       /* Don't coerce fn pointer to fn and then back again!  */
1774       if (TYPE_CODE (value_type (*argp)) != TYPE_CODE_FUNC)
1775         *argp = coerce_array (*argp);
1776       t = check_typedef (value_type (*argp));
1777     }
1778
1779   if (TYPE_CODE (t) != TYPE_CODE_STRUCT
1780       && TYPE_CODE (t) != TYPE_CODE_UNION)
1781     error (_("Attempt to extract a component of a value that is not a struct or union"));
1782
1783   return find_method_list (argp, method, 0, t, num_fns, basetype, boffset);
1784 }
1785
1786 /* Given an array of argument types (ARGTYPES) (which includes an
1787    entry for "this" in the case of C++ methods), the number of
1788    arguments NARGS, the NAME of a function whether it's a method or
1789    not (METHOD), and the degree of laxness (LAX) in conforming to
1790    overload resolution rules in ANSI C++, find the best function that
1791    matches on the argument types according to the overload resolution
1792    rules.
1793
1794    In the case of class methods, the parameter OBJ is an object value
1795    in which to search for overloaded methods.
1796
1797    In the case of non-method functions, the parameter FSYM is a symbol
1798    corresponding to one of the overloaded functions.
1799
1800    Return value is an integer: 0 -> good match, 10 -> debugger applied
1801    non-standard coercions, 100 -> incompatible.
1802
1803    If a method is being searched for, VALP will hold the value.
1804    If a non-method is being searched for, SYMP will hold the symbol for it.
1805
1806    If a method is being searched for, and it is a static method,
1807    then STATICP will point to a non-zero value.
1808
1809    Note: This function does *not* check the value of
1810    overload_resolution.  Caller must check it to see whether overload
1811    resolution is permitted.
1812  */
1813
1814 int
1815 find_overload_match (struct type **arg_types, int nargs, char *name, int method,
1816                      int lax, struct value **objp, struct symbol *fsym,
1817                      struct value **valp, struct symbol **symp, int *staticp)
1818 {
1819   struct value *obj = (objp ? *objp : NULL);
1820
1821   int oload_champ;              /* Index of best overloaded function */
1822
1823   struct badness_vector *oload_champ_bv = NULL;         /* The measure for the current best match */
1824
1825   struct value *temp = obj;
1826   struct fn_field *fns_ptr = NULL;      /* For methods, the list of overloaded methods */
1827   struct symbol **oload_syms = NULL;    /* For non-methods, the list of overloaded function symbols */
1828   int num_fns = 0;              /* Number of overloaded instances being considered */
1829   struct type *basetype = NULL;
1830   int boffset;
1831   int ix;
1832   int static_offset;
1833   struct cleanup *old_cleanups = NULL;
1834
1835   const char *obj_type_name = NULL;
1836   char *func_name = NULL;
1837   enum oload_classification match_quality;
1838
1839   /* Get the list of overloaded methods or functions */
1840   if (method)
1841     {
1842       obj_type_name = TYPE_NAME (value_type (obj));
1843       /* Hack: evaluate_subexp_standard often passes in a pointer
1844          value rather than the object itself, so try again */
1845       if ((!obj_type_name || !*obj_type_name) &&
1846           (TYPE_CODE (value_type (obj)) == TYPE_CODE_PTR))
1847         obj_type_name = TYPE_NAME (TYPE_TARGET_TYPE (value_type (obj)));
1848
1849       fns_ptr = value_find_oload_method_list (&temp, name, 0,
1850                                               &num_fns,
1851                                               &basetype, &boffset);
1852       if (!fns_ptr || !num_fns)
1853         error (_("Couldn't find method %s%s%s"),
1854                obj_type_name,
1855                (obj_type_name && *obj_type_name) ? "::" : "",
1856                name);
1857       /* If we are dealing with stub method types, they should have
1858          been resolved by find_method_list via value_find_oload_method_list
1859          above.  */
1860       gdb_assert (TYPE_DOMAIN_TYPE (fns_ptr[0].type) != NULL);
1861       oload_champ = find_oload_champ (arg_types, nargs, method, num_fns,
1862                                       fns_ptr, oload_syms, &oload_champ_bv);
1863     }
1864   else
1865     {
1866       const char *qualified_name = SYMBOL_CPLUS_DEMANGLED_NAME (fsym);
1867
1868       /* If we have a C++ name, try to extract just the function
1869          part.  */
1870       if (qualified_name)
1871         func_name = cp_func_name (qualified_name);
1872
1873       /* If there was no C++ name, this must be a C-style function.
1874          Just return the same symbol.  Do the same if cp_func_name
1875          fails for some reason.  */
1876       if (func_name == NULL)
1877         {
1878           *symp = fsym;
1879           return 0;
1880         }
1881
1882       old_cleanups = make_cleanup (xfree, func_name);
1883       make_cleanup (xfree, oload_syms);
1884       make_cleanup (xfree, oload_champ_bv);
1885
1886       oload_champ = find_oload_champ_namespace (arg_types, nargs,
1887                                                 func_name,
1888                                                 qualified_name,
1889                                                 &oload_syms,
1890                                                 &oload_champ_bv);
1891     }
1892
1893   /* Check how bad the best match is.  */
1894
1895   match_quality
1896     = classify_oload_match (oload_champ_bv, nargs,
1897                             oload_method_static (method, fns_ptr,
1898                                                  oload_champ));
1899
1900   if (match_quality == INCOMPATIBLE)
1901     {
1902       if (method)
1903         error (_("Cannot resolve method %s%s%s to any overloaded instance"),
1904                obj_type_name,
1905                (obj_type_name && *obj_type_name) ? "::" : "",
1906                name);
1907       else
1908         error (_("Cannot resolve function %s to any overloaded instance"),
1909                func_name);
1910     }
1911   else if (match_quality == NON_STANDARD)
1912     {
1913       if (method)
1914         warning (_("Using non-standard conversion to match method %s%s%s to supplied arguments"),
1915                  obj_type_name,
1916                  (obj_type_name && *obj_type_name) ? "::" : "",
1917                  name);
1918       else
1919         warning (_("Using non-standard conversion to match function %s to supplied arguments"),
1920                  func_name);
1921     }
1922
1923   if (method)
1924     {
1925       if (staticp != NULL)
1926         *staticp = oload_method_static (method, fns_ptr, oload_champ);
1927       if (TYPE_FN_FIELD_VIRTUAL_P (fns_ptr, oload_champ))
1928         *valp = value_virtual_fn_field (&temp, fns_ptr, oload_champ, basetype, boffset);
1929       else
1930         *valp = value_fn_field (&temp, fns_ptr, oload_champ, basetype, boffset);
1931     }
1932   else
1933     {
1934       *symp = oload_syms[oload_champ];
1935     }
1936
1937   if (objp)
1938     {
1939       if (TYPE_CODE (value_type (temp)) != TYPE_CODE_PTR
1940           && TYPE_CODE (value_type (*objp)) == TYPE_CODE_PTR)
1941         {
1942           temp = value_addr (temp);
1943         }
1944       *objp = temp;
1945     }
1946   if (old_cleanups != NULL)
1947     do_cleanups (old_cleanups);
1948
1949   switch (match_quality)
1950     {
1951     case INCOMPATIBLE:
1952       return 100;
1953     case NON_STANDARD:
1954       return 10;
1955     default:                            /* STANDARD */
1956       return 0;
1957     }
1958 }
1959
1960 /* Find the best overload match, searching for FUNC_NAME in namespaces
1961    contained in QUALIFIED_NAME until it either finds a good match or
1962    runs out of namespaces.  It stores the overloaded functions in
1963    *OLOAD_SYMS, and the badness vector in *OLOAD_CHAMP_BV.  The
1964    calling function is responsible for freeing *OLOAD_SYMS and
1965    *OLOAD_CHAMP_BV.  */
1966
1967 static int
1968 find_oload_champ_namespace (struct type **arg_types, int nargs,
1969                             const char *func_name,
1970                             const char *qualified_name,
1971                             struct symbol ***oload_syms,
1972                             struct badness_vector **oload_champ_bv)
1973 {
1974   int oload_champ;
1975
1976   find_oload_champ_namespace_loop (arg_types, nargs,
1977                                    func_name,
1978                                    qualified_name, 0,
1979                                    oload_syms, oload_champ_bv,
1980                                    &oload_champ);
1981
1982   return oload_champ;
1983 }
1984
1985 /* Helper function for find_oload_champ_namespace; NAMESPACE_LEN is
1986    how deep we've looked for namespaces, and the champ is stored in
1987    OLOAD_CHAMP.  The return value is 1 if the champ is a good one, 0
1988    if it isn't.
1989
1990    It is the caller's responsibility to free *OLOAD_SYMS and
1991    *OLOAD_CHAMP_BV.  */
1992
1993 static int
1994 find_oload_champ_namespace_loop (struct type **arg_types, int nargs,
1995                                  const char *func_name,
1996                                  const char *qualified_name,
1997                                  int namespace_len,
1998                                  struct symbol ***oload_syms,
1999                                  struct badness_vector **oload_champ_bv,
2000                                  int *oload_champ)
2001 {
2002   int next_namespace_len = namespace_len;
2003   int searched_deeper = 0;
2004   int num_fns = 0;
2005   struct cleanup *old_cleanups;
2006   int new_oload_champ;
2007   struct symbol **new_oload_syms;
2008   struct badness_vector *new_oload_champ_bv;
2009   char *new_namespace;
2010
2011   if (next_namespace_len != 0)
2012     {
2013       gdb_assert (qualified_name[next_namespace_len] == ':');
2014       next_namespace_len +=  2;
2015     }
2016   next_namespace_len
2017     += cp_find_first_component (qualified_name + next_namespace_len);
2018
2019   /* Initialize these to values that can safely be xfree'd.  */
2020   *oload_syms = NULL;
2021   *oload_champ_bv = NULL;
2022
2023   /* First, see if we have a deeper namespace we can search in.  If we
2024      get a good match there, use it.  */
2025
2026   if (qualified_name[next_namespace_len] == ':')
2027     {
2028       searched_deeper = 1;
2029
2030       if (find_oload_champ_namespace_loop (arg_types, nargs,
2031                                            func_name, qualified_name,
2032                                            next_namespace_len,
2033                                            oload_syms, oload_champ_bv,
2034                                            oload_champ))
2035         {
2036           return 1;
2037         }
2038     };
2039
2040   /* If we reach here, either we're in the deepest namespace or we
2041      didn't find a good match in a deeper namespace.  But, in the
2042      latter case, we still have a bad match in a deeper namespace;
2043      note that we might not find any match at all in the current
2044      namespace.  (There's always a match in the deepest namespace,
2045      because this overload mechanism only gets called if there's a
2046      function symbol to start off with.)  */
2047
2048   old_cleanups = make_cleanup (xfree, *oload_syms);
2049   old_cleanups = make_cleanup (xfree, *oload_champ_bv);
2050   new_namespace = alloca (namespace_len + 1);
2051   strncpy (new_namespace, qualified_name, namespace_len);
2052   new_namespace[namespace_len] = '\0';
2053   new_oload_syms = make_symbol_overload_list (func_name,
2054                                               new_namespace);
2055   while (new_oload_syms[num_fns])
2056     ++num_fns;
2057
2058   new_oload_champ = find_oload_champ (arg_types, nargs, 0, num_fns,
2059                                       NULL, new_oload_syms,
2060                                       &new_oload_champ_bv);
2061
2062   /* Case 1: We found a good match.  Free earlier matches (if any),
2063      and return it.  Case 2: We didn't find a good match, but we're
2064      not the deepest function.  Then go with the bad match that the
2065      deeper function found.  Case 3: We found a bad match, and we're
2066      the deepest function.  Then return what we found, even though
2067      it's a bad match.  */
2068
2069   if (new_oload_champ != -1
2070       && classify_oload_match (new_oload_champ_bv, nargs, 0) == STANDARD)
2071     {
2072       *oload_syms = new_oload_syms;
2073       *oload_champ = new_oload_champ;
2074       *oload_champ_bv = new_oload_champ_bv;
2075       do_cleanups (old_cleanups);
2076       return 1;
2077     }
2078   else if (searched_deeper)
2079     {
2080       xfree (new_oload_syms);
2081       xfree (new_oload_champ_bv);
2082       discard_cleanups (old_cleanups);
2083       return 0;
2084     }
2085   else
2086     {
2087       gdb_assert (new_oload_champ != -1);
2088       *oload_syms = new_oload_syms;
2089       *oload_champ = new_oload_champ;
2090       *oload_champ_bv = new_oload_champ_bv;
2091       discard_cleanups (old_cleanups);
2092       return 0;
2093     }
2094 }
2095
2096 /* Look for a function to take NARGS args of types ARG_TYPES.  Find
2097    the best match from among the overloaded methods or functions
2098    (depending on METHOD) given by FNS_PTR or OLOAD_SYMS, respectively.
2099    The number of methods/functions in the list is given by NUM_FNS.
2100    Return the index of the best match; store an indication of the
2101    quality of the match in OLOAD_CHAMP_BV.
2102
2103    It is the caller's responsibility to free *OLOAD_CHAMP_BV.  */
2104
2105 static int
2106 find_oload_champ (struct type **arg_types, int nargs, int method,
2107                   int num_fns, struct fn_field *fns_ptr,
2108                   struct symbol **oload_syms,
2109                   struct badness_vector **oload_champ_bv)
2110 {
2111   int ix;
2112   struct badness_vector *bv;    /* A measure of how good an overloaded instance is */
2113   int oload_champ = -1;         /* Index of best overloaded function */
2114   int oload_ambiguous = 0;      /* Current ambiguity state for overload resolution */
2115   /* 0 => no ambiguity, 1 => two good funcs, 2 => incomparable funcs */
2116
2117   *oload_champ_bv = NULL;
2118
2119   /* Consider each candidate in turn */
2120   for (ix = 0; ix < num_fns; ix++)
2121     {
2122       int jj;
2123       int static_offset = oload_method_static (method, fns_ptr, ix);
2124       int nparms;
2125       struct type **parm_types;
2126
2127       if (method)
2128         {
2129           nparms = TYPE_NFIELDS (TYPE_FN_FIELD_TYPE (fns_ptr, ix));
2130         }
2131       else
2132         {
2133           /* If it's not a method, this is the proper place */
2134           nparms=TYPE_NFIELDS(SYMBOL_TYPE(oload_syms[ix]));
2135         }
2136
2137       /* Prepare array of parameter types */
2138       parm_types = (struct type **) xmalloc (nparms * (sizeof (struct type *)));
2139       for (jj = 0; jj < nparms; jj++)
2140         parm_types[jj] = (method
2141                           ? (TYPE_FN_FIELD_ARGS (fns_ptr, ix)[jj].type)
2142                           : TYPE_FIELD_TYPE (SYMBOL_TYPE (oload_syms[ix]), jj));
2143
2144       /* Compare parameter types to supplied argument types.  Skip THIS for
2145          static methods.  */
2146       bv = rank_function (parm_types, nparms, arg_types + static_offset,
2147                           nargs - static_offset);
2148
2149       if (!*oload_champ_bv)
2150         {
2151           *oload_champ_bv = bv;
2152           oload_champ = 0;
2153         }
2154       else
2155         /* See whether current candidate is better or worse than previous best */
2156         switch (compare_badness (bv, *oload_champ_bv))
2157           {
2158           case 0:
2159             oload_ambiguous = 1;        /* top two contenders are equally good */
2160             break;
2161           case 1:
2162             oload_ambiguous = 2;        /* incomparable top contenders */
2163             break;
2164           case 2:
2165             *oload_champ_bv = bv;       /* new champion, record details */
2166             oload_ambiguous = 0;
2167             oload_champ = ix;
2168             break;
2169           case 3:
2170           default:
2171             break;
2172           }
2173       xfree (parm_types);
2174       if (overload_debug)
2175         {
2176           if (method)
2177             fprintf_filtered (gdb_stderr,"Overloaded method instance %s, # of parms %d\n", fns_ptr[ix].physname, nparms);
2178           else
2179             fprintf_filtered (gdb_stderr,"Overloaded function instance %s # of parms %d\n", SYMBOL_DEMANGLED_NAME (oload_syms[ix]), nparms);
2180           for (jj = 0; jj < nargs - static_offset; jj++)
2181             fprintf_filtered (gdb_stderr,"...Badness @ %d : %d\n", jj, bv->rank[jj]);
2182           fprintf_filtered (gdb_stderr,"Overload resolution champion is %d, ambiguous? %d\n", oload_champ, oload_ambiguous);
2183         }
2184     }
2185
2186   return oload_champ;
2187 }
2188
2189 /* Return 1 if we're looking at a static method, 0 if we're looking at
2190    a non-static method or a function that isn't a method.  */
2191
2192 static int
2193 oload_method_static (int method, struct fn_field *fns_ptr, int index)
2194 {
2195   if (method && TYPE_FN_FIELD_STATIC_P (fns_ptr, index))
2196     return 1;
2197   else
2198     return 0;
2199 }
2200
2201 /* Check how good an overload match OLOAD_CHAMP_BV represents.  */
2202
2203 static enum oload_classification
2204 classify_oload_match (struct badness_vector *oload_champ_bv,
2205                       int nargs,
2206                       int static_offset)
2207 {
2208   int ix;
2209
2210   for (ix = 1; ix <= nargs - static_offset; ix++)
2211     {
2212       if (oload_champ_bv->rank[ix] >= 100)
2213         return INCOMPATIBLE;    /* truly mismatched types */
2214       else if (oload_champ_bv->rank[ix] >= 10)
2215         return NON_STANDARD;    /* non-standard type conversions needed */
2216     }
2217
2218   return STANDARD;              /* Only standard conversions needed.  */
2219 }
2220
2221 /* C++: return 1 is NAME is a legitimate name for the destructor
2222    of type TYPE.  If TYPE does not have a destructor, or
2223    if NAME is inappropriate for TYPE, an error is signaled.  */
2224 int
2225 destructor_name_p (const char *name, const struct type *type)
2226 {
2227   /* destructors are a special case.  */
2228
2229   if (name[0] == '~')
2230     {
2231       char *dname = type_name_no_tag (type);
2232       char *cp = strchr (dname, '<');
2233       unsigned int len;
2234
2235       /* Do not compare the template part for template classes.  */
2236       if (cp == NULL)
2237         len = strlen (dname);
2238       else
2239         len = cp - dname;
2240       if (strlen (name + 1) != len || strncmp (dname, name + 1, len) != 0)
2241         error (_("name of destructor must equal name of class"));
2242       else
2243         return 1;
2244     }
2245   return 0;
2246 }
2247
2248 /* Helper function for check_field: Given TYPE, a structure/union,
2249    return 1 if the component named NAME from the ultimate
2250    target structure/union is defined, otherwise, return 0. */
2251
2252 static int
2253 check_field_in (struct type *type, const char *name)
2254 {
2255   int i;
2256
2257   for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
2258     {
2259       char *t_field_name = TYPE_FIELD_NAME (type, i);
2260       if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
2261         return 1;
2262     }
2263
2264   /* C++: If it was not found as a data field, then try to
2265      return it as a pointer to a method.  */
2266
2267   /* Destructors are a special case.  */
2268   if (destructor_name_p (name, type))
2269     {
2270       int m_index, f_index;
2271
2272       return get_destructor_fn_field (type, &m_index, &f_index);
2273     }
2274
2275   for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; --i)
2276     {
2277       if (strcmp_iw (TYPE_FN_FIELDLIST_NAME (type, i), name) == 0)
2278         return 1;
2279     }
2280
2281   for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
2282     if (check_field_in (TYPE_BASECLASS (type, i), name))
2283       return 1;
2284
2285   return 0;
2286 }
2287
2288
2289 /* C++: Given ARG1, a value of type (pointer to a)* structure/union,
2290    return 1 if the component named NAME from the ultimate
2291    target structure/union is defined, otherwise, return 0.  */
2292
2293 int
2294 check_field (struct value *arg1, const char *name)
2295 {
2296   struct type *t;
2297
2298   arg1 = coerce_array (arg1);
2299
2300   t = value_type (arg1);
2301
2302   /* Follow pointers until we get to a non-pointer.  */
2303
2304   for (;;)
2305     {
2306       CHECK_TYPEDEF (t);
2307       if (TYPE_CODE (t) != TYPE_CODE_PTR && TYPE_CODE (t) != TYPE_CODE_REF)
2308         break;
2309       t = TYPE_TARGET_TYPE (t);
2310     }
2311
2312   if (TYPE_CODE (t) != TYPE_CODE_STRUCT
2313       && TYPE_CODE (t) != TYPE_CODE_UNION)
2314     error (_("Internal error: `this' is not an aggregate"));
2315
2316   return check_field_in (t, name);
2317 }
2318
2319 /* C++: Given an aggregate type CURTYPE, and a member name NAME,
2320    return the appropriate member (or the address of the member, if
2321    WANT_ADDRESS).  This function is used to resolve user expressions
2322    of the form "DOMAIN::NAME".  For more details on what happens, see
2323    the comment before value_struct_elt_for_reference.  */
2324
2325 struct value *
2326 value_aggregate_elt (struct type *curtype,
2327                      char *name, int want_address,
2328                      enum noside noside)
2329 {
2330   switch (TYPE_CODE (curtype))
2331     {
2332     case TYPE_CODE_STRUCT:
2333     case TYPE_CODE_UNION:
2334       return value_struct_elt_for_reference (curtype, 0, curtype, name, NULL,
2335                                              want_address, noside);
2336     case TYPE_CODE_NAMESPACE:
2337       return value_namespace_elt (curtype, name, want_address, noside);
2338     default:
2339       internal_error (__FILE__, __LINE__,
2340                       _("non-aggregate type in value_aggregate_elt"));
2341     }
2342 }
2343
2344 /* C++: Given an aggregate type CURTYPE, and a member name NAME,
2345    return the address of this member as a "pointer to member"
2346    type.  If INTYPE is non-null, then it will be the type
2347    of the member we are looking for.  This will help us resolve
2348    "pointers to member functions".  This function is used
2349    to resolve user expressions of the form "DOMAIN::NAME".  */
2350
2351 static struct value *
2352 value_struct_elt_for_reference (struct type *domain, int offset,
2353                                 struct type *curtype, char *name,
2354                                 struct type *intype, int want_address,
2355                                 enum noside noside)
2356 {
2357   struct type *t = curtype;
2358   int i;
2359   struct value *v, *result;
2360
2361   if (TYPE_CODE (t) != TYPE_CODE_STRUCT
2362       && TYPE_CODE (t) != TYPE_CODE_UNION)
2363     error (_("Internal error: non-aggregate type to value_struct_elt_for_reference"));
2364
2365   for (i = TYPE_NFIELDS (t) - 1; i >= TYPE_N_BASECLASSES (t); i--)
2366     {
2367       char *t_field_name = TYPE_FIELD_NAME (t, i);
2368
2369       if (t_field_name && strcmp (t_field_name, name) == 0)
2370         {
2371           if (TYPE_FIELD_STATIC (t, i))
2372             {
2373               v = value_static_field (t, i);
2374               if (v == NULL)
2375                 error (_("static field %s has been optimized out"),
2376                        name);
2377               if (want_address)
2378                 v = value_addr (v);
2379               return v;
2380             }
2381           if (TYPE_FIELD_PACKED (t, i))
2382             error (_("pointers to bitfield members not allowed"));
2383
2384           if (want_address)
2385             return value_from_longest
2386               (lookup_memberptr_type (TYPE_FIELD_TYPE (t, i), domain),
2387                offset + (LONGEST) (TYPE_FIELD_BITPOS (t, i) >> 3));
2388           else if (noside == EVAL_AVOID_SIDE_EFFECTS)
2389             return allocate_value (TYPE_FIELD_TYPE (t, i));
2390           else
2391             error (_("Cannot reference non-static field \"%s\""), name);
2392         }
2393     }
2394
2395   /* C++: If it was not found as a data field, then try to
2396      return it as a pointer to a method.  */
2397
2398   /* Destructors are a special case.  */
2399   if (destructor_name_p (name, t))
2400     {
2401       error (_("member pointers to destructors not implemented yet"));
2402     }
2403
2404   /* Perform all necessary dereferencing.  */
2405   while (intype && TYPE_CODE (intype) == TYPE_CODE_PTR)
2406     intype = TYPE_TARGET_TYPE (intype);
2407
2408   for (i = TYPE_NFN_FIELDS (t) - 1; i >= 0; --i)
2409     {
2410       char *t_field_name = TYPE_FN_FIELDLIST_NAME (t, i);
2411       char dem_opname[64];
2412
2413       if (strncmp (t_field_name, "__", 2) == 0 ||
2414           strncmp (t_field_name, "op", 2) == 0 ||
2415           strncmp (t_field_name, "type", 4) == 0)
2416         {
2417           if (cplus_demangle_opname (t_field_name, dem_opname, DMGL_ANSI))
2418             t_field_name = dem_opname;
2419           else if (cplus_demangle_opname (t_field_name, dem_opname, 0))
2420             t_field_name = dem_opname;
2421         }
2422       if (t_field_name && strcmp (t_field_name, name) == 0)
2423         {
2424           int j = TYPE_FN_FIELDLIST_LENGTH (t, i);
2425           struct fn_field *f = TYPE_FN_FIELDLIST1 (t, i);
2426
2427           check_stub_method_group (t, i);
2428
2429           if (intype == 0 && j > 1)
2430             error (_("non-unique member `%s' requires type instantiation"), name);
2431           if (intype)
2432             {
2433               while (j--)
2434                 if (TYPE_FN_FIELD_TYPE (f, j) == intype)
2435                   break;
2436               if (j < 0)
2437                 error (_("no member function matches that type instantiation"));
2438             }
2439           else
2440             j = 0;
2441
2442           if (TYPE_FN_FIELD_STATIC_P (f, j))
2443             {
2444               struct symbol *s = lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
2445                                                 0, VAR_DOMAIN, 0, NULL);
2446               if (s == NULL)
2447                 return NULL;
2448
2449               if (want_address)
2450                 return value_addr (read_var_value (s, 0));
2451               else
2452                 return read_var_value (s, 0);
2453             }
2454
2455           if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
2456             {
2457               if (want_address)
2458                 {
2459                   result = allocate_value
2460                     (lookup_methodptr_type (TYPE_FN_FIELD_TYPE (f, j)));
2461                   cplus_make_method_ptr (value_contents_writeable (result),
2462                                          TYPE_FN_FIELD_VOFFSET (f, j), 1);
2463                 }
2464               else if (noside == EVAL_AVOID_SIDE_EFFECTS)
2465                 return allocate_value (TYPE_FN_FIELD_TYPE (f, j));
2466               else
2467                 error (_("Cannot reference virtual member function \"%s\""),
2468                        name);
2469             }
2470           else
2471             {
2472               struct symbol *s = lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
2473                                                 0, VAR_DOMAIN, 0, NULL);
2474               if (s == NULL)
2475                 return NULL;
2476
2477               v = read_var_value (s, 0);
2478               if (!want_address)
2479                 result = v;
2480               else
2481                 {
2482                   result = allocate_value (lookup_methodptr_type (TYPE_FN_FIELD_TYPE (f, j)));
2483                   cplus_make_method_ptr (value_contents_writeable (result),
2484                                          VALUE_ADDRESS (v), 0);
2485                 }
2486             }
2487           return result;
2488         }
2489     }
2490   for (i = TYPE_N_BASECLASSES (t) - 1; i >= 0; i--)
2491     {
2492       struct value *v;
2493       int base_offset;
2494
2495       if (BASETYPE_VIA_VIRTUAL (t, i))
2496         base_offset = 0;
2497       else
2498         base_offset = TYPE_BASECLASS_BITPOS (t, i) / 8;
2499       v = value_struct_elt_for_reference (domain,
2500                                           offset + base_offset,
2501                                           TYPE_BASECLASS (t, i),
2502                                           name,
2503                                           intype, want_address,
2504                                           noside);
2505       if (v)
2506         return v;
2507     }
2508
2509   /* As a last chance, pretend that CURTYPE is a namespace, and look
2510      it up that way; this (frequently) works for types nested inside
2511      classes.  */
2512
2513   return value_maybe_namespace_elt (curtype, name, want_address, noside);
2514 }
2515
2516 /* C++: Return the member NAME of the namespace given by the type
2517    CURTYPE.  */
2518
2519 static struct value *
2520 value_namespace_elt (const struct type *curtype,
2521                      char *name, int want_address,
2522                      enum noside noside)
2523 {
2524   struct value *retval = value_maybe_namespace_elt (curtype, name,
2525                                                     want_address, noside);
2526
2527   if (retval == NULL)
2528     error (_("No symbol \"%s\" in namespace \"%s\"."), name,
2529            TYPE_TAG_NAME (curtype));
2530
2531   return retval;
2532 }
2533
2534 /* A helper function used by value_namespace_elt and
2535    value_struct_elt_for_reference.  It looks up NAME inside the
2536    context CURTYPE; this works if CURTYPE is a namespace or if CURTYPE
2537    is a class and NAME refers to a type in CURTYPE itself (as opposed
2538    to, say, some base class of CURTYPE).  */
2539
2540 static struct value *
2541 value_maybe_namespace_elt (const struct type *curtype,
2542                            char *name, int want_address,
2543                            enum noside noside)
2544 {
2545   const char *namespace_name = TYPE_TAG_NAME (curtype);
2546   struct symbol *sym;
2547   struct value *result;
2548
2549   sym = cp_lookup_symbol_namespace (namespace_name, name, NULL,
2550                                     get_selected_block (0), VAR_DOMAIN,
2551                                     NULL);
2552
2553   if (sym == NULL)
2554     return NULL;
2555   else if ((noside == EVAL_AVOID_SIDE_EFFECTS)
2556            && (SYMBOL_CLASS (sym) == LOC_TYPEDEF))
2557     result = allocate_value (SYMBOL_TYPE (sym));
2558   else
2559     result = value_of_variable (sym, get_selected_block (0));
2560
2561   if (result && want_address)
2562     result = value_addr (result);
2563
2564   return result;
2565 }
2566
2567 /* Given a pointer value V, find the real (RTTI) type
2568    of the object it points to.
2569    Other parameters FULL, TOP, USING_ENC as with value_rtti_type()
2570    and refer to the values computed for the object pointed to. */
2571
2572 struct type *
2573 value_rtti_target_type (struct value *v, int *full, int *top, int *using_enc)
2574 {
2575   struct value *target;
2576
2577   target = value_ind (v);
2578
2579   return value_rtti_type (target, full, top, using_enc);
2580 }
2581
2582 /* Given a value pointed to by ARGP, check its real run-time type, and
2583    if that is different from the enclosing type, create a new value
2584    using the real run-time type as the enclosing type (and of the same
2585    type as ARGP) and return it, with the embedded offset adjusted to
2586    be the correct offset to the enclosed object
2587    RTYPE is the type, and XFULL, XTOP, and XUSING_ENC are the other
2588    parameters, computed by value_rtti_type(). If these are available,
2589    they can be supplied and a second call to value_rtti_type() is avoided.
2590    (Pass RTYPE == NULL if they're not available */
2591
2592 struct value *
2593 value_full_object (struct value *argp, struct type *rtype, int xfull, int xtop,
2594                    int xusing_enc)
2595 {
2596   struct type *real_type;
2597   int full = 0;
2598   int top = -1;
2599   int using_enc = 0;
2600   struct value *new_val;
2601
2602   if (rtype)
2603     {
2604       real_type = rtype;
2605       full = xfull;
2606       top = xtop;
2607       using_enc = xusing_enc;
2608     }
2609   else
2610     real_type = value_rtti_type (argp, &full, &top, &using_enc);
2611
2612   /* If no RTTI data, or if object is already complete, do nothing */
2613   if (!real_type || real_type == value_enclosing_type (argp))
2614     return argp;
2615
2616   /* If we have the full object, but for some reason the enclosing
2617      type is wrong, set it *//* pai: FIXME -- sounds iffy */
2618   if (full)
2619     {
2620       argp = value_change_enclosing_type (argp, real_type);
2621       return argp;
2622     }
2623
2624   /* Check if object is in memory */
2625   if (VALUE_LVAL (argp) != lval_memory)
2626     {
2627       warning (_("Couldn't retrieve complete object of RTTI type %s; object may be in register(s)."), TYPE_NAME (real_type));
2628
2629       return argp;
2630     }
2631
2632   /* All other cases -- retrieve the complete object */
2633   /* Go back by the computed top_offset from the beginning of the object,
2634      adjusting for the embedded offset of argp if that's what value_rtti_type
2635      used for its computation. */
2636   new_val = value_at_lazy (real_type, VALUE_ADDRESS (argp) - top +
2637                            (using_enc ? 0 : value_embedded_offset (argp)));
2638   deprecated_set_value_type (new_val, value_type (argp));
2639   set_value_embedded_offset (new_val, (using_enc
2640                                        ? top + value_embedded_offset (argp)
2641                                        : top));
2642   return new_val;
2643 }
2644
2645
2646
2647
2648 /* Return the value of the local variable, if one exists.
2649    Flag COMPLAIN signals an error if the request is made in an
2650    inappropriate context.  */
2651
2652 struct value *
2653 value_of_local (const char *name, int complain)
2654 {
2655   struct symbol *func, *sym;
2656   struct block *b;
2657   struct value * ret;
2658   struct frame_info *frame;
2659
2660   if (complain)
2661     frame = get_selected_frame (_("no frame selected"));
2662   else
2663     {
2664       frame = deprecated_safe_get_selected_frame ();
2665       if (frame == 0)
2666         return 0;
2667     }
2668
2669   func = get_frame_function (frame);
2670   if (!func)
2671     {
2672       if (complain)
2673         error (_("no `%s' in nameless context"), name);
2674       else
2675         return 0;
2676     }
2677
2678   b = SYMBOL_BLOCK_VALUE (func);
2679   if (dict_empty (BLOCK_DICT (b)))
2680     {
2681       if (complain)
2682         error (_("no args, no `%s'"), name);
2683       else
2684         return 0;
2685     }
2686
2687   /* Calling lookup_block_symbol is necessary to get the LOC_REGISTER
2688      symbol instead of the LOC_ARG one (if both exist).  */
2689   sym = lookup_block_symbol (b, name, NULL, VAR_DOMAIN);
2690   if (sym == NULL)
2691     {
2692       if (complain)
2693         error (_("current stack frame does not contain a variable named `%s'"), name);
2694       else
2695         return NULL;
2696     }
2697
2698   ret = read_var_value (sym, frame);
2699   if (ret == 0 && complain)
2700     error (_("`%s' argument unreadable"), name);
2701   return ret;
2702 }
2703
2704 /* C++/Objective-C: return the value of the class instance variable,
2705    if one exists.  Flag COMPLAIN signals an error if the request is
2706    made in an inappropriate context.  */
2707
2708 struct value *
2709 value_of_this (int complain)
2710 {
2711   if (current_language->la_language == language_objc)
2712     return value_of_local ("self", complain);
2713   else
2714     return value_of_local ("this", complain);
2715 }
2716
2717 /* Create a slice (sub-string, sub-array) of ARRAY, that is LENGTH elements
2718    long, starting at LOWBOUND.  The result has the same lower bound as
2719    the original ARRAY.  */
2720
2721 struct value *
2722 value_slice (struct value *array, int lowbound, int length)
2723 {
2724   struct type *slice_range_type, *slice_type, *range_type;
2725   LONGEST lowerbound, upperbound;
2726   struct value *slice;
2727   struct type *array_type;
2728   array_type = check_typedef (value_type (array));
2729   if (TYPE_CODE (array_type) != TYPE_CODE_ARRAY
2730       && TYPE_CODE (array_type) != TYPE_CODE_STRING
2731       && TYPE_CODE (array_type) != TYPE_CODE_BITSTRING)
2732     error (_("cannot take slice of non-array"));
2733   range_type = TYPE_INDEX_TYPE (array_type);
2734   if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
2735     error (_("slice from bad array or bitstring"));
2736   if (lowbound < lowerbound || length < 0
2737       || lowbound + length - 1 > upperbound)
2738     error (_("slice out of range"));
2739   /* FIXME-type-allocation: need a way to free this type when we are
2740      done with it.  */
2741   slice_range_type = create_range_type ((struct type *) NULL,
2742                                         TYPE_TARGET_TYPE (range_type),
2743                                         lowbound, lowbound + length - 1);
2744   if (TYPE_CODE (array_type) == TYPE_CODE_BITSTRING)
2745     {
2746       int i;
2747       slice_type = create_set_type ((struct type *) NULL, slice_range_type);
2748       TYPE_CODE (slice_type) = TYPE_CODE_BITSTRING;
2749       slice = value_zero (slice_type, not_lval);
2750       for (i = 0; i < length; i++)
2751         {
2752           int element = value_bit_index (array_type,
2753                                          value_contents (array),
2754                                          lowbound + i);
2755           if (element < 0)
2756             error (_("internal error accessing bitstring"));
2757           else if (element > 0)
2758             {
2759               int j = i % TARGET_CHAR_BIT;
2760               if (BITS_BIG_ENDIAN)
2761                 j = TARGET_CHAR_BIT - 1 - j;
2762               value_contents_raw (slice)[i / TARGET_CHAR_BIT] |= (1 << j);
2763             }
2764         }
2765       /* We should set the address, bitssize, and bitspos, so the clice
2766          can be used on the LHS, but that may require extensions to
2767          value_assign.  For now, just leave as a non_lval.  FIXME.  */
2768     }
2769   else
2770     {
2771       struct type *element_type = TYPE_TARGET_TYPE (array_type);
2772       LONGEST offset
2773         = (lowbound - lowerbound) * TYPE_LENGTH (check_typedef (element_type));
2774       slice_type = create_array_type ((struct type *) NULL, element_type,
2775                                       slice_range_type);
2776       TYPE_CODE (slice_type) = TYPE_CODE (array_type);
2777       slice = allocate_value (slice_type);
2778       if (value_lazy (array))
2779         set_value_lazy (slice, 1);
2780       else
2781         memcpy (value_contents_writeable (slice),
2782                 value_contents (array) + offset,
2783                 TYPE_LENGTH (slice_type));
2784       if (VALUE_LVAL (array) == lval_internalvar)
2785         VALUE_LVAL (slice) = lval_internalvar_component;
2786       else
2787         VALUE_LVAL (slice) = VALUE_LVAL (array);
2788       VALUE_ADDRESS (slice) = VALUE_ADDRESS (array);
2789       VALUE_FRAME_ID (slice) = VALUE_FRAME_ID (array);
2790       set_value_offset (slice, value_offset (array) + offset);
2791     }
2792   return slice;
2793 }
2794
2795 /* Create a value for a FORTRAN complex number.  Currently most of
2796    the time values are coerced to COMPLEX*16 (i.e. a complex number
2797    composed of 2 doubles.  This really should be a smarter routine
2798    that figures out precision inteligently as opposed to assuming
2799    doubles. FIXME: fmb */
2800
2801 struct value *
2802 value_literal_complex (struct value *arg1, struct value *arg2, struct type *type)
2803 {
2804   struct value *val;
2805   struct type *real_type = TYPE_TARGET_TYPE (type);
2806
2807   val = allocate_value (type);
2808   arg1 = value_cast (real_type, arg1);
2809   arg2 = value_cast (real_type, arg2);
2810
2811   memcpy (value_contents_raw (val),
2812           value_contents (arg1), TYPE_LENGTH (real_type));
2813   memcpy (value_contents_raw (val) + TYPE_LENGTH (real_type),
2814           value_contents (arg2), TYPE_LENGTH (real_type));
2815   return val;
2816 }
2817
2818 /* Cast a value into the appropriate complex data type. */
2819
2820 static struct value *
2821 cast_into_complex (struct type *type, struct value *val)
2822 {
2823   struct type *real_type = TYPE_TARGET_TYPE (type);
2824   if (TYPE_CODE (value_type (val)) == TYPE_CODE_COMPLEX)
2825     {
2826       struct type *val_real_type = TYPE_TARGET_TYPE (value_type (val));
2827       struct value *re_val = allocate_value (val_real_type);
2828       struct value *im_val = allocate_value (val_real_type);
2829
2830       memcpy (value_contents_raw (re_val),
2831               value_contents (val), TYPE_LENGTH (val_real_type));
2832       memcpy (value_contents_raw (im_val),
2833               value_contents (val) + TYPE_LENGTH (val_real_type),
2834               TYPE_LENGTH (val_real_type));
2835
2836       return value_literal_complex (re_val, im_val, type);
2837     }
2838   else if (TYPE_CODE (value_type (val)) == TYPE_CODE_FLT
2839            || TYPE_CODE (value_type (val)) == TYPE_CODE_INT)
2840     return value_literal_complex (val, value_zero (real_type, not_lval), type);
2841   else
2842     error (_("cannot cast non-number to complex"));
2843 }
2844
2845 void
2846 _initialize_valops (void)
2847 {
2848   add_setshow_boolean_cmd ("overload-resolution", class_support,
2849                            &overload_resolution, _("\
2850 Set overload resolution in evaluating C++ functions."), _("\
2851 Show overload resolution in evaluating C++ functions."), NULL,
2852                            NULL,
2853                            show_overload_resolution,
2854                            &setlist, &showlist);
2855   overload_resolution = 1;
2856 }