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