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