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