OSDN Git Service

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