OSDN Git Service

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