* gdb-events.sh: Add target-changed event.
[platform/upstream/binutils.git] / gdb / valops.c
1 /* Perform non-arithmetic operations on values, for GDB.
2    Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
3    1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
4    Free Software Foundation, Inc.
5
6    This file is part of GDB.
7
8    This program is free software; you can redistribute it and/or modify
9    it under the terms of the GNU General Public License as published by
10    the Free Software Foundation; either version 2 of the License, or
11    (at your option) any later version.
12
13    This program is distributed in the hope that it will be useful,
14    but WITHOUT ANY WARRANTY; without even the implied warranty of
15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16    GNU General Public License for more details.
17
18    You should have received a copy of the GNU General Public License
19    along with this program; if not, write to the Free Software
20    Foundation, Inc., 59 Temple Place - Suite 330,
21    Boston, MA 02111-1307, USA.  */
22
23 #include "defs.h"
24 #include "symtab.h"
25 #include "gdbtypes.h"
26 #include "value.h"
27 #include "frame.h"
28 #include "inferior.h"
29 #include "gdbcore.h"
30 #include "target.h"
31 #include "demangle.h"
32 #include "language.h"
33 #include "gdbcmd.h"
34 #include "regcache.h"
35 #include "cp-abi.h"
36
37 #include <errno.h>
38 #include "gdb_string.h"
39 #include "gdb_assert.h"
40
41 /* Flag indicating HP compilers were used; needed to correctly handle some
42    value operations with HP aCC code/runtime. */
43 extern int hp_som_som_object_present;
44
45 extern int overload_debug;
46 /* Local functions.  */
47
48 static int typecmp (int staticp, int varargs, int nargs,
49                     struct field t1[], struct value *t2[]);
50
51 static CORE_ADDR find_function_addr (struct value *, struct type **);
52 static struct value *value_arg_coerce (struct value *, struct type *, int);
53
54
55 static CORE_ADDR value_push (CORE_ADDR, struct value *);
56
57 static struct value *search_struct_field (char *, struct value *, int,
58                                       struct type *, int);
59
60 static struct value *search_struct_method (char *, struct value **,
61                                        struct value **,
62                                        int, int *, struct type *);
63
64 static int check_field_in (struct type *, const char *);
65
66 static CORE_ADDR allocate_space_in_inferior (int);
67
68 static struct value *cast_into_complex (struct type *, struct value *);
69
70 static struct fn_field *find_method_list (struct value ** argp, char *method,
71                                           int offset,
72                                           struct type *type, int *num_fns,
73                                           struct type **basetype,
74                                           int *boffset);
75
76 void _initialize_valops (void);
77
78 /* Flag for whether we want to abandon failed expression evals by default.  */
79
80 #if 0
81 static int auto_abandon = 0;
82 #endif
83
84 int overload_resolution = 0;
85
86 /* This boolean tells what gdb should do if a signal is received while in
87    a function called from gdb (call dummy).  If set, gdb unwinds the stack
88    and restore the context to what as it was before the call.
89    The default is to stop in the frame where the signal was received. */
90
91 int unwind_on_signal_p = 0;
92 \f
93
94
95 /* Find the address of function name NAME in the inferior.  */
96
97 struct value *
98 find_function_in_inferior (char *name)
99 {
100   register struct symbol *sym;
101   sym = lookup_symbol (name, 0, VAR_NAMESPACE, 0, NULL);
102   if (sym != NULL)
103     {
104       if (SYMBOL_CLASS (sym) != LOC_BLOCK)
105         {
106           error ("\"%s\" exists in this program but is not a function.",
107                  name);
108         }
109       return value_of_variable (sym, NULL);
110     }
111   else
112     {
113       struct minimal_symbol *msymbol = lookup_minimal_symbol (name, NULL, NULL);
114       if (msymbol != NULL)
115         {
116           struct type *type;
117           CORE_ADDR maddr;
118           type = lookup_pointer_type (builtin_type_char);
119           type = lookup_function_type (type);
120           type = lookup_pointer_type (type);
121           maddr = SYMBOL_VALUE_ADDRESS (msymbol);
122           return value_from_pointer (type, maddr);
123         }
124       else
125         {
126           if (!target_has_execution)
127             error ("evaluation of this expression requires the target program to be active");
128           else
129             error ("evaluation of this expression requires the program to have a function \"%s\".", name);
130         }
131     }
132 }
133
134 /* Allocate NBYTES of space in the inferior using the inferior's malloc
135    and return a value that is a pointer to the allocated space. */
136
137 struct value *
138 value_allocate_space_in_inferior (int len)
139 {
140   struct value *blocklen;
141   struct value *val = find_function_in_inferior ("malloc");
142
143   blocklen = value_from_longest (builtin_type_int, (LONGEST) len);
144   val = call_function_by_hand (val, 1, &blocklen);
145   if (value_logical_not (val))
146     {
147       if (!target_has_execution)
148         error ("No memory available to program now: you need to start the target first");
149       else
150         error ("No memory available to program: call to malloc failed");
151     }
152   return val;
153 }
154
155 static CORE_ADDR
156 allocate_space_in_inferior (int len)
157 {
158   return value_as_long (value_allocate_space_in_inferior (len));
159 }
160
161 /* Cast value ARG2 to type TYPE and return as a value.
162    More general than a C cast: accepts any two types of the same length,
163    and if ARG2 is an lvalue it can be cast into anything at all.  */
164 /* In C++, casts may change pointer or object representations.  */
165
166 struct value *
167 value_cast (struct type *type, struct value *arg2)
168 {
169   register enum type_code code1;
170   register enum type_code code2;
171   register int scalar;
172   struct type *type2;
173
174   int convert_to_boolean = 0;
175
176   if (VALUE_TYPE (arg2) == type)
177     return arg2;
178
179   CHECK_TYPEDEF (type);
180   code1 = TYPE_CODE (type);
181   COERCE_REF (arg2);
182   type2 = check_typedef (VALUE_TYPE (arg2));
183
184   /* A cast to an undetermined-length array_type, such as (TYPE [])OBJECT,
185      is treated like a cast to (TYPE [N])OBJECT,
186      where N is sizeof(OBJECT)/sizeof(TYPE). */
187   if (code1 == TYPE_CODE_ARRAY)
188     {
189       struct type *element_type = TYPE_TARGET_TYPE (type);
190       unsigned element_length = TYPE_LENGTH (check_typedef (element_type));
191       if (element_length > 0
192         && TYPE_ARRAY_UPPER_BOUND_TYPE (type) == BOUND_CANNOT_BE_DETERMINED)
193         {
194           struct type *range_type = TYPE_INDEX_TYPE (type);
195           int val_length = TYPE_LENGTH (type2);
196           LONGEST low_bound, high_bound, new_length;
197           if (get_discrete_bounds (range_type, &low_bound, &high_bound) < 0)
198             low_bound = 0, high_bound = 0;
199           new_length = val_length / element_length;
200           if (val_length % element_length != 0)
201             warning ("array element type size does not divide object size in cast");
202           /* FIXME-type-allocation: need a way to free this type when we are
203              done with it.  */
204           range_type = create_range_type ((struct type *) NULL,
205                                           TYPE_TARGET_TYPE (range_type),
206                                           low_bound,
207                                           new_length + low_bound - 1);
208           VALUE_TYPE (arg2) = create_array_type ((struct type *) NULL,
209                                                  element_type, range_type);
210           return arg2;
211         }
212     }
213
214   if (current_language->c_style_arrays
215       && TYPE_CODE (type2) == TYPE_CODE_ARRAY)
216     arg2 = value_coerce_array (arg2);
217
218   if (TYPE_CODE (type2) == TYPE_CODE_FUNC)
219     arg2 = value_coerce_function (arg2);
220
221   type2 = check_typedef (VALUE_TYPE (arg2));
222   COERCE_VARYING_ARRAY (arg2, type2);
223   code2 = TYPE_CODE (type2);
224
225   if (code1 == TYPE_CODE_COMPLEX)
226     return cast_into_complex (type, arg2);
227   if (code1 == TYPE_CODE_BOOL)
228     {
229       code1 = TYPE_CODE_INT;
230       convert_to_boolean = 1;
231     }
232   if (code1 == TYPE_CODE_CHAR)
233     code1 = TYPE_CODE_INT;
234   if (code2 == TYPE_CODE_BOOL || code2 == TYPE_CODE_CHAR)
235     code2 = TYPE_CODE_INT;
236
237   scalar = (code2 == TYPE_CODE_INT || code2 == TYPE_CODE_FLT
238             || code2 == TYPE_CODE_ENUM || code2 == TYPE_CODE_RANGE);
239
240   if (code1 == TYPE_CODE_STRUCT
241       && code2 == TYPE_CODE_STRUCT
242       && TYPE_NAME (type) != 0)
243     {
244       /* Look in the type of the source to see if it contains the
245          type of the target as a superclass.  If so, we'll need to
246          offset the object in addition to changing its type.  */
247       struct value *v = search_struct_field (type_name_no_tag (type),
248                                          arg2, 0, type2, 1);
249       if (v)
250         {
251           VALUE_TYPE (v) = type;
252           return v;
253         }
254     }
255   if (code1 == TYPE_CODE_FLT && scalar)
256     return value_from_double (type, value_as_double (arg2));
257   else if ((code1 == TYPE_CODE_INT || code1 == TYPE_CODE_ENUM
258             || code1 == TYPE_CODE_RANGE)
259            && (scalar || code2 == TYPE_CODE_PTR))
260     {
261       LONGEST longest;
262
263       if (hp_som_som_object_present &&  /* if target compiled by HP aCC */
264           (code2 == TYPE_CODE_PTR))
265         {
266           unsigned int *ptr;
267           struct value *retvalp;
268
269           switch (TYPE_CODE (TYPE_TARGET_TYPE (type2)))
270             {
271               /* With HP aCC, pointers to data members have a bias */
272             case TYPE_CODE_MEMBER:
273               retvalp = value_from_longest (type, value_as_long (arg2));
274               /* force evaluation */
275               ptr = (unsigned int *) VALUE_CONTENTS (retvalp);
276               *ptr &= ~0x20000000;      /* zap 29th bit to remove bias */
277               return retvalp;
278
279               /* While pointers to methods don't really point to a function */
280             case TYPE_CODE_METHOD:
281               error ("Pointers to methods not supported with HP aCC");
282
283             default:
284               break;            /* fall out and go to normal handling */
285             }
286         }
287
288       /* When we cast pointers to integers, we mustn't use
289          POINTER_TO_ADDRESS to find the address the pointer
290          represents, as value_as_long would.  GDB should evaluate
291          expressions just as the compiler would --- and the compiler
292          sees a cast as a simple reinterpretation of the pointer's
293          bits.  */
294       if (code2 == TYPE_CODE_PTR)
295         longest = extract_unsigned_integer (VALUE_CONTENTS (arg2),
296                                             TYPE_LENGTH (type2));
297       else
298         longest = value_as_long (arg2);
299       return value_from_longest (type, convert_to_boolean ?
300                                  (LONGEST) (longest ? 1 : 0) : longest);
301     }
302   else if (code1 == TYPE_CODE_PTR && (code2 == TYPE_CODE_INT  ||
303                                       code2 == TYPE_CODE_ENUM ||
304                                       code2 == TYPE_CODE_RANGE))
305     {
306       /* TYPE_LENGTH (type) is the length of a pointer, but we really
307          want the length of an address! -- we are really dealing with
308          addresses (i.e., gdb representations) not pointers (i.e.,
309          target representations) here.
310
311          This allows things like "print *(int *)0x01000234" to work
312          without printing a misleading message -- which would
313          otherwise occur when dealing with a target having two byte
314          pointers and four byte addresses.  */
315
316       int addr_bit = TARGET_ADDR_BIT;
317
318       LONGEST longest = value_as_long (arg2);
319       if (addr_bit < sizeof (LONGEST) * HOST_CHAR_BIT)
320         {
321           if (longest >= ((LONGEST) 1 << addr_bit)
322               || longest <= -((LONGEST) 1 << addr_bit))
323             warning ("value truncated");
324         }
325       return value_from_longest (type, longest);
326     }
327   else if (TYPE_LENGTH (type) == TYPE_LENGTH (type2))
328     {
329       if (code1 == TYPE_CODE_PTR && code2 == TYPE_CODE_PTR)
330         {
331           struct type *t1 = check_typedef (TYPE_TARGET_TYPE (type));
332           struct type *t2 = check_typedef (TYPE_TARGET_TYPE (type2));
333           if (TYPE_CODE (t1) == TYPE_CODE_STRUCT
334               && TYPE_CODE (t2) == TYPE_CODE_STRUCT
335               && !value_logical_not (arg2))
336             {
337               struct value *v;
338
339               /* Look in the type of the source to see if it contains the
340                  type of the target as a superclass.  If so, we'll need to
341                  offset the pointer rather than just change its type.  */
342               if (TYPE_NAME (t1) != NULL)
343                 {
344                   v = search_struct_field (type_name_no_tag (t1),
345                                            value_ind (arg2), 0, t2, 1);
346                   if (v)
347                     {
348                       v = value_addr (v);
349                       VALUE_TYPE (v) = type;
350                       return v;
351                     }
352                 }
353
354               /* Look in the type of the target to see if it contains the
355                  type of the source as a superclass.  If so, we'll need to
356                  offset the pointer rather than just change its type.
357                  FIXME: This fails silently with virtual inheritance.  */
358               if (TYPE_NAME (t2) != NULL)
359                 {
360                   v = search_struct_field (type_name_no_tag (t2),
361                                        value_zero (t1, not_lval), 0, t1, 1);
362                   if (v)
363                     {
364                       struct value *v2 = value_ind (arg2);
365                       VALUE_ADDRESS (v2) -= VALUE_ADDRESS (v)
366                         + VALUE_OFFSET (v);
367
368                       /* JYG: adjust the new pointer value and
369                          embedded offset. */
370                       v2->aligner.contents[0] -=  VALUE_EMBEDDED_OFFSET (v);
371                       VALUE_EMBEDDED_OFFSET (v2) = 0;
372
373                       v2 = value_addr (v2);
374                       VALUE_TYPE (v2) = type;
375                       return v2;
376                     }
377                 }
378             }
379           /* No superclass found, just fall through to change ptr type.  */
380         }
381       VALUE_TYPE (arg2) = type;
382       arg2 = value_change_enclosing_type (arg2, type);
383       VALUE_POINTED_TO_OFFSET (arg2) = 0;       /* pai: chk_val */
384       return arg2;
385     }
386   /* OBSOLETE else if (chill_varying_type (type)) */
387   /* OBSOLETE   { */
388   /* OBSOLETE     struct type *range1, *range2, *eltype1, *eltype2; */
389   /* OBSOLETE     struct value *val; */
390   /* OBSOLETE     int count1, count2; */
391   /* OBSOLETE     LONGEST low_bound, high_bound; */
392   /* OBSOLETE     char *valaddr, *valaddr_data; */
393   /* OBSOLETE     *//* For lint warning about eltype2 possibly uninitialized: */
394   /* OBSOLETE     eltype2 = NULL; */
395   /* OBSOLETE     if (code2 == TYPE_CODE_BITSTRING) */
396   /* OBSOLETE       error ("not implemented: converting bitstring to varying type"); */
397   /* OBSOLETE     if ((code2 != TYPE_CODE_ARRAY && code2 != TYPE_CODE_STRING) */
398   /* OBSOLETE         || (eltype1 = check_typedef (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, 1))), */
399   /* OBSOLETE       eltype2 = check_typedef (TYPE_TARGET_TYPE (type2)), */
400   /* OBSOLETE                                (TYPE_LENGTH (eltype1) != TYPE_LENGTH (eltype2) */
401   /* OBSOLETE     *//*|| TYPE_CODE (eltype1) != TYPE_CODE (eltype2) *//* ))) */
402   /* OBSOLETE      error ("Invalid conversion to varying type"); */
403   /* OBSOLETE     range1 = TYPE_FIELD_TYPE (TYPE_FIELD_TYPE (type, 1), 0); */
404   /* OBSOLETE     range2 = TYPE_FIELD_TYPE (type2, 0); */
405   /* OBSOLETE     if (get_discrete_bounds (range1, &low_bound, &high_bound) < 0) */
406   /* OBSOLETE       count1 = -1; */
407   /* OBSOLETE     else */
408   /* OBSOLETE       count1 = high_bound - low_bound + 1; */
409   /* OBSOLETE     if (get_discrete_bounds (range2, &low_bound, &high_bound) < 0) */
410   /* OBSOLETE       count1 = -1, count2 = 0;    *//* To force error before */
411   /* OBSOLETE     else */
412   /* OBSOLETE       count2 = high_bound - low_bound + 1; */
413   /* OBSOLETE     if (count2 > count1) */
414   /* OBSOLETE       error ("target varying type is too small"); */
415   /* OBSOLETE     val = allocate_value (type); */
416   /* OBSOLETE     valaddr = VALUE_CONTENTS_RAW (val); */
417   /* OBSOLETE     valaddr_data = valaddr + TYPE_FIELD_BITPOS (type, 1) / 8; */
418   /* OBSOLETE     *//* Set val's __var_length field to count2. */
419   /* OBSOLETE     store_signed_integer (valaddr, TYPE_LENGTH (TYPE_FIELD_TYPE (type, 0)), */
420   /* OBSOLETE       count2); */
421   /* OBSOLETE     *//* Set the __var_data field to count2 elements copied from arg2. */
422   /* OBSOLETE     memcpy (valaddr_data, VALUE_CONTENTS (arg2), */
423   /* OBSOLETE      count2 * TYPE_LENGTH (eltype2)); */
424   /* OBSOLETE     *//* Zero the rest of the __var_data field of val. */
425   /* OBSOLETE     memset (valaddr_data + count2 * TYPE_LENGTH (eltype2), '\0', */
426   /* OBSOLETE      (count1 - count2) * TYPE_LENGTH (eltype2)); */
427   /* OBSOLETE     return val; */
428   /* OBSOLETE   } */
429   else if (VALUE_LVAL (arg2) == lval_memory)
430     {
431       return value_at_lazy (type, VALUE_ADDRESS (arg2) + VALUE_OFFSET (arg2),
432                             VALUE_BFD_SECTION (arg2));
433     }
434   else if (code1 == TYPE_CODE_VOID)
435     {
436       return value_zero (builtin_type_void, not_lval);
437     }
438   else
439     {
440       error ("Invalid cast.");
441       return 0;
442     }
443 }
444
445 /* Create a value of type TYPE that is zero, and return it.  */
446
447 struct value *
448 value_zero (struct type *type, enum lval_type lv)
449 {
450   struct value *val = allocate_value (type);
451
452   memset (VALUE_CONTENTS (val), 0, TYPE_LENGTH (check_typedef (type)));
453   VALUE_LVAL (val) = lv;
454
455   return val;
456 }
457
458 /* Return a value with type TYPE located at ADDR.
459
460    Call value_at only if the data needs to be fetched immediately;
461    if we can be 'lazy' and defer the fetch, perhaps indefinately, call
462    value_at_lazy instead.  value_at_lazy simply records the address of
463    the data and sets the lazy-evaluation-required flag.  The lazy flag
464    is tested in the VALUE_CONTENTS macro, which is used if and when
465    the contents are actually required.
466
467    Note: value_at does *NOT* handle embedded offsets; perform such
468    adjustments before or after calling it. */
469
470 struct value *
471 value_at (struct type *type, CORE_ADDR addr, asection *sect)
472 {
473   struct value *val;
474
475   if (TYPE_CODE (check_typedef (type)) == TYPE_CODE_VOID)
476     error ("Attempt to dereference a generic pointer.");
477
478   val = allocate_value (type);
479
480   read_memory (addr, VALUE_CONTENTS_ALL_RAW (val), TYPE_LENGTH (type));
481
482   VALUE_LVAL (val) = lval_memory;
483   VALUE_ADDRESS (val) = addr;
484   VALUE_BFD_SECTION (val) = sect;
485
486   return val;
487 }
488
489 /* Return a lazy value with type TYPE located at ADDR (cf. value_at).  */
490
491 struct value *
492 value_at_lazy (struct type *type, CORE_ADDR addr, asection *sect)
493 {
494   struct value *val;
495
496   if (TYPE_CODE (check_typedef (type)) == TYPE_CODE_VOID)
497     error ("Attempt to dereference a generic pointer.");
498
499   val = allocate_value (type);
500
501   VALUE_LVAL (val) = lval_memory;
502   VALUE_ADDRESS (val) = addr;
503   VALUE_LAZY (val) = 1;
504   VALUE_BFD_SECTION (val) = sect;
505
506   return val;
507 }
508
509 /* Called only from the VALUE_CONTENTS and VALUE_CONTENTS_ALL macros,
510    if the current data for a variable needs to be loaded into
511    VALUE_CONTENTS(VAL).  Fetches the data from the user's process, and
512    clears the lazy flag to indicate that the data in the buffer is valid.
513
514    If the value is zero-length, we avoid calling read_memory, which would
515    abort.  We mark the value as fetched anyway -- all 0 bytes of it.
516
517    This function returns a value because it is used in the VALUE_CONTENTS
518    macro as part of an expression, where a void would not work.  The
519    value is ignored.  */
520
521 int
522 value_fetch_lazy (struct value *val)
523 {
524   CORE_ADDR addr = VALUE_ADDRESS (val) + VALUE_OFFSET (val);
525   int length = TYPE_LENGTH (VALUE_ENCLOSING_TYPE (val));
526
527   struct type *type = VALUE_TYPE (val);
528   if (length)
529     read_memory (addr, VALUE_CONTENTS_ALL_RAW (val), length);
530
531   VALUE_LAZY (val) = 0;
532   return 0;
533 }
534
535
536 /* Store the contents of FROMVAL into the location of TOVAL.
537    Return a new value with the location of TOVAL and contents of FROMVAL.  */
538
539 struct value *
540 value_assign (struct value *toval, struct value *fromval)
541 {
542   register struct type *type;
543   struct value *val;
544   char *raw_buffer = (char*) alloca (MAX_REGISTER_RAW_SIZE);
545   int use_buffer = 0;
546
547   if (!toval->modifiable)
548     error ("Left operand of assignment is not a modifiable lvalue.");
549
550   COERCE_REF (toval);
551
552   type = VALUE_TYPE (toval);
553   if (VALUE_LVAL (toval) != lval_internalvar)
554     fromval = value_cast (type, fromval);
555   else
556     COERCE_ARRAY (fromval);
557   CHECK_TYPEDEF (type);
558
559   /* If TOVAL is a special machine register requiring conversion
560      of program values to a special raw format,
561      convert FROMVAL's contents now, with result in `raw_buffer',
562      and set USE_BUFFER to the number of bytes to write.  */
563
564   if (VALUE_REGNO (toval) >= 0)
565     {
566       int regno = VALUE_REGNO (toval);
567       if (CONVERT_REGISTER_P (regno))
568         {
569           struct type *fromtype = check_typedef (VALUE_TYPE (fromval));
570           VALUE_TO_REGISTER (fromtype, regno, VALUE_CONTENTS (fromval), raw_buffer);
571           use_buffer = REGISTER_RAW_SIZE (regno);
572         }
573     }
574
575   switch (VALUE_LVAL (toval))
576     {
577     case lval_internalvar:
578       set_internalvar (VALUE_INTERNALVAR (toval), fromval);
579       val = value_copy (VALUE_INTERNALVAR (toval)->value);
580       val = value_change_enclosing_type (val, VALUE_ENCLOSING_TYPE (fromval));
581       VALUE_EMBEDDED_OFFSET (val) = VALUE_EMBEDDED_OFFSET (fromval);
582       VALUE_POINTED_TO_OFFSET (val) = VALUE_POINTED_TO_OFFSET (fromval);
583       return val;
584
585     case lval_internalvar_component:
586       set_internalvar_component (VALUE_INTERNALVAR (toval),
587                                  VALUE_OFFSET (toval),
588                                  VALUE_BITPOS (toval),
589                                  VALUE_BITSIZE (toval),
590                                  fromval);
591       break;
592
593     case lval_memory:
594       {
595         char *dest_buffer;
596         CORE_ADDR changed_addr;
597         int changed_len;
598
599         if (VALUE_BITSIZE (toval))
600           {
601             char buffer[sizeof (LONGEST)];
602             /* We assume that the argument to read_memory is in units of
603                host chars.  FIXME:  Is that correct?  */
604             changed_len = (VALUE_BITPOS (toval)
605                            + VALUE_BITSIZE (toval)
606                            + HOST_CHAR_BIT - 1)
607               / HOST_CHAR_BIT;
608
609             if (changed_len > (int) sizeof (LONGEST))
610               error ("Can't handle bitfields which don't fit in a %d bit word.",
611                      (int) sizeof (LONGEST) * HOST_CHAR_BIT);
612
613             read_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
614                          buffer, changed_len);
615             modify_field (buffer, value_as_long (fromval),
616                           VALUE_BITPOS (toval), VALUE_BITSIZE (toval));
617             changed_addr = VALUE_ADDRESS (toval) + VALUE_OFFSET (toval);
618             dest_buffer = buffer;
619           }
620         else if (use_buffer)
621           {
622             changed_addr = VALUE_ADDRESS (toval) + VALUE_OFFSET (toval);
623             changed_len = use_buffer;
624             dest_buffer = raw_buffer;
625           }
626         else
627           {
628             changed_addr = VALUE_ADDRESS (toval) + VALUE_OFFSET (toval);
629             changed_len = TYPE_LENGTH (type);
630             dest_buffer = VALUE_CONTENTS (fromval);
631           }
632
633         write_memory (changed_addr, dest_buffer, changed_len);
634         if (memory_changed_hook)
635           memory_changed_hook (changed_addr, changed_len);
636         target_changed_event ();
637       }
638       break;
639
640     case lval_register:
641       if (VALUE_BITSIZE (toval))
642         {
643           char buffer[sizeof (LONGEST)];
644           int len =
645                 REGISTER_RAW_SIZE (VALUE_REGNO (toval)) - VALUE_OFFSET (toval);
646
647           if (len > (int) sizeof (LONGEST))
648             error ("Can't handle bitfields in registers larger than %d bits.",
649                    (int) sizeof (LONGEST) * HOST_CHAR_BIT);
650
651           if (VALUE_BITPOS (toval) + VALUE_BITSIZE (toval)
652               > len * HOST_CHAR_BIT)
653             /* Getting this right would involve being very careful about
654                byte order.  */
655             error ("Can't assign to bitfields that cross register "
656                    "boundaries.");
657
658           read_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
659                                buffer, len);
660           modify_field (buffer, value_as_long (fromval),
661                         VALUE_BITPOS (toval), VALUE_BITSIZE (toval));
662           write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
663                                 buffer, len);
664         }
665       else if (use_buffer)
666         write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
667                               raw_buffer, use_buffer);
668       else
669         {
670           /* Do any conversion necessary when storing this type to more
671              than one register.  */
672 #ifdef REGISTER_CONVERT_FROM_TYPE
673           memcpy (raw_buffer, VALUE_CONTENTS (fromval), TYPE_LENGTH (type));
674           REGISTER_CONVERT_FROM_TYPE (VALUE_REGNO (toval), type, raw_buffer);
675           write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
676                                 raw_buffer, TYPE_LENGTH (type));
677 #else
678           write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
679                               VALUE_CONTENTS (fromval), TYPE_LENGTH (type));
680 #endif
681         }
682
683       target_changed_event ();
684
685       /* Assigning to the stack pointer, frame pointer, and other
686          (architecture and calling convention specific) registers may
687          cause the frame cache to be out of date.  We just do this
688          on all assignments to registers for simplicity; I doubt the slowdown
689          matters.  */
690       reinit_frame_cache ();
691       break;
692
693     case lval_reg_frame_relative:
694       {
695         /* value is stored in a series of registers in the frame
696            specified by the structure.  Copy that value out, modify
697            it, and copy it back in.  */
698         int amount_to_copy = (VALUE_BITSIZE (toval) ? 1 : TYPE_LENGTH (type));
699         int reg_size = REGISTER_RAW_SIZE (VALUE_FRAME_REGNUM (toval));
700         int byte_offset = VALUE_OFFSET (toval) % reg_size;
701         int reg_offset = VALUE_OFFSET (toval) / reg_size;
702         int amount_copied;
703
704         /* Make the buffer large enough in all cases.  */
705         /* FIXME (alloca): Not safe for very large data types. */
706         char *buffer = (char *) alloca (amount_to_copy
707                                         + sizeof (LONGEST)
708                                         + MAX_REGISTER_RAW_SIZE);
709
710         int regno;
711         struct frame_info *frame;
712
713         /* Figure out which frame this is in currently.  */
714         for (frame = get_current_frame ();
715              frame && FRAME_FP (frame) != VALUE_FRAME (toval);
716              frame = get_prev_frame (frame))
717           ;
718
719         if (!frame)
720           error ("Value being assigned to is no longer active.");
721
722         amount_to_copy += (reg_size - amount_to_copy % reg_size);
723
724         /* Copy it out.  */
725         for ((regno = VALUE_FRAME_REGNUM (toval) + reg_offset,
726               amount_copied = 0);
727              amount_copied < amount_to_copy;
728              amount_copied += reg_size, regno++)
729           {
730             get_saved_register (buffer + amount_copied,
731                                 (int *) NULL, (CORE_ADDR *) NULL,
732                                 frame, regno, (enum lval_type *) NULL);
733           }
734
735         /* Modify what needs to be modified.  */
736         if (VALUE_BITSIZE (toval))
737           modify_field (buffer + byte_offset,
738                         value_as_long (fromval),
739                         VALUE_BITPOS (toval), VALUE_BITSIZE (toval));
740         else if (use_buffer)
741           memcpy (buffer + byte_offset, raw_buffer, use_buffer);
742         else
743           memcpy (buffer + byte_offset, VALUE_CONTENTS (fromval),
744                   TYPE_LENGTH (type));
745
746         /* Copy it back.  */
747         for ((regno = VALUE_FRAME_REGNUM (toval) + reg_offset,
748               amount_copied = 0);
749              amount_copied < amount_to_copy;
750              amount_copied += reg_size, regno++)
751           {
752             enum lval_type lval;
753             CORE_ADDR addr;
754             int optim;
755
756             /* Just find out where to put it.  */
757             get_saved_register ((char *) NULL,
758                                 &optim, &addr, frame, regno, &lval);
759
760             if (optim)
761               error ("Attempt to assign to a value that was optimized out.");
762             if (lval == lval_memory)
763               write_memory (addr, buffer + amount_copied, reg_size);
764             else if (lval == lval_register)
765               write_register_bytes (addr, buffer + amount_copied, reg_size);
766             else
767               error ("Attempt to assign to an unmodifiable value.");
768           }
769
770         if (register_changed_hook)
771           register_changed_hook (-1);
772         target_changed_event ();
773       }
774       break;
775
776
777     default:
778       error ("Left operand of assignment is not an lvalue.");
779     }
780
781   /* If the field does not entirely fill a LONGEST, then zero the sign bits.
782      If the field is signed, and is negative, then sign extend. */
783   if ((VALUE_BITSIZE (toval) > 0)
784       && (VALUE_BITSIZE (toval) < 8 * (int) sizeof (LONGEST)))
785     {
786       LONGEST fieldval = value_as_long (fromval);
787       LONGEST valmask = (((ULONGEST) 1) << VALUE_BITSIZE (toval)) - 1;
788
789       fieldval &= valmask;
790       if (!TYPE_UNSIGNED (type) && (fieldval & (valmask ^ (valmask >> 1))))
791         fieldval |= ~valmask;
792
793       fromval = value_from_longest (type, fieldval);
794     }
795
796   val = value_copy (toval);
797   memcpy (VALUE_CONTENTS_RAW (val), VALUE_CONTENTS (fromval),
798           TYPE_LENGTH (type));
799   VALUE_TYPE (val) = type;
800   val = value_change_enclosing_type (val, VALUE_ENCLOSING_TYPE (fromval));
801   VALUE_EMBEDDED_OFFSET (val) = VALUE_EMBEDDED_OFFSET (fromval);
802   VALUE_POINTED_TO_OFFSET (val) = VALUE_POINTED_TO_OFFSET (fromval);
803
804   return val;
805 }
806
807 /* Extend a value VAL to COUNT repetitions of its type.  */
808
809 struct value *
810 value_repeat (struct value *arg1, int count)
811 {
812   struct value *val;
813
814   if (VALUE_LVAL (arg1) != lval_memory)
815     error ("Only values in memory can be extended with '@'.");
816   if (count < 1)
817     error ("Invalid number %d of repetitions.", count);
818
819   val = allocate_repeat_value (VALUE_ENCLOSING_TYPE (arg1), count);
820
821   read_memory (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1),
822                VALUE_CONTENTS_ALL_RAW (val),
823                TYPE_LENGTH (VALUE_ENCLOSING_TYPE (val)));
824   VALUE_LVAL (val) = lval_memory;
825   VALUE_ADDRESS (val) = VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1);
826
827   return val;
828 }
829
830 struct value *
831 value_of_variable (struct symbol *var, struct block *b)
832 {
833   struct value *val;
834   struct frame_info *frame = NULL;
835
836   if (!b)
837     frame = NULL;               /* Use selected frame.  */
838   else if (symbol_read_needs_frame (var))
839     {
840       frame = block_innermost_frame (b);
841       if (!frame)
842         {
843           if (BLOCK_FUNCTION (b)
844               && SYMBOL_SOURCE_NAME (BLOCK_FUNCTION (b)))
845             error ("No frame is currently executing in block %s.",
846                    SYMBOL_SOURCE_NAME (BLOCK_FUNCTION (b)));
847           else
848             error ("No frame is currently executing in specified block");
849         }
850     }
851
852   val = read_var_value (var, frame);
853   if (!val)
854     error ("Address of symbol \"%s\" is unknown.", SYMBOL_SOURCE_NAME (var));
855
856   return val;
857 }
858
859 /* Given a value which is an array, return a value which is a pointer to its
860    first element, regardless of whether or not the array has a nonzero lower
861    bound.
862
863    FIXME:  A previous comment here indicated that this routine should be
864    substracting the array's lower bound.  It's not clear to me that this
865    is correct.  Given an array subscripting operation, it would certainly
866    work to do the adjustment here, essentially computing:
867
868    (&array[0] - (lowerbound * sizeof array[0])) + (index * sizeof array[0])
869
870    However I believe a more appropriate and logical place to account for
871    the lower bound is to do so in value_subscript, essentially computing:
872
873    (&array[0] + ((index - lowerbound) * sizeof array[0]))
874
875    As further evidence consider what would happen with operations other
876    than array subscripting, where the caller would get back a value that
877    had an address somewhere before the actual first element of the array,
878    and the information about the lower bound would be lost because of
879    the coercion to pointer type.
880  */
881
882 struct value *
883 value_coerce_array (struct value *arg1)
884 {
885   register struct type *type = check_typedef (VALUE_TYPE (arg1));
886
887   if (VALUE_LVAL (arg1) != lval_memory)
888     error ("Attempt to take address of value not located in memory.");
889
890   return value_from_pointer (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
891                              (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
892 }
893
894 /* Given a value which is a function, return a value which is a pointer
895    to it.  */
896
897 struct value *
898 value_coerce_function (struct value *arg1)
899 {
900   struct value *retval;
901
902   if (VALUE_LVAL (arg1) != lval_memory)
903     error ("Attempt to take address of value not located in memory.");
904
905   retval = value_from_pointer (lookup_pointer_type (VALUE_TYPE (arg1)),
906                                (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
907   VALUE_BFD_SECTION (retval) = VALUE_BFD_SECTION (arg1);
908   return retval;
909 }
910
911 /* Return a pointer value for the object for which ARG1 is the contents.  */
912
913 struct value *
914 value_addr (struct value *arg1)
915 {
916   struct value *arg2;
917
918   struct type *type = check_typedef (VALUE_TYPE (arg1));
919   if (TYPE_CODE (type) == TYPE_CODE_REF)
920     {
921       /* Copy the value, but change the type from (T&) to (T*).
922          We keep the same location information, which is efficient,
923          and allows &(&X) to get the location containing the reference. */
924       arg2 = value_copy (arg1);
925       VALUE_TYPE (arg2) = lookup_pointer_type (TYPE_TARGET_TYPE (type));
926       return arg2;
927     }
928   if (TYPE_CODE (type) == TYPE_CODE_FUNC)
929     return value_coerce_function (arg1);
930
931   if (VALUE_LVAL (arg1) != lval_memory)
932     error ("Attempt to take address of value not located in memory.");
933
934   /* Get target memory address */
935   arg2 = value_from_pointer (lookup_pointer_type (VALUE_TYPE (arg1)),
936                              (VALUE_ADDRESS (arg1)
937                               + VALUE_OFFSET (arg1)
938                               + VALUE_EMBEDDED_OFFSET (arg1)));
939
940   /* This may be a pointer to a base subobject; so remember the
941      full derived object's type ... */
942   arg2 = value_change_enclosing_type (arg2, lookup_pointer_type (VALUE_ENCLOSING_TYPE (arg1)));
943   /* ... and also the relative position of the subobject in the full object */
944   VALUE_POINTED_TO_OFFSET (arg2) = VALUE_EMBEDDED_OFFSET (arg1);
945   VALUE_BFD_SECTION (arg2) = VALUE_BFD_SECTION (arg1);
946   return arg2;
947 }
948
949 /* Given a value of a pointer type, apply the C unary * operator to it.  */
950
951 struct value *
952 value_ind (struct value *arg1)
953 {
954   struct type *base_type;
955   struct value *arg2;
956
957   COERCE_ARRAY (arg1);
958
959   base_type = check_typedef (VALUE_TYPE (arg1));
960
961   if (TYPE_CODE (base_type) == TYPE_CODE_MEMBER)
962     error ("not implemented: member types in value_ind");
963
964   /* Allow * on an integer so we can cast it to whatever we want.
965      This returns an int, which seems like the most C-like thing
966      to do.  "long long" variables are rare enough that
967      BUILTIN_TYPE_LONGEST would seem to be a mistake.  */
968   if (TYPE_CODE (base_type) == TYPE_CODE_INT)
969     return value_at_lazy (builtin_type_int,
970                           (CORE_ADDR) value_as_long (arg1),
971                           VALUE_BFD_SECTION (arg1));
972   else if (TYPE_CODE (base_type) == TYPE_CODE_PTR)
973     {
974       struct type *enc_type;
975       /* We may be pointing to something embedded in a larger object */
976       /* Get the real type of the enclosing object */
977       enc_type = check_typedef (VALUE_ENCLOSING_TYPE (arg1));
978       enc_type = TYPE_TARGET_TYPE (enc_type);
979       /* Retrieve the enclosing object pointed to */
980       arg2 = value_at_lazy (enc_type,
981                    value_as_address (arg1) - VALUE_POINTED_TO_OFFSET (arg1),
982                             VALUE_BFD_SECTION (arg1));
983       /* Re-adjust type */
984       VALUE_TYPE (arg2) = TYPE_TARGET_TYPE (base_type);
985       /* Add embedding info */
986       arg2 = value_change_enclosing_type (arg2, enc_type);
987       VALUE_EMBEDDED_OFFSET (arg2) = VALUE_POINTED_TO_OFFSET (arg1);
988
989       /* We may be pointing to an object of some derived type */
990       arg2 = value_full_object (arg2, NULL, 0, 0, 0);
991       return arg2;
992     }
993
994   error ("Attempt to take contents of a non-pointer value.");
995   return 0;                     /* For lint -- never reached */
996 }
997 \f
998 /* Pushing small parts of stack frames.  */
999
1000 /* Push one word (the size of object that a register holds).  */
1001
1002 CORE_ADDR
1003 push_word (CORE_ADDR sp, ULONGEST word)
1004 {
1005   register int len = REGISTER_SIZE;
1006   char *buffer = alloca (MAX_REGISTER_RAW_SIZE);
1007
1008   store_unsigned_integer (buffer, len, word);
1009   if (INNER_THAN (1, 2))
1010     {
1011       /* stack grows downward */
1012       sp -= len;
1013       write_memory (sp, buffer, len);
1014     }
1015   else
1016     {
1017       /* stack grows upward */
1018       write_memory (sp, buffer, len);
1019       sp += len;
1020     }
1021
1022   return sp;
1023 }
1024
1025 /* Push LEN bytes with data at BUFFER.  */
1026
1027 CORE_ADDR
1028 push_bytes (CORE_ADDR sp, char *buffer, int len)
1029 {
1030   if (INNER_THAN (1, 2))
1031     {
1032       /* stack grows downward */
1033       sp -= len;
1034       write_memory (sp, buffer, len);
1035     }
1036   else
1037     {
1038       /* stack grows upward */
1039       write_memory (sp, buffer, len);
1040       sp += len;
1041     }
1042
1043   return sp;
1044 }
1045
1046 #ifndef PARM_BOUNDARY
1047 #define PARM_BOUNDARY (0)
1048 #endif
1049
1050 /* Push onto the stack the specified value VALUE.  Pad it correctly for
1051    it to be an argument to a function.  */
1052
1053 static CORE_ADDR
1054 value_push (register CORE_ADDR sp, struct value *arg)
1055 {
1056   register int len = TYPE_LENGTH (VALUE_ENCLOSING_TYPE (arg));
1057   register int container_len = len;
1058   register int offset;
1059
1060   /* How big is the container we're going to put this value in?  */
1061   if (PARM_BOUNDARY)
1062     container_len = ((len + PARM_BOUNDARY / TARGET_CHAR_BIT - 1)
1063                      & ~(PARM_BOUNDARY / TARGET_CHAR_BIT - 1));
1064
1065   /* Are we going to put it at the high or low end of the container?  */
1066   if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
1067     offset = container_len - len;
1068   else
1069     offset = 0;
1070
1071   if (INNER_THAN (1, 2))
1072     {
1073       /* stack grows downward */
1074       sp -= container_len;
1075       write_memory (sp + offset, VALUE_CONTENTS_ALL (arg), len);
1076     }
1077   else
1078     {
1079       /* stack grows upward */
1080       write_memory (sp + offset, VALUE_CONTENTS_ALL (arg), len);
1081       sp += container_len;
1082     }
1083
1084   return sp;
1085 }
1086
1087 CORE_ADDR
1088 default_push_arguments (int nargs, struct value **args, CORE_ADDR sp,
1089                         int struct_return, CORE_ADDR struct_addr)
1090 {
1091   /* ASSERT ( !struct_return); */
1092   int i;
1093   for (i = nargs - 1; i >= 0; i--)
1094     sp = value_push (sp, args[i]);
1095   return sp;
1096 }
1097
1098
1099 /* Functions to use for the COERCE_FLOAT_TO_DOUBLE gdbarch method.
1100
1101    How you should pass arguments to a function depends on whether it
1102    was defined in K&R style or prototype style.  If you define a
1103    function using the K&R syntax that takes a `float' argument, then
1104    callers must pass that argument as a `double'.  If you define the
1105    function using the prototype syntax, then you must pass the
1106    argument as a `float', with no promotion.
1107
1108    Unfortunately, on certain older platforms, the debug info doesn't
1109    indicate reliably how each function was defined.  A function type's
1110    TYPE_FLAG_PROTOTYPED flag may be clear, even if the function was
1111    defined in prototype style.  When calling a function whose
1112    TYPE_FLAG_PROTOTYPED flag is clear, GDB consults the
1113    COERCE_FLOAT_TO_DOUBLE gdbarch method to decide what to do.
1114
1115    For modern targets, it is proper to assume that, if the prototype
1116    flag is clear, that can be trusted: `float' arguments should be
1117    promoted to `double'.  You should register the function
1118    `standard_coerce_float_to_double' to get this behavior.
1119
1120    For some older targets, if the prototype flag is clear, that
1121    doesn't tell us anything.  So we guess that, if we don't have a
1122    type for the formal parameter (i.e., the first argument to
1123    COERCE_FLOAT_TO_DOUBLE is null), then we should promote it;
1124    otherwise, we should leave it alone.  The function
1125    `default_coerce_float_to_double' provides this behavior; it is the
1126    default value, for compatibility with older configurations.  */
1127 int
1128 default_coerce_float_to_double (struct type *formal, struct type *actual)
1129 {
1130   return formal == NULL;
1131 }
1132
1133
1134 int
1135 standard_coerce_float_to_double (struct type *formal, struct type *actual)
1136 {
1137   return 1;
1138 }
1139
1140
1141 /* Perform the standard coercions that are specified
1142    for arguments to be passed to C functions.
1143
1144    If PARAM_TYPE is non-NULL, it is the expected parameter type.
1145    IS_PROTOTYPED is non-zero if the function declaration is prototyped.  */
1146
1147 static struct value *
1148 value_arg_coerce (struct value *arg, struct type *param_type,
1149                   int is_prototyped)
1150 {
1151   register struct type *arg_type = check_typedef (VALUE_TYPE (arg));
1152   register struct type *type
1153     = param_type ? check_typedef (param_type) : arg_type;
1154
1155   switch (TYPE_CODE (type))
1156     {
1157     case TYPE_CODE_REF:
1158       if (TYPE_CODE (arg_type) != TYPE_CODE_REF
1159           && TYPE_CODE (arg_type) != TYPE_CODE_PTR)
1160         {
1161           arg = value_addr (arg);
1162           VALUE_TYPE (arg) = param_type;
1163           return arg;
1164         }
1165       break;
1166     case TYPE_CODE_INT:
1167     case TYPE_CODE_CHAR:
1168     case TYPE_CODE_BOOL:
1169     case TYPE_CODE_ENUM:
1170       /* If we don't have a prototype, coerce to integer type if necessary.  */
1171       if (!is_prototyped)
1172         {
1173           if (TYPE_LENGTH (type) < TYPE_LENGTH (builtin_type_int))
1174             type = builtin_type_int;
1175         }
1176       /* Currently all target ABIs require at least the width of an integer
1177          type for an argument.  We may have to conditionalize the following
1178          type coercion for future targets.  */
1179       if (TYPE_LENGTH (type) < TYPE_LENGTH (builtin_type_int))
1180         type = builtin_type_int;
1181       break;
1182     case TYPE_CODE_FLT:
1183       /* FIXME: We should always convert floats to doubles in the
1184          non-prototyped case.  As many debugging formats include
1185          no information about prototyping, we have to live with
1186          COERCE_FLOAT_TO_DOUBLE for now.  */
1187       if (!is_prototyped && COERCE_FLOAT_TO_DOUBLE (param_type, arg_type))
1188         {
1189           if (TYPE_LENGTH (type) < TYPE_LENGTH (builtin_type_double))
1190             type = builtin_type_double;
1191           else if (TYPE_LENGTH (type) > TYPE_LENGTH (builtin_type_double))
1192             type = builtin_type_long_double;
1193         }
1194       break;
1195     case TYPE_CODE_FUNC:
1196       type = lookup_pointer_type (type);
1197       break;
1198     case TYPE_CODE_ARRAY:
1199       /* Arrays are coerced to pointers to their first element, unless
1200          they are vectors, in which case we want to leave them alone,
1201          because they are passed by value.  */
1202       if (current_language->c_style_arrays)
1203         if (!TYPE_VECTOR (type))
1204           type = lookup_pointer_type (TYPE_TARGET_TYPE (type));
1205       break;
1206     case TYPE_CODE_UNDEF:
1207     case TYPE_CODE_PTR:
1208     case TYPE_CODE_STRUCT:
1209     case TYPE_CODE_UNION:
1210     case TYPE_CODE_VOID:
1211     case TYPE_CODE_SET:
1212     case TYPE_CODE_RANGE:
1213     case TYPE_CODE_STRING:
1214     case TYPE_CODE_BITSTRING:
1215     case TYPE_CODE_ERROR:
1216     case TYPE_CODE_MEMBER:
1217     case TYPE_CODE_METHOD:
1218     case TYPE_CODE_COMPLEX:
1219     default:
1220       break;
1221     }
1222
1223   return value_cast (type, arg);
1224 }
1225
1226 /* Determine a function's address and its return type from its value.
1227    Calls error() if the function is not valid for calling.  */
1228
1229 static CORE_ADDR
1230 find_function_addr (struct value *function, struct type **retval_type)
1231 {
1232   register struct type *ftype = check_typedef (VALUE_TYPE (function));
1233   register enum type_code code = TYPE_CODE (ftype);
1234   struct type *value_type;
1235   CORE_ADDR funaddr;
1236
1237   /* If it's a member function, just look at the function
1238      part of it.  */
1239
1240   /* Determine address to call.  */
1241   if (code == TYPE_CODE_FUNC || code == TYPE_CODE_METHOD)
1242     {
1243       funaddr = VALUE_ADDRESS (function);
1244       value_type = TYPE_TARGET_TYPE (ftype);
1245     }
1246   else if (code == TYPE_CODE_PTR)
1247     {
1248       funaddr = value_as_address (function);
1249       ftype = check_typedef (TYPE_TARGET_TYPE (ftype));
1250       if (TYPE_CODE (ftype) == TYPE_CODE_FUNC
1251           || TYPE_CODE (ftype) == TYPE_CODE_METHOD)
1252         {
1253           funaddr = CONVERT_FROM_FUNC_PTR_ADDR (funaddr);
1254           value_type = TYPE_TARGET_TYPE (ftype);
1255         }
1256       else
1257         value_type = builtin_type_int;
1258     }
1259   else if (code == TYPE_CODE_INT)
1260     {
1261       /* Handle the case of functions lacking debugging info.
1262          Their values are characters since their addresses are char */
1263       if (TYPE_LENGTH (ftype) == 1)
1264         funaddr = value_as_address (value_addr (function));
1265       else
1266         /* Handle integer used as address of a function.  */
1267         funaddr = (CORE_ADDR) value_as_long (function);
1268
1269       value_type = builtin_type_int;
1270     }
1271   else
1272     error ("Invalid data type for function to be called.");
1273
1274   *retval_type = value_type;
1275   return funaddr;
1276 }
1277
1278 /* All this stuff with a dummy frame may seem unnecessarily complicated
1279    (why not just save registers in GDB?).  The purpose of pushing a dummy
1280    frame which looks just like a real frame is so that if you call a
1281    function and then hit a breakpoint (get a signal, etc), "backtrace"
1282    will look right.  Whether the backtrace needs to actually show the
1283    stack at the time the inferior function was called is debatable, but
1284    it certainly needs to not display garbage.  So if you are contemplating
1285    making dummy frames be different from normal frames, consider that.  */
1286
1287 /* Perform a function call in the inferior.
1288    ARGS is a vector of values of arguments (NARGS of them).
1289    FUNCTION is a value, the function to be called.
1290    Returns a value representing what the function returned.
1291    May fail to return, if a breakpoint or signal is hit
1292    during the execution of the function.
1293
1294    ARGS is modified to contain coerced values. */
1295
1296 static struct value *
1297 hand_function_call (struct value *function, int nargs, struct value **args)
1298 {
1299   register CORE_ADDR sp;
1300   register int i;
1301   int rc;
1302   CORE_ADDR start_sp;
1303   /* CALL_DUMMY is an array of words (REGISTER_SIZE), but each word
1304      is in host byte order.  Before calling FIX_CALL_DUMMY, we byteswap it
1305      and remove any extra bytes which might exist because ULONGEST is
1306      bigger than REGISTER_SIZE.
1307
1308      NOTE: This is pretty wierd, as the call dummy is actually a
1309      sequence of instructions.  But CISC machines will have
1310      to pack the instructions into REGISTER_SIZE units (and
1311      so will RISC machines for which INSTRUCTION_SIZE is not
1312      REGISTER_SIZE).
1313
1314      NOTE: This is pretty stupid.  CALL_DUMMY should be in strict
1315      target byte order. */
1316
1317   static ULONGEST *dummy;
1318   int sizeof_dummy1;
1319   char *dummy1;
1320   CORE_ADDR old_sp;
1321   struct type *value_type;
1322   unsigned char struct_return;
1323   CORE_ADDR struct_addr = 0;
1324   struct regcache *retbuf;
1325   struct cleanup *retbuf_cleanup;
1326   struct inferior_status *inf_status;
1327   struct cleanup *inf_status_cleanup;
1328   CORE_ADDR funaddr;
1329   int using_gcc;                /* Set to version of gcc in use, or zero if not gcc */
1330   CORE_ADDR real_pc;
1331   struct type *param_type = NULL;
1332   struct type *ftype = check_typedef (SYMBOL_TYPE (function));
1333   int n_method_args = 0;
1334
1335   dummy = alloca (SIZEOF_CALL_DUMMY_WORDS);
1336   sizeof_dummy1 = REGISTER_SIZE * SIZEOF_CALL_DUMMY_WORDS / sizeof (ULONGEST);
1337   dummy1 = alloca (sizeof_dummy1);
1338   memcpy (dummy, CALL_DUMMY_WORDS, SIZEOF_CALL_DUMMY_WORDS);
1339
1340   if (!target_has_execution)
1341     noprocess ();
1342
1343   /* Create a cleanup chain that contains the retbuf (buffer
1344      containing the register values).  This chain is create BEFORE the
1345      inf_status chain so that the inferior status can cleaned up
1346      (restored or discarded) without having the retbuf freed.  */
1347   retbuf = regcache_xmalloc (current_gdbarch);
1348   retbuf_cleanup = make_cleanup_regcache_xfree (retbuf);
1349
1350   /* A cleanup for the inferior status.  Create this AFTER the retbuf
1351      so that this can be discarded or applied without interfering with
1352      the regbuf.  */
1353   inf_status = save_inferior_status (1);
1354   inf_status_cleanup = make_cleanup_restore_inferior_status (inf_status);
1355
1356   /* PUSH_DUMMY_FRAME is responsible for saving the inferior registers
1357      (and POP_FRAME for restoring them).  (At least on most machines)
1358      they are saved on the stack in the inferior.  */
1359   PUSH_DUMMY_FRAME;
1360
1361   old_sp = sp = read_sp ();
1362
1363   if (INNER_THAN (1, 2))
1364     {
1365       /* Stack grows down */
1366       sp -= sizeof_dummy1;
1367       start_sp = sp;
1368     }
1369   else
1370     {
1371       /* Stack grows up */
1372       start_sp = sp;
1373       sp += sizeof_dummy1;
1374     }
1375
1376   funaddr = find_function_addr (function, &value_type);
1377   CHECK_TYPEDEF (value_type);
1378
1379   {
1380     struct block *b = block_for_pc (funaddr);
1381     /* If compiled without -g, assume GCC 2.  */
1382     using_gcc = (b == NULL ? 2 : BLOCK_GCC_COMPILED (b));
1383   }
1384
1385   /* Are we returning a value using a structure return or a normal
1386      value return? */
1387
1388   struct_return = using_struct_return (function, funaddr, value_type,
1389                                        using_gcc);
1390
1391   /* Create a call sequence customized for this function
1392      and the number of arguments for it.  */
1393   for (i = 0; i < (int) (SIZEOF_CALL_DUMMY_WORDS / sizeof (dummy[0])); i++)
1394     store_unsigned_integer (&dummy1[i * REGISTER_SIZE],
1395                             REGISTER_SIZE,
1396                             (ULONGEST) dummy[i]);
1397
1398 #ifdef GDB_TARGET_IS_HPPA
1399   real_pc = FIX_CALL_DUMMY (dummy1, start_sp, funaddr, nargs, args,
1400                             value_type, using_gcc);
1401 #else
1402   FIX_CALL_DUMMY (dummy1, start_sp, funaddr, nargs, args,
1403                   value_type, using_gcc);
1404   real_pc = start_sp;
1405 #endif
1406
1407   if (CALL_DUMMY_LOCATION == ON_STACK)
1408     {
1409       write_memory (start_sp, (char *) dummy1, sizeof_dummy1);
1410       if (USE_GENERIC_DUMMY_FRAMES)
1411         generic_save_call_dummy_addr (start_sp, start_sp + sizeof_dummy1);
1412     }
1413
1414   if (CALL_DUMMY_LOCATION == BEFORE_TEXT_END)
1415     {
1416       /* Convex Unix prohibits executing in the stack segment. */
1417       /* Hope there is empty room at the top of the text segment. */
1418       extern CORE_ADDR text_end;
1419       static int checked = 0;
1420       if (!checked)
1421         for (start_sp = text_end - sizeof_dummy1; start_sp < text_end; ++start_sp)
1422           if (read_memory_integer (start_sp, 1) != 0)
1423             error ("text segment full -- no place to put call");
1424       checked = 1;
1425       sp = old_sp;
1426       real_pc = text_end - sizeof_dummy1;
1427       write_memory (real_pc, (char *) dummy1, sizeof_dummy1);
1428       if (USE_GENERIC_DUMMY_FRAMES)
1429         generic_save_call_dummy_addr (real_pc, real_pc + sizeof_dummy1);
1430     }
1431
1432   if (CALL_DUMMY_LOCATION == AFTER_TEXT_END)
1433     {
1434       extern CORE_ADDR text_end;
1435       int errcode;
1436       sp = old_sp;
1437       real_pc = text_end;
1438       errcode = target_write_memory (real_pc, (char *) dummy1, sizeof_dummy1);
1439       if (errcode != 0)
1440         error ("Cannot write text segment -- call_function failed");
1441       if (USE_GENERIC_DUMMY_FRAMES)
1442         generic_save_call_dummy_addr (real_pc, real_pc + sizeof_dummy1);
1443     }
1444
1445   if (CALL_DUMMY_LOCATION == AT_ENTRY_POINT)
1446     {
1447       real_pc = funaddr;
1448       if (USE_GENERIC_DUMMY_FRAMES)
1449         /* NOTE: cagney/2002-04-13: The entry point is going to be
1450            modified with a single breakpoint.  */
1451         generic_save_call_dummy_addr (CALL_DUMMY_ADDRESS (),
1452                                       CALL_DUMMY_ADDRESS () + 1);
1453     }
1454
1455 #ifdef lint
1456   sp = old_sp;                  /* It really is used, for some ifdef's... */
1457 #endif
1458
1459   if (nargs < TYPE_NFIELDS (ftype))
1460     error ("too few arguments in function call");
1461
1462   for (i = nargs - 1; i >= 0; i--)
1463     {
1464       int prototyped;
1465
1466       /* FIXME drow/2002-05-31: Should just always mark methods as
1467          prototyped.  Can we respect TYPE_VARARGS?  Probably not.  */
1468       if (TYPE_CODE (ftype) == TYPE_CODE_METHOD)
1469         prototyped = 1;
1470       else
1471         prototyped = TYPE_PROTOTYPED (ftype);
1472
1473       if (i < TYPE_NFIELDS (ftype))
1474         args[i] = value_arg_coerce (args[i], TYPE_FIELD_TYPE (ftype, i),
1475                                     prototyped);
1476       else
1477         args[i] = value_arg_coerce (args[i], NULL, 0);
1478
1479       /*elz: this code is to handle the case in which the function to be called
1480          has a pointer to function as parameter and the corresponding actual argument
1481          is the address of a function and not a pointer to function variable.
1482          In aCC compiled code, the calls through pointers to functions (in the body
1483          of the function called by hand) are made via $$dyncall_external which
1484          requires some registers setting, this is taken care of if we call
1485          via a function pointer variable, but not via a function address.
1486          In cc this is not a problem. */
1487
1488       if (using_gcc == 0)
1489         if (param_type && TYPE_CODE (ftype) != TYPE_CODE_METHOD)
1490           /* if this parameter is a pointer to function */
1491           if (TYPE_CODE (param_type) == TYPE_CODE_PTR)
1492             if (TYPE_CODE (TYPE_TARGET_TYPE (param_type)) == TYPE_CODE_FUNC)
1493               /* elz: FIXME here should go the test about the compiler used
1494                  to compile the target. We want to issue the error
1495                  message only if the compiler used was HP's aCC.
1496                  If we used HP's cc, then there is no problem and no need
1497                  to return at this point */
1498               if (using_gcc == 0)       /* && compiler == aCC */
1499                 /* go see if the actual parameter is a variable of type
1500                    pointer to function or just a function */
1501                 if (args[i]->lval == not_lval)
1502                   {
1503                     char *arg_name;
1504                     if (find_pc_partial_function ((CORE_ADDR) args[i]->aligner.contents[0], &arg_name, NULL, NULL))
1505                       error ("\
1506 You cannot use function <%s> as argument. \n\
1507 You must use a pointer to function type variable. Command ignored.", arg_name);
1508                   }
1509     }
1510
1511   if (REG_STRUCT_HAS_ADDR_P ())
1512     {
1513       /* This is a machine like the sparc, where we may need to pass a
1514          pointer to the structure, not the structure itself.  */
1515       for (i = nargs - 1; i >= 0; i--)
1516         {
1517           struct type *arg_type = check_typedef (VALUE_TYPE (args[i]));
1518           if ((TYPE_CODE (arg_type) == TYPE_CODE_STRUCT
1519                || TYPE_CODE (arg_type) == TYPE_CODE_UNION
1520                || TYPE_CODE (arg_type) == TYPE_CODE_ARRAY
1521                || TYPE_CODE (arg_type) == TYPE_CODE_STRING
1522                || TYPE_CODE (arg_type) == TYPE_CODE_BITSTRING
1523                || TYPE_CODE (arg_type) == TYPE_CODE_SET
1524                || (TYPE_CODE (arg_type) == TYPE_CODE_FLT
1525                    && TYPE_LENGTH (arg_type) > 8)
1526                )
1527               && REG_STRUCT_HAS_ADDR (using_gcc, arg_type))
1528             {
1529               CORE_ADDR addr;
1530               int len;          /*  = TYPE_LENGTH (arg_type); */
1531               int aligned_len;
1532               arg_type = check_typedef (VALUE_ENCLOSING_TYPE (args[i]));
1533               len = TYPE_LENGTH (arg_type);
1534
1535               if (STACK_ALIGN_P ())
1536                 /* MVS 11/22/96: I think at least some of this
1537                    stack_align code is really broken.  Better to let
1538                    PUSH_ARGUMENTS adjust the stack in a target-defined
1539                    manner.  */
1540                 aligned_len = STACK_ALIGN (len);
1541               else
1542                 aligned_len = len;
1543               if (INNER_THAN (1, 2))
1544                 {
1545                   /* stack grows downward */
1546                   sp -= aligned_len;
1547                   /* ... so the address of the thing we push is the
1548                      stack pointer after we push it.  */
1549                   addr = sp;
1550                 }
1551               else
1552                 {
1553                   /* The stack grows up, so the address of the thing
1554                      we push is the stack pointer before we push it.  */
1555                   addr = sp;
1556                   sp += aligned_len;
1557                 }
1558               /* Push the structure.  */
1559               write_memory (addr, VALUE_CONTENTS_ALL (args[i]), len);
1560               /* The value we're going to pass is the address of the
1561                  thing we just pushed.  */
1562               /*args[i] = value_from_longest (lookup_pointer_type (value_type),
1563                 (LONGEST) addr); */
1564               args[i] = value_from_pointer (lookup_pointer_type (arg_type),
1565                                             addr);
1566             }
1567         }
1568     }
1569
1570
1571   /* Reserve space for the return structure to be written on the
1572      stack, if necessary */
1573
1574   if (struct_return)
1575     {
1576       int len = TYPE_LENGTH (value_type);
1577       if (STACK_ALIGN_P ())
1578         /* MVS 11/22/96: I think at least some of this stack_align
1579            code is really broken.  Better to let PUSH_ARGUMENTS adjust
1580            the stack in a target-defined manner.  */
1581         len = STACK_ALIGN (len);
1582       if (INNER_THAN (1, 2))
1583         {
1584           /* stack grows downward */
1585           sp -= len;
1586           struct_addr = sp;
1587         }
1588       else
1589         {
1590           /* stack grows upward */
1591           struct_addr = sp;
1592           sp += len;
1593         }
1594     }
1595
1596   /* elz: on HPPA no need for this extra alignment, maybe it is needed
1597      on other architectures. This is because all the alignment is
1598      taken care of in the above code (ifdef REG_STRUCT_HAS_ADDR) and
1599      in hppa_push_arguments */
1600   if (EXTRA_STACK_ALIGNMENT_NEEDED)
1601     {
1602       /* MVS 11/22/96: I think at least some of this stack_align code
1603          is really broken.  Better to let PUSH_ARGUMENTS adjust the
1604          stack in a target-defined manner.  */
1605       if (STACK_ALIGN_P () && INNER_THAN (1, 2))
1606         {
1607           /* If stack grows down, we must leave a hole at the top. */
1608           int len = 0;
1609
1610           for (i = nargs - 1; i >= 0; i--)
1611             len += TYPE_LENGTH (VALUE_ENCLOSING_TYPE (args[i]));
1612           if (CALL_DUMMY_STACK_ADJUST_P)
1613             len += CALL_DUMMY_STACK_ADJUST;
1614           sp -= STACK_ALIGN (len) - len;
1615         }
1616     }
1617
1618   sp = PUSH_ARGUMENTS (nargs, args, sp, struct_return, struct_addr);
1619
1620   if (PUSH_RETURN_ADDRESS_P ())
1621     /* for targets that use no CALL_DUMMY */
1622     /* There are a number of targets now which actually don't write
1623        any CALL_DUMMY instructions into the target, but instead just
1624        save the machine state, push the arguments, and jump directly
1625        to the callee function.  Since this doesn't actually involve
1626        executing a JSR/BSR instruction, the return address must be set
1627        up by hand, either by pushing onto the stack or copying into a
1628        return-address register as appropriate.  Formerly this has been
1629        done in PUSH_ARGUMENTS, but that's overloading its
1630        functionality a bit, so I'm making it explicit to do it here.  */
1631     sp = PUSH_RETURN_ADDRESS (real_pc, sp);
1632
1633   if (STACK_ALIGN_P () && !INNER_THAN (1, 2))
1634     {
1635       /* If stack grows up, we must leave a hole at the bottom, note
1636          that sp already has been advanced for the arguments!  */
1637       if (CALL_DUMMY_STACK_ADJUST_P)
1638         sp += CALL_DUMMY_STACK_ADJUST;
1639       sp = STACK_ALIGN (sp);
1640     }
1641
1642 /* XXX This seems wrong.  For stacks that grow down we shouldn't do
1643    anything here!  */
1644   /* MVS 11/22/96: I think at least some of this stack_align code is
1645      really broken.  Better to let PUSH_ARGUMENTS adjust the stack in
1646      a target-defined manner.  */
1647   if (CALL_DUMMY_STACK_ADJUST_P)
1648     if (INNER_THAN (1, 2))
1649       {
1650         /* stack grows downward */
1651         sp -= CALL_DUMMY_STACK_ADJUST;
1652       }
1653
1654   /* Store the address at which the structure is supposed to be
1655      written.  Note that this (and the code which reserved the space
1656      above) assumes that gcc was used to compile this function.  Since
1657      it doesn't cost us anything but space and if the function is pcc
1658      it will ignore this value, we will make that assumption.
1659
1660      Also note that on some machines (like the sparc) pcc uses a
1661      convention like gcc's.  */
1662
1663   if (struct_return)
1664     STORE_STRUCT_RETURN (struct_addr, sp);
1665
1666   /* Write the stack pointer.  This is here because the statements above
1667      might fool with it.  On SPARC, this write also stores the register
1668      window into the right place in the new stack frame, which otherwise
1669      wouldn't happen.  (See store_inferior_registers in sparc-nat.c.)  */
1670   write_sp (sp);
1671
1672   if (SAVE_DUMMY_FRAME_TOS_P ())
1673     SAVE_DUMMY_FRAME_TOS (sp);
1674
1675   {
1676     char *name;
1677     struct symbol *symbol;
1678
1679     name = NULL;
1680     symbol = find_pc_function (funaddr);
1681     if (symbol)
1682       {
1683         name = SYMBOL_SOURCE_NAME (symbol);
1684       }
1685     else
1686       {
1687         /* Try the minimal symbols.  */
1688         struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (funaddr);
1689
1690         if (msymbol)
1691           {
1692             name = SYMBOL_SOURCE_NAME (msymbol);
1693           }
1694       }
1695     if (name == NULL)
1696       {
1697         char format[80];
1698         sprintf (format, "at %s", local_hex_format ());
1699         name = alloca (80);
1700         /* FIXME-32x64: assumes funaddr fits in a long.  */
1701         sprintf (name, format, (unsigned long) funaddr);
1702       }
1703
1704     /* Execute the stack dummy routine, calling FUNCTION.
1705        When it is done, discard the empty frame
1706        after storing the contents of all regs into retbuf.  */
1707     rc = run_stack_dummy (real_pc + CALL_DUMMY_START_OFFSET, retbuf);
1708
1709     if (rc == 1)
1710       {
1711         /* We stopped inside the FUNCTION because of a random signal.
1712            Further execution of the FUNCTION is not allowed. */
1713
1714         if (unwind_on_signal_p)
1715           {
1716             /* The user wants the context restored. */
1717
1718             /* We must get back to the frame we were before the dummy call. */
1719             POP_FRAME;
1720
1721             /* FIXME: Insert a bunch of wrap_here; name can be very long if it's
1722                a C++ name with arguments and stuff.  */
1723             error ("\
1724 The program being debugged was signaled while in a function called from GDB.\n\
1725 GDB has restored the context to what it was before the call.\n\
1726 To change this behavior use \"set unwindonsignal off\"\n\
1727 Evaluation of the expression containing the function (%s) will be abandoned.",
1728                    name);
1729           }
1730         else
1731           {
1732             /* The user wants to stay in the frame where we stopped (default).*/
1733
1734             /* If we restored the inferior status (via the cleanup),
1735                we would print a spurious error message (Unable to
1736                restore previously selected frame), would write the
1737                registers from the inf_status (which is wrong), and
1738                would do other wrong things.  */
1739             discard_cleanups (inf_status_cleanup);
1740             discard_inferior_status (inf_status);
1741
1742             /* FIXME: Insert a bunch of wrap_here; name can be very long if it's
1743                a C++ name with arguments and stuff.  */
1744             error ("\
1745 The program being debugged was signaled while in a function called from GDB.\n\
1746 GDB remains in the frame where the signal was received.\n\
1747 To change this behavior use \"set unwindonsignal on\"\n\
1748 Evaluation of the expression containing the function (%s) will be abandoned.",
1749                    name);
1750           }
1751       }
1752
1753     if (rc == 2)
1754       {
1755         /* We hit a breakpoint inside the FUNCTION. */
1756
1757         /* If we restored the inferior status (via the cleanup), we
1758            would print a spurious error message (Unable to restore
1759            previously selected frame), would write the registers from
1760            the inf_status (which is wrong), and would do other wrong
1761            things.  */
1762         discard_cleanups (inf_status_cleanup);
1763         discard_inferior_status (inf_status);
1764
1765         /* The following error message used to say "The expression
1766            which contained the function call has been discarded."  It
1767            is a hard concept to explain in a few words.  Ideally, GDB
1768            would be able to resume evaluation of the expression when
1769            the function finally is done executing.  Perhaps someday
1770            this will be implemented (it would not be easy).  */
1771
1772         /* FIXME: Insert a bunch of wrap_here; name can be very long if it's
1773            a C++ name with arguments and stuff.  */
1774         error ("\
1775 The program being debugged stopped while in a function called from GDB.\n\
1776 When the function (%s) is done executing, GDB will silently\n\
1777 stop (instead of continuing to evaluate the expression containing\n\
1778 the function call).", name);
1779       }
1780
1781     /* If we get here the called FUNCTION run to completion. */
1782
1783     /* Restore the inferior status, via its cleanup.  At this stage,
1784        leave the RETBUF alone.  */
1785     do_cleanups (inf_status_cleanup);
1786
1787     /* Figure out the value returned by the function.  */
1788 /* elz: I defined this new macro for the hppa architecture only.
1789    this gives us a way to get the value returned by the function from the stack,
1790    at the same address we told the function to put it.
1791    We cannot assume on the pa that r28 still contains the address of the returned
1792    structure. Usually this will be overwritten by the callee.
1793    I don't know about other architectures, so I defined this macro
1794  */
1795
1796 #ifdef VALUE_RETURNED_FROM_STACK
1797     if (struct_return)
1798       {
1799         do_cleanups (retbuf_cleanup);
1800         return VALUE_RETURNED_FROM_STACK (value_type, struct_addr);
1801       }
1802 #endif
1803
1804     {
1805       struct value *retval = value_being_returned (value_type, retbuf, struct_return);
1806       do_cleanups (retbuf_cleanup);
1807       return retval;
1808     }
1809   }
1810 }
1811
1812 struct value *
1813 call_function_by_hand (struct value *function, int nargs, struct value **args)
1814 {
1815   if (CALL_DUMMY_P)
1816     {
1817       return hand_function_call (function, nargs, args);
1818     }
1819   else
1820     {
1821       error ("Cannot invoke functions on this machine.");
1822     }
1823 }
1824 \f
1825
1826
1827 /* Create a value for an array by allocating space in the inferior, copying
1828    the data into that space, and then setting up an array value.
1829
1830    The array bounds are set from LOWBOUND and HIGHBOUND, and the array is
1831    populated from the values passed in ELEMVEC.
1832
1833    The element type of the array is inherited from the type of the
1834    first element, and all elements must have the same size (though we
1835    don't currently enforce any restriction on their types). */
1836
1837 struct value *
1838 value_array (int lowbound, int highbound, struct value **elemvec)
1839 {
1840   int nelem;
1841   int idx;
1842   unsigned int typelength;
1843   struct value *val;
1844   struct type *rangetype;
1845   struct type *arraytype;
1846   CORE_ADDR addr;
1847
1848   /* Validate that the bounds are reasonable and that each of the elements
1849      have the same size. */
1850
1851   nelem = highbound - lowbound + 1;
1852   if (nelem <= 0)
1853     {
1854       error ("bad array bounds (%d, %d)", lowbound, highbound);
1855     }
1856   typelength = TYPE_LENGTH (VALUE_ENCLOSING_TYPE (elemvec[0]));
1857   for (idx = 1; idx < nelem; idx++)
1858     {
1859       if (TYPE_LENGTH (VALUE_ENCLOSING_TYPE (elemvec[idx])) != typelength)
1860         {
1861           error ("array elements must all be the same size");
1862         }
1863     }
1864
1865   rangetype = create_range_type ((struct type *) NULL, builtin_type_int,
1866                                  lowbound, highbound);
1867   arraytype = create_array_type ((struct type *) NULL,
1868                               VALUE_ENCLOSING_TYPE (elemvec[0]), rangetype);
1869
1870   if (!current_language->c_style_arrays)
1871     {
1872       val = allocate_value (arraytype);
1873       for (idx = 0; idx < nelem; idx++)
1874         {
1875           memcpy (VALUE_CONTENTS_ALL_RAW (val) + (idx * typelength),
1876                   VALUE_CONTENTS_ALL (elemvec[idx]),
1877                   typelength);
1878         }
1879       VALUE_BFD_SECTION (val) = VALUE_BFD_SECTION (elemvec[0]);
1880       return val;
1881     }
1882
1883   /* Allocate space to store the array in the inferior, and then initialize
1884      it by copying in each element.  FIXME:  Is it worth it to create a
1885      local buffer in which to collect each value and then write all the
1886      bytes in one operation? */
1887
1888   addr = allocate_space_in_inferior (nelem * typelength);
1889   for (idx = 0; idx < nelem; idx++)
1890     {
1891       write_memory (addr + (idx * typelength), VALUE_CONTENTS_ALL (elemvec[idx]),
1892                     typelength);
1893     }
1894
1895   /* Create the array type and set up an array value to be evaluated lazily. */
1896
1897   val = value_at_lazy (arraytype, addr, VALUE_BFD_SECTION (elemvec[0]));
1898   return (val);
1899 }
1900
1901 /* Create a value for a string constant by allocating space in the inferior,
1902    copying the data into that space, and returning the address with type
1903    TYPE_CODE_STRING.  PTR points to the string constant data; LEN is number
1904    of characters.
1905    Note that string types are like array of char types with a lower bound of
1906    zero and an upper bound of LEN - 1.  Also note that the string may contain
1907    embedded null bytes. */
1908
1909 struct value *
1910 value_string (char *ptr, int len)
1911 {
1912   struct value *val;
1913   int lowbound = current_language->string_lower_bound;
1914   struct type *rangetype = create_range_type ((struct type *) NULL,
1915                                               builtin_type_int,
1916                                               lowbound, len + lowbound - 1);
1917   struct type *stringtype
1918   = create_string_type ((struct type *) NULL, rangetype);
1919   CORE_ADDR addr;
1920
1921   if (current_language->c_style_arrays == 0)
1922     {
1923       val = allocate_value (stringtype);
1924       memcpy (VALUE_CONTENTS_RAW (val), ptr, len);
1925       return val;
1926     }
1927
1928
1929   /* Allocate space to store the string in the inferior, and then
1930      copy LEN bytes from PTR in gdb to that address in the inferior. */
1931
1932   addr = allocate_space_in_inferior (len);
1933   write_memory (addr, ptr, len);
1934
1935   val = value_at_lazy (stringtype, addr, NULL);
1936   return (val);
1937 }
1938
1939 struct value *
1940 value_bitstring (char *ptr, int len)
1941 {
1942   struct value *val;
1943   struct type *domain_type = create_range_type (NULL, builtin_type_int,
1944                                                 0, len - 1);
1945   struct type *type = create_set_type ((struct type *) NULL, domain_type);
1946   TYPE_CODE (type) = TYPE_CODE_BITSTRING;
1947   val = allocate_value (type);
1948   memcpy (VALUE_CONTENTS_RAW (val), ptr, TYPE_LENGTH (type));
1949   return val;
1950 }
1951 \f
1952 /* See if we can pass arguments in T2 to a function which takes arguments
1953    of types T1.  T1 is a list of NARGS arguments, and T2 is a NULL-terminated
1954    vector.  If some arguments need coercion of some sort, then the coerced
1955    values are written into T2.  Return value is 0 if the arguments could be
1956    matched, or the position at which they differ if not.
1957
1958    STATICP is nonzero if the T1 argument list came from a
1959    static member function.  T2 will still include the ``this'' pointer,
1960    but it will be skipped.
1961
1962    For non-static member functions, we ignore the first argument,
1963    which is the type of the instance variable.  This is because we want
1964    to handle calls with objects from derived classes.  This is not
1965    entirely correct: we should actually check to make sure that a
1966    requested operation is type secure, shouldn't we?  FIXME.  */
1967
1968 static int
1969 typecmp (int staticp, int varargs, int nargs,
1970          struct field t1[], struct value *t2[])
1971 {
1972   int i;
1973
1974   if (t2 == 0)
1975     internal_error (__FILE__, __LINE__, "typecmp: no argument list");
1976
1977   /* Skip ``this'' argument if applicable.  T2 will always include THIS.  */
1978   if (staticp)
1979     t2 ++;
1980
1981   for (i = 0;
1982        (i < nargs) && TYPE_CODE (t1[i].type) != TYPE_CODE_VOID;
1983        i++)
1984     {
1985       struct type *tt1, *tt2;
1986
1987       if (!t2[i])
1988         return i + 1;
1989
1990       tt1 = check_typedef (t1[i].type);
1991       tt2 = check_typedef (VALUE_TYPE (t2[i]));
1992
1993       if (TYPE_CODE (tt1) == TYPE_CODE_REF
1994       /* We should be doing hairy argument matching, as below.  */
1995           && (TYPE_CODE (check_typedef (TYPE_TARGET_TYPE (tt1))) == TYPE_CODE (tt2)))
1996         {
1997           if (TYPE_CODE (tt2) == TYPE_CODE_ARRAY)
1998             t2[i] = value_coerce_array (t2[i]);
1999           else
2000             t2[i] = value_addr (t2[i]);
2001           continue;
2002         }
2003
2004       /* djb - 20000715 - Until the new type structure is in the
2005          place, and we can attempt things like implicit conversions,
2006          we need to do this so you can take something like a map<const
2007          char *>, and properly access map["hello"], because the
2008          argument to [] will be a reference to a pointer to a char,
2009          and the argument will be a pointer to a char. */
2010       while ( TYPE_CODE(tt1) == TYPE_CODE_REF ||
2011               TYPE_CODE (tt1) == TYPE_CODE_PTR)
2012         {
2013           tt1 = check_typedef( TYPE_TARGET_TYPE(tt1) );
2014         }
2015       while ( TYPE_CODE(tt2) == TYPE_CODE_ARRAY ||
2016               TYPE_CODE(tt2) == TYPE_CODE_PTR ||
2017               TYPE_CODE(tt2) == TYPE_CODE_REF)
2018         {
2019           tt2 = check_typedef( TYPE_TARGET_TYPE(tt2) );
2020         }
2021       if (TYPE_CODE (tt1) == TYPE_CODE (tt2))
2022         continue;
2023       /* Array to pointer is a `trivial conversion' according to the ARM.  */
2024
2025       /* We should be doing much hairier argument matching (see section 13.2
2026          of the ARM), but as a quick kludge, just check for the same type
2027          code.  */
2028       if (TYPE_CODE (t1[i].type) != TYPE_CODE (VALUE_TYPE (t2[i])))
2029         return i + 1;
2030     }
2031   if (varargs || t2[i] == NULL)
2032     return 0;
2033   return i + 1;
2034 }
2035
2036 /* Helper function used by value_struct_elt to recurse through baseclasses.
2037    Look for a field NAME in ARG1. Adjust the address of ARG1 by OFFSET bytes,
2038    and search in it assuming it has (class) type TYPE.
2039    If found, return value, else return NULL.
2040
2041    If LOOKING_FOR_BASECLASS, then instead of looking for struct fields,
2042    look for a baseclass named NAME.  */
2043
2044 static struct value *
2045 search_struct_field (char *name, struct value *arg1, int offset,
2046                      register struct type *type, int looking_for_baseclass)
2047 {
2048   int i;
2049   int nbases = TYPE_N_BASECLASSES (type);
2050
2051   CHECK_TYPEDEF (type);
2052
2053   if (!looking_for_baseclass)
2054     for (i = TYPE_NFIELDS (type) - 1; i >= nbases; i--)
2055       {
2056         char *t_field_name = TYPE_FIELD_NAME (type, i);
2057
2058         if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
2059           {
2060             struct value *v;
2061             if (TYPE_FIELD_STATIC (type, i))
2062               {
2063                 v = value_static_field (type, i);
2064                 if (v == 0)
2065                   error ("field %s is nonexistent or has been optimised out",
2066                          name);
2067               }
2068             else
2069               {
2070                 v = value_primitive_field (arg1, offset, i, type);
2071                 if (v == 0)
2072                   error ("there is no field named %s", name);
2073               }
2074             return v;
2075           }
2076
2077         if (t_field_name
2078             && (t_field_name[0] == '\0'
2079                 || (TYPE_CODE (type) == TYPE_CODE_UNION
2080                     && (strcmp_iw (t_field_name, "else") == 0))))
2081           {
2082             struct type *field_type = TYPE_FIELD_TYPE (type, i);
2083             if (TYPE_CODE (field_type) == TYPE_CODE_UNION
2084                 || TYPE_CODE (field_type) == TYPE_CODE_STRUCT)
2085               {
2086                 /* Look for a match through the fields of an anonymous union,
2087                    or anonymous struct.  C++ provides anonymous unions.
2088
2089                    In the GNU Chill (OBSOLETE) implementation of
2090                    variant record types, each <alternative field> has
2091                    an (anonymous) union type, each member of the union
2092                    represents a <variant alternative>.  Each <variant
2093                    alternative> is represented as a struct, with a
2094                    member for each <variant field>.  */
2095
2096                 struct value *v;
2097                 int new_offset = offset;
2098
2099                 /* This is pretty gross.  In G++, the offset in an
2100                    anonymous union is relative to the beginning of the
2101                    enclosing struct.  In the GNU Chill (OBSOLETE)
2102                    implementation of variant records, the bitpos is
2103                    zero in an anonymous union field, so we have to add
2104                    the offset of the union here. */
2105                 if (TYPE_CODE (field_type) == TYPE_CODE_STRUCT
2106                     || (TYPE_NFIELDS (field_type) > 0
2107                         && TYPE_FIELD_BITPOS (field_type, 0) == 0))
2108                   new_offset += TYPE_FIELD_BITPOS (type, i) / 8;
2109
2110                 v = search_struct_field (name, arg1, new_offset, field_type,
2111                                          looking_for_baseclass);
2112                 if (v)
2113                   return v;
2114               }
2115           }
2116       }
2117
2118   for (i = 0; i < nbases; i++)
2119     {
2120       struct value *v;
2121       struct type *basetype = check_typedef (TYPE_BASECLASS (type, i));
2122       /* If we are looking for baseclasses, this is what we get when we
2123          hit them.  But it could happen that the base part's member name
2124          is not yet filled in.  */
2125       int found_baseclass = (looking_for_baseclass
2126                              && TYPE_BASECLASS_NAME (type, i) != NULL
2127                              && (strcmp_iw (name, TYPE_BASECLASS_NAME (type, i)) == 0));
2128
2129       if (BASETYPE_VIA_VIRTUAL (type, i))
2130         {
2131           int boffset;
2132           struct value *v2 = allocate_value (basetype);
2133
2134           boffset = baseclass_offset (type, i,
2135                                       VALUE_CONTENTS (arg1) + offset,
2136                                       VALUE_ADDRESS (arg1)
2137                                       + VALUE_OFFSET (arg1) + offset);
2138           if (boffset == -1)
2139             error ("virtual baseclass botch");
2140
2141           /* The virtual base class pointer might have been clobbered by the
2142              user program. Make sure that it still points to a valid memory
2143              location.  */
2144
2145           boffset += offset;
2146           if (boffset < 0 || boffset >= TYPE_LENGTH (type))
2147             {
2148               CORE_ADDR base_addr;
2149
2150               base_addr = VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1) + boffset;
2151               if (target_read_memory (base_addr, VALUE_CONTENTS_RAW (v2),
2152                                       TYPE_LENGTH (basetype)) != 0)
2153                 error ("virtual baseclass botch");
2154               VALUE_LVAL (v2) = lval_memory;
2155               VALUE_ADDRESS (v2) = base_addr;
2156             }
2157           else
2158             {
2159               VALUE_LVAL (v2) = VALUE_LVAL (arg1);
2160               VALUE_ADDRESS (v2) = VALUE_ADDRESS (arg1);
2161               VALUE_OFFSET (v2) = VALUE_OFFSET (arg1) + boffset;
2162               if (VALUE_LAZY (arg1))
2163                 VALUE_LAZY (v2) = 1;
2164               else
2165                 memcpy (VALUE_CONTENTS_RAW (v2),
2166                         VALUE_CONTENTS_RAW (arg1) + boffset,
2167                         TYPE_LENGTH (basetype));
2168             }
2169
2170           if (found_baseclass)
2171             return v2;
2172           v = search_struct_field (name, v2, 0, TYPE_BASECLASS (type, i),
2173                                    looking_for_baseclass);
2174         }
2175       else if (found_baseclass)
2176         v = value_primitive_field (arg1, offset, i, type);
2177       else
2178         v = search_struct_field (name, arg1,
2179                                offset + TYPE_BASECLASS_BITPOS (type, i) / 8,
2180                                  basetype, looking_for_baseclass);
2181       if (v)
2182         return v;
2183     }
2184   return NULL;
2185 }
2186
2187
2188 /* Return the offset (in bytes) of the virtual base of type BASETYPE
2189  * in an object pointed to by VALADDR (on the host), assumed to be of
2190  * type TYPE.  OFFSET is number of bytes beyond start of ARG to start
2191  * looking (in case VALADDR is the contents of an enclosing object).
2192  *
2193  * This routine recurses on the primary base of the derived class because
2194  * the virtual base entries of the primary base appear before the other
2195  * virtual base entries.
2196  *
2197  * If the virtual base is not found, a negative integer is returned.
2198  * The magnitude of the negative integer is the number of entries in
2199  * the virtual table to skip over (entries corresponding to various
2200  * ancestral classes in the chain of primary bases).
2201  *
2202  * Important: This assumes the HP / Taligent C++ runtime
2203  * conventions. Use baseclass_offset() instead to deal with g++
2204  * conventions.  */
2205
2206 void
2207 find_rt_vbase_offset (struct type *type, struct type *basetype, char *valaddr,
2208                       int offset, int *boffset_p, int *skip_p)
2209 {
2210   int boffset;                  /* offset of virtual base */
2211   int index;                    /* displacement to use in virtual table */
2212   int skip;
2213
2214   struct value *vp;
2215   CORE_ADDR vtbl;               /* the virtual table pointer */
2216   struct type *pbc;             /* the primary base class */
2217
2218   /* Look for the virtual base recursively in the primary base, first.
2219    * This is because the derived class object and its primary base
2220    * subobject share the primary virtual table.  */
2221
2222   boffset = 0;
2223   pbc = TYPE_PRIMARY_BASE (type);
2224   if (pbc)
2225     {
2226       find_rt_vbase_offset (pbc, basetype, valaddr, offset, &boffset, &skip);
2227       if (skip < 0)
2228         {
2229           *boffset_p = boffset;
2230           *skip_p = -1;
2231           return;
2232         }
2233     }
2234   else
2235     skip = 0;
2236
2237
2238   /* Find the index of the virtual base according to HP/Taligent
2239      runtime spec. (Depth-first, left-to-right.)  */
2240   index = virtual_base_index_skip_primaries (basetype, type);
2241
2242   if (index < 0)
2243     {
2244       *skip_p = skip + virtual_base_list_length_skip_primaries (type);
2245       *boffset_p = 0;
2246       return;
2247     }
2248
2249   /* pai: FIXME -- 32x64 possible problem */
2250   /* First word (4 bytes) in object layout is the vtable pointer */
2251   vtbl = *(CORE_ADDR *) (valaddr + offset);
2252
2253   /* Before the constructor is invoked, things are usually zero'd out. */
2254   if (vtbl == 0)
2255     error ("Couldn't find virtual table -- object may not be constructed yet.");
2256
2257
2258   /* Find virtual base's offset -- jump over entries for primary base
2259    * ancestors, then use the index computed above.  But also adjust by
2260    * HP_ACC_VBASE_START for the vtable slots before the start of the
2261    * virtual base entries.  Offset is negative -- virtual base entries
2262    * appear _before_ the address point of the virtual table. */
2263
2264   /* pai: FIXME -- 32x64 problem, if word = 8 bytes, change multiplier
2265      & use long type */
2266
2267   /* epstein : FIXME -- added param for overlay section. May not be correct */
2268   vp = value_at (builtin_type_int, vtbl + 4 * (-skip - index - HP_ACC_VBASE_START), NULL);
2269   boffset = value_as_long (vp);
2270   *skip_p = -1;
2271   *boffset_p = boffset;
2272   return;
2273 }
2274
2275
2276 /* Helper function used by value_struct_elt to recurse through baseclasses.
2277    Look for a field NAME in ARG1. Adjust the address of ARG1 by OFFSET bytes,
2278    and search in it assuming it has (class) type TYPE.
2279    If found, return value, else if name matched and args not return (value)-1,
2280    else return NULL. */
2281
2282 static struct value *
2283 search_struct_method (char *name, struct value **arg1p,
2284                       struct value **args, int offset,
2285                       int *static_memfuncp, register struct type *type)
2286 {
2287   int i;
2288   struct value *v;
2289   int name_matched = 0;
2290   char dem_opname[64];
2291
2292   CHECK_TYPEDEF (type);
2293   for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
2294     {
2295       char *t_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
2296       /* FIXME!  May need to check for ARM demangling here */
2297       if (strncmp (t_field_name, "__", 2) == 0 ||
2298           strncmp (t_field_name, "op", 2) == 0 ||
2299           strncmp (t_field_name, "type", 4) == 0)
2300         {
2301           if (cplus_demangle_opname (t_field_name, dem_opname, DMGL_ANSI))
2302             t_field_name = dem_opname;
2303           else if (cplus_demangle_opname (t_field_name, dem_opname, 0))
2304             t_field_name = dem_opname;
2305         }
2306       if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
2307         {
2308           int j = TYPE_FN_FIELDLIST_LENGTH (type, i) - 1;
2309           struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
2310           name_matched = 1;
2311
2312           if (j > 0 && args == 0)
2313             error ("cannot resolve overloaded method `%s': no arguments supplied", name);
2314           else if (j == 0 && args == 0)
2315             {
2316               if (TYPE_FN_FIELD_STUB (f, j))
2317                 check_stub_method (type, i, j);
2318               v = value_fn_field (arg1p, f, j, type, offset);
2319               if (v != NULL)
2320                 return v;
2321             }
2322           else
2323             while (j >= 0)
2324               {
2325                 if (TYPE_FN_FIELD_STUB (f, j))
2326                   check_stub_method (type, i, j);
2327                 if (!typecmp (TYPE_FN_FIELD_STATIC_P (f, j),
2328                               TYPE_VARARGS (TYPE_FN_FIELD_TYPE (f, j)),
2329                               TYPE_NFIELDS (TYPE_FN_FIELD_TYPE (f, j)),
2330                               TYPE_FN_FIELD_ARGS (f, j), args))
2331                   {
2332                     if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
2333                       return value_virtual_fn_field (arg1p, f, j, type, offset);
2334                     if (TYPE_FN_FIELD_STATIC_P (f, j) && static_memfuncp)
2335                       *static_memfuncp = 1;
2336                     v = value_fn_field (arg1p, f, j, type, offset);
2337                     if (v != NULL)
2338                       return v;       
2339                   }
2340                 j--;
2341               }
2342         }
2343     }
2344
2345   for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
2346     {
2347       int base_offset;
2348
2349       if (BASETYPE_VIA_VIRTUAL (type, i))
2350         {
2351           if (TYPE_HAS_VTABLE (type))
2352             {
2353               /* HP aCC compiled type, search for virtual base offset
2354                  according to HP/Taligent runtime spec.  */
2355               int skip;
2356               find_rt_vbase_offset (type, TYPE_BASECLASS (type, i),
2357                                     VALUE_CONTENTS_ALL (*arg1p),
2358                                     offset + VALUE_EMBEDDED_OFFSET (*arg1p),
2359                                     &base_offset, &skip);
2360               if (skip >= 0)
2361                 error ("Virtual base class offset not found in vtable");
2362             }
2363           else
2364             {
2365               struct type *baseclass = check_typedef (TYPE_BASECLASS (type, i));
2366               char *base_valaddr;
2367
2368               /* The virtual base class pointer might have been clobbered by the
2369                  user program. Make sure that it still points to a valid memory
2370                  location.  */
2371
2372               if (offset < 0 || offset >= TYPE_LENGTH (type))
2373                 {
2374                   base_valaddr = (char *) alloca (TYPE_LENGTH (baseclass));
2375                   if (target_read_memory (VALUE_ADDRESS (*arg1p)
2376                                           + VALUE_OFFSET (*arg1p) + offset,
2377                                           base_valaddr,
2378                                           TYPE_LENGTH (baseclass)) != 0)
2379                     error ("virtual baseclass botch");
2380                 }
2381               else
2382                 base_valaddr = VALUE_CONTENTS (*arg1p) + offset;
2383
2384               base_offset =
2385                 baseclass_offset (type, i, base_valaddr,
2386                                   VALUE_ADDRESS (*arg1p)
2387                                   + VALUE_OFFSET (*arg1p) + offset);
2388               if (base_offset == -1)
2389                 error ("virtual baseclass botch");
2390             }
2391         }
2392       else
2393         {
2394           base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
2395         }
2396       v = search_struct_method (name, arg1p, args, base_offset + offset,
2397                                 static_memfuncp, TYPE_BASECLASS (type, i));
2398       if (v == (struct value *) - 1)
2399         {
2400           name_matched = 1;
2401         }
2402       else if (v)
2403         {
2404 /* FIXME-bothner:  Why is this commented out?  Why is it here?  */
2405 /*        *arg1p = arg1_tmp; */
2406           return v;
2407         }
2408     }
2409   if (name_matched)
2410     return (struct value *) - 1;
2411   else
2412     return NULL;
2413 }
2414
2415 /* Given *ARGP, a value of type (pointer to a)* structure/union,
2416    extract the component named NAME from the ultimate target structure/union
2417    and return it as a value with its appropriate type.
2418    ERR is used in the error message if *ARGP's type is wrong.
2419
2420    C++: ARGS is a list of argument types to aid in the selection of
2421    an appropriate method. Also, handle derived types.
2422
2423    STATIC_MEMFUNCP, if non-NULL, points to a caller-supplied location
2424    where the truthvalue of whether the function that was resolved was
2425    a static member function or not is stored.
2426
2427    ERR is an error message to be printed in case the field is not found.  */
2428
2429 struct value *
2430 value_struct_elt (struct value **argp, struct value **args,
2431                   char *name, int *static_memfuncp, char *err)
2432 {
2433   register struct type *t;
2434   struct value *v;
2435
2436   COERCE_ARRAY (*argp);
2437
2438   t = check_typedef (VALUE_TYPE (*argp));
2439
2440   /* Follow pointers until we get to a non-pointer.  */
2441
2442   while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
2443     {
2444       *argp = value_ind (*argp);
2445       /* Don't coerce fn pointer to fn and then back again!  */
2446       if (TYPE_CODE (VALUE_TYPE (*argp)) != TYPE_CODE_FUNC)
2447         COERCE_ARRAY (*argp);
2448       t = check_typedef (VALUE_TYPE (*argp));
2449     }
2450
2451   if (TYPE_CODE (t) == TYPE_CODE_MEMBER)
2452     error ("not implemented: member type in value_struct_elt");
2453
2454   if (TYPE_CODE (t) != TYPE_CODE_STRUCT
2455       && TYPE_CODE (t) != TYPE_CODE_UNION)
2456     error ("Attempt to extract a component of a value that is not a %s.", err);
2457
2458   /* Assume it's not, unless we see that it is.  */
2459   if (static_memfuncp)
2460     *static_memfuncp = 0;
2461
2462   if (!args)
2463     {
2464       /* if there are no arguments ...do this...  */
2465
2466       /* Try as a field first, because if we succeed, there
2467          is less work to be done.  */
2468       v = search_struct_field (name, *argp, 0, t, 0);
2469       if (v)
2470         return v;
2471
2472       /* C++: If it was not found as a data field, then try to
2473          return it as a pointer to a method.  */
2474
2475       if (destructor_name_p (name, t))
2476         error ("Cannot get value of destructor");
2477
2478       v = search_struct_method (name, argp, args, 0, static_memfuncp, t);
2479
2480       if (v == (struct value *) - 1)
2481         error ("Cannot take address of a method");
2482       else if (v == 0)
2483         {
2484           if (TYPE_NFN_FIELDS (t))
2485             error ("There is no member or method named %s.", name);
2486           else
2487             error ("There is no member named %s.", name);
2488         }
2489       return v;
2490     }
2491
2492   if (destructor_name_p (name, t))
2493     {
2494       if (!args[1])
2495         {
2496           /* Destructors are a special case.  */
2497           int m_index, f_index;
2498
2499           v = NULL;
2500           if (get_destructor_fn_field (t, &m_index, &f_index))
2501             {
2502               v = value_fn_field (NULL, TYPE_FN_FIELDLIST1 (t, m_index),
2503                                   f_index, NULL, 0);
2504             }
2505           if (v == NULL)
2506             error ("could not find destructor function named %s.", name);
2507           else
2508             return v;
2509         }
2510       else
2511         {
2512           error ("destructor should not have any argument");
2513         }
2514     }
2515   else
2516     v = search_struct_method (name, argp, args, 0, static_memfuncp, t);
2517   
2518   if (v == (struct value *) - 1)
2519     {
2520       error ("One of the arguments you tried to pass to %s could not be converted to what the function wants.", name);
2521     }
2522   else if (v == 0)
2523     {
2524       /* See if user tried to invoke data as function.  If so,
2525          hand it back.  If it's not callable (i.e., a pointer to function),
2526          gdb should give an error.  */
2527       v = search_struct_field (name, *argp, 0, t, 0);
2528     }
2529
2530   if (!v)
2531     error ("Structure has no component named %s.", name);
2532   return v;
2533 }
2534
2535 /* Search through the methods of an object (and its bases)
2536  * to find a specified method. Return the pointer to the
2537  * fn_field list of overloaded instances.
2538  * Helper function for value_find_oload_list.
2539  * ARGP is a pointer to a pointer to a value (the object)
2540  * METHOD is a string containing the method name
2541  * OFFSET is the offset within the value
2542  * TYPE is the assumed type of the object
2543  * NUM_FNS is the number of overloaded instances
2544  * BASETYPE is set to the actual type of the subobject where the method is found
2545  * BOFFSET is the offset of the base subobject where the method is found */
2546
2547 static struct fn_field *
2548 find_method_list (struct value **argp, char *method, int offset,
2549                   struct type *type, int *num_fns,
2550                   struct type **basetype, int *boffset)
2551 {
2552   int i;
2553   struct fn_field *f;
2554   CHECK_TYPEDEF (type);
2555
2556   *num_fns = 0;
2557
2558   /* First check in object itself */
2559   for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
2560     {
2561       /* pai: FIXME What about operators and type conversions? */
2562       char *fn_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
2563       if (fn_field_name && (strcmp_iw (fn_field_name, method) == 0))
2564         {
2565           /* Resolve any stub methods.  */
2566           int len = TYPE_FN_FIELDLIST_LENGTH (type, i);
2567           struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
2568           int j;
2569
2570           *num_fns = len;
2571           *basetype = type;
2572           *boffset = offset;
2573
2574           for (j = 0; j < len; j++)
2575             {
2576               if (TYPE_FN_FIELD_STUB (f, j))
2577                 check_stub_method (type, i, j);
2578             }
2579
2580           return f;
2581         }
2582     }
2583
2584   /* Not found in object, check in base subobjects */
2585   for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
2586     {
2587       int base_offset;
2588       if (BASETYPE_VIA_VIRTUAL (type, i))
2589         {
2590           if (TYPE_HAS_VTABLE (type))
2591             {
2592               /* HP aCC compiled type, search for virtual base offset
2593                * according to HP/Taligent runtime spec.  */
2594               int skip;
2595               find_rt_vbase_offset (type, TYPE_BASECLASS (type, i),
2596                                     VALUE_CONTENTS_ALL (*argp),
2597                                     offset + VALUE_EMBEDDED_OFFSET (*argp),
2598                                     &base_offset, &skip);
2599               if (skip >= 0)
2600                 error ("Virtual base class offset not found in vtable");
2601             }
2602           else
2603             {
2604               /* probably g++ runtime model */
2605               base_offset = VALUE_OFFSET (*argp) + offset;
2606               base_offset =
2607                 baseclass_offset (type, i,
2608                                   VALUE_CONTENTS (*argp) + base_offset,
2609                                   VALUE_ADDRESS (*argp) + base_offset);
2610               if (base_offset == -1)
2611                 error ("virtual baseclass botch");
2612             }
2613         }
2614       else
2615         /* non-virtual base, simply use bit position from debug info */
2616         {
2617           base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
2618         }
2619       f = find_method_list (argp, method, base_offset + offset,
2620                             TYPE_BASECLASS (type, i), num_fns, basetype,
2621                             boffset);
2622       if (f)
2623         return f;
2624     }
2625   return NULL;
2626 }
2627
2628 /* Return the list of overloaded methods of a specified name.
2629  * ARGP is a pointer to a pointer to a value (the object)
2630  * METHOD is the method name
2631  * OFFSET is the offset within the value contents
2632  * NUM_FNS is the number of overloaded instances
2633  * BASETYPE is set to the type of the base subobject that defines the method
2634  * BOFFSET is the offset of the base subobject which defines the method */
2635
2636 struct fn_field *
2637 value_find_oload_method_list (struct value **argp, char *method, int offset,
2638                               int *num_fns, struct type **basetype,
2639                               int *boffset)
2640 {
2641   struct type *t;
2642
2643   t = check_typedef (VALUE_TYPE (*argp));
2644
2645   /* code snarfed from value_struct_elt */
2646   while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
2647     {
2648       *argp = value_ind (*argp);
2649       /* Don't coerce fn pointer to fn and then back again!  */
2650       if (TYPE_CODE (VALUE_TYPE (*argp)) != TYPE_CODE_FUNC)
2651         COERCE_ARRAY (*argp);
2652       t = check_typedef (VALUE_TYPE (*argp));
2653     }
2654
2655   if (TYPE_CODE (t) == TYPE_CODE_MEMBER)
2656     error ("Not implemented: member type in value_find_oload_lis");
2657
2658   if (TYPE_CODE (t) != TYPE_CODE_STRUCT
2659       && TYPE_CODE (t) != TYPE_CODE_UNION)
2660     error ("Attempt to extract a component of a value that is not a struct or union");
2661
2662   return find_method_list (argp, method, 0, t, num_fns, basetype, boffset);
2663 }
2664
2665 /* Given an array of argument types (ARGTYPES) (which includes an
2666    entry for "this" in the case of C++ methods), the number of
2667    arguments NARGS, the NAME of a function whether it's a method or
2668    not (METHOD), and the degree of laxness (LAX) in conforming to
2669    overload resolution rules in ANSI C++, find the best function that
2670    matches on the argument types according to the overload resolution
2671    rules.
2672
2673    In the case of class methods, the parameter OBJ is an object value
2674    in which to search for overloaded methods.
2675
2676    In the case of non-method functions, the parameter FSYM is a symbol
2677    corresponding to one of the overloaded functions.
2678
2679    Return value is an integer: 0 -> good match, 10 -> debugger applied
2680    non-standard coercions, 100 -> incompatible.
2681
2682    If a method is being searched for, VALP will hold the value.
2683    If a non-method is being searched for, SYMP will hold the symbol for it.
2684
2685    If a method is being searched for, and it is a static method,
2686    then STATICP will point to a non-zero value.
2687
2688    Note: This function does *not* check the value of
2689    overload_resolution.  Caller must check it to see whether overload
2690    resolution is permitted.
2691  */
2692
2693 int
2694 find_overload_match (struct type **arg_types, int nargs, char *name, int method,
2695                      int lax, struct value **objp, struct symbol *fsym,
2696                      struct value **valp, struct symbol **symp, int *staticp)
2697 {
2698   int nparms;
2699   struct type **parm_types;
2700   int champ_nparms = 0;
2701   struct value *obj = (objp ? *objp : NULL);
2702
2703   short oload_champ = -1;       /* Index of best overloaded function */
2704   short oload_ambiguous = 0;    /* Current ambiguity state for overload resolution */
2705   /* 0 => no ambiguity, 1 => two good funcs, 2 => incomparable funcs */
2706   short oload_ambig_champ = -1; /* 2nd contender for best match */
2707   short oload_non_standard = 0; /* did we have to use non-standard conversions? */
2708   short oload_incompatible = 0; /* are args supplied incompatible with any function? */
2709
2710   struct badness_vector *bv;    /* A measure of how good an overloaded instance is */
2711   struct badness_vector *oload_champ_bv = NULL;         /* The measure for the current best match */
2712
2713   struct value *temp = obj;
2714   struct fn_field *fns_ptr = NULL;      /* For methods, the list of overloaded methods */
2715   struct symbol **oload_syms = NULL;    /* For non-methods, the list of overloaded function symbols */
2716   int num_fns = 0;              /* Number of overloaded instances being considered */
2717   struct type *basetype = NULL;
2718   int boffset;
2719   register int jj;
2720   register int ix;
2721   int static_offset;
2722   struct cleanup *cleanups = NULL;
2723
2724   char *obj_type_name = NULL;
2725   char *func_name = NULL;
2726
2727   /* Get the list of overloaded methods or functions */
2728   if (method)
2729     {
2730       obj_type_name = TYPE_NAME (VALUE_TYPE (obj));
2731       /* Hack: evaluate_subexp_standard often passes in a pointer
2732          value rather than the object itself, so try again */
2733       if ((!obj_type_name || !*obj_type_name) &&
2734           (TYPE_CODE (VALUE_TYPE (obj)) == TYPE_CODE_PTR))
2735         obj_type_name = TYPE_NAME (TYPE_TARGET_TYPE (VALUE_TYPE (obj)));
2736
2737       fns_ptr = value_find_oload_method_list (&temp, name, 0,
2738                                               &num_fns,
2739                                               &basetype, &boffset);
2740       if (!fns_ptr || !num_fns)
2741         error ("Couldn't find method %s%s%s",
2742                obj_type_name,
2743                (obj_type_name && *obj_type_name) ? "::" : "",
2744                name);
2745       /* If we are dealing with stub method types, they should have
2746          been resolved by find_method_list via value_find_oload_method_list
2747          above.  */
2748       gdb_assert (TYPE_DOMAIN_TYPE (fns_ptr[0].type) != NULL);
2749     }
2750   else
2751     {
2752       int i = -1;
2753       func_name = cplus_demangle (SYMBOL_NAME (fsym), DMGL_NO_OPTS);
2754
2755       /* If the name is NULL this must be a C-style function.
2756          Just return the same symbol. */
2757       if (!func_name)
2758         {
2759           *symp = fsym;
2760           return 0;
2761         }
2762
2763       oload_syms = make_symbol_overload_list (fsym);
2764       cleanups = make_cleanup (xfree, oload_syms);
2765       while (oload_syms[++i])
2766         num_fns++;
2767       if (!num_fns)
2768         error ("Couldn't find function %s", func_name);
2769     }
2770
2771   oload_champ_bv = NULL;
2772
2773   /* Consider each candidate in turn */
2774   for (ix = 0; ix < num_fns; ix++)
2775     {
2776       static_offset = 0;
2777       if (method)
2778         {
2779           if (TYPE_FN_FIELD_STATIC_P (fns_ptr, ix))
2780             static_offset = 1;
2781           nparms = TYPE_NFIELDS (TYPE_FN_FIELD_TYPE (fns_ptr, ix));
2782         }
2783       else
2784         {
2785           /* If it's not a method, this is the proper place */
2786           nparms=TYPE_NFIELDS(SYMBOL_TYPE(oload_syms[ix]));
2787         }
2788
2789       /* Prepare array of parameter types */
2790       parm_types = (struct type **) xmalloc (nparms * (sizeof (struct type *)));
2791       for (jj = 0; jj < nparms; jj++)
2792         parm_types[jj] = (method
2793                           ? (TYPE_FN_FIELD_ARGS (fns_ptr, ix)[jj].type)
2794                           : TYPE_FIELD_TYPE (SYMBOL_TYPE (oload_syms[ix]), jj));
2795
2796       /* Compare parameter types to supplied argument types.  Skip THIS for
2797          static methods.  */
2798       bv = rank_function (parm_types, nparms, arg_types + static_offset,
2799                           nargs - static_offset);
2800
2801       if (!oload_champ_bv)
2802         {
2803           oload_champ_bv = bv;
2804           oload_champ = 0;
2805           champ_nparms = nparms;
2806         }
2807       else
2808         /* See whether current candidate is better or worse than previous best */
2809         switch (compare_badness (bv, oload_champ_bv))
2810           {
2811           case 0:
2812             oload_ambiguous = 1;        /* top two contenders are equally good */
2813             oload_ambig_champ = ix;
2814             break;
2815           case 1:
2816             oload_ambiguous = 2;        /* incomparable top contenders */
2817             oload_ambig_champ = ix;
2818             break;
2819           case 2:
2820             oload_champ_bv = bv;        /* new champion, record details */
2821             oload_ambiguous = 0;
2822             oload_champ = ix;
2823             oload_ambig_champ = -1;
2824             champ_nparms = nparms;
2825             break;
2826           case 3:
2827           default:
2828             break;
2829           }
2830       xfree (parm_types);
2831       if (overload_debug)
2832         {
2833           if (method)
2834             fprintf_filtered (gdb_stderr,"Overloaded method instance %s, # of parms %d\n", fns_ptr[ix].physname, nparms);
2835           else
2836             fprintf_filtered (gdb_stderr,"Overloaded function instance %s # of parms %d\n", SYMBOL_DEMANGLED_NAME (oload_syms[ix]), nparms);
2837           for (jj = 0; jj < nargs - static_offset; jj++)
2838             fprintf_filtered (gdb_stderr,"...Badness @ %d : %d\n", jj, bv->rank[jj]);
2839           fprintf_filtered (gdb_stderr,"Overload resolution champion is %d, ambiguous? %d\n", oload_champ, oload_ambiguous);
2840         }
2841     }                           /* end loop over all candidates */
2842   /* NOTE: dan/2000-03-10: Seems to be a better idea to just pick one
2843      if they have the exact same goodness. This is because there is no
2844      way to differentiate based on return type, which we need to in
2845      cases like overloads of .begin() <It's both const and non-const> */
2846 #if 0
2847   if (oload_ambiguous)
2848     {
2849       if (method)
2850         error ("Cannot resolve overloaded method %s%s%s to unique instance; disambiguate by specifying function signature",
2851                obj_type_name,
2852                (obj_type_name && *obj_type_name) ? "::" : "",
2853                name);
2854       else
2855         error ("Cannot resolve overloaded function %s to unique instance; disambiguate by specifying function signature",
2856                func_name);
2857     }
2858 #endif
2859
2860   /* Check how bad the best match is.  */
2861   static_offset = 0;
2862   if (method && TYPE_FN_FIELD_STATIC_P (fns_ptr, oload_champ))
2863     static_offset = 1;
2864   for (ix = 1; ix <= nargs - static_offset; ix++)
2865     {
2866       if (oload_champ_bv->rank[ix] >= 100)
2867         oload_incompatible = 1; /* truly mismatched types */
2868
2869       else if (oload_champ_bv->rank[ix] >= 10)
2870         oload_non_standard = 1; /* non-standard type conversions needed */
2871     }
2872   if (oload_incompatible)
2873     {
2874       if (method)
2875         error ("Cannot resolve method %s%s%s to any overloaded instance",
2876                obj_type_name,
2877                (obj_type_name && *obj_type_name) ? "::" : "",
2878                name);
2879       else
2880         error ("Cannot resolve function %s to any overloaded instance",
2881                func_name);
2882     }
2883   else if (oload_non_standard)
2884     {
2885       if (method)
2886         warning ("Using non-standard conversion to match method %s%s%s to supplied arguments",
2887                  obj_type_name,
2888                  (obj_type_name && *obj_type_name) ? "::" : "",
2889                  name);
2890       else
2891         warning ("Using non-standard conversion to match function %s to supplied arguments",
2892                  func_name);
2893     }
2894
2895   if (method)
2896     {
2897       if (staticp && TYPE_FN_FIELD_STATIC_P (fns_ptr, oload_champ))
2898         *staticp = 1;
2899       else if (staticp)
2900         *staticp = 0;
2901       if (TYPE_FN_FIELD_VIRTUAL_P (fns_ptr, oload_champ))
2902         *valp = value_virtual_fn_field (&temp, fns_ptr, oload_champ, basetype, boffset);
2903       else
2904         *valp = value_fn_field (&temp, fns_ptr, oload_champ, basetype, boffset);
2905     }
2906   else
2907     {
2908       *symp = oload_syms[oload_champ];
2909       xfree (func_name);
2910     }
2911
2912   if (objp)
2913     {
2914       if (TYPE_CODE (VALUE_TYPE (temp)) != TYPE_CODE_PTR
2915           && TYPE_CODE (VALUE_TYPE (*objp)) == TYPE_CODE_PTR)
2916         {
2917           temp = value_addr (temp);
2918         }
2919       *objp = temp;
2920     }
2921   if (cleanups != NULL)
2922     do_cleanups (cleanups);
2923
2924   return oload_incompatible ? 100 : (oload_non_standard ? 10 : 0);
2925 }
2926
2927 /* C++: return 1 is NAME is a legitimate name for the destructor
2928    of type TYPE.  If TYPE does not have a destructor, or
2929    if NAME is inappropriate for TYPE, an error is signaled.  */
2930 int
2931 destructor_name_p (const char *name, const struct type *type)
2932 {
2933   /* destructors are a special case.  */
2934
2935   if (name[0] == '~')
2936     {
2937       char *dname = type_name_no_tag (type);
2938       char *cp = strchr (dname, '<');
2939       unsigned int len;
2940
2941       /* Do not compare the template part for template classes.  */
2942       if (cp == NULL)
2943         len = strlen (dname);
2944       else
2945         len = cp - dname;
2946       if (strlen (name + 1) != len || !STREQN (dname, name + 1, len))
2947         error ("name of destructor must equal name of class");
2948       else
2949         return 1;
2950     }
2951   return 0;
2952 }
2953
2954 /* Helper function for check_field: Given TYPE, a structure/union,
2955    return 1 if the component named NAME from the ultimate
2956    target structure/union is defined, otherwise, return 0. */
2957
2958 static int
2959 check_field_in (register struct type *type, const char *name)
2960 {
2961   register int i;
2962
2963   for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
2964     {
2965       char *t_field_name = TYPE_FIELD_NAME (type, i);
2966       if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
2967         return 1;
2968     }
2969
2970   /* C++: If it was not found as a data field, then try to
2971      return it as a pointer to a method.  */
2972
2973   /* Destructors are a special case.  */
2974   if (destructor_name_p (name, type))
2975     {
2976       int m_index, f_index;
2977
2978       return get_destructor_fn_field (type, &m_index, &f_index);
2979     }
2980
2981   for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; --i)
2982     {
2983       if (strcmp_iw (TYPE_FN_FIELDLIST_NAME (type, i), name) == 0)
2984         return 1;
2985     }
2986
2987   for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
2988     if (check_field_in (TYPE_BASECLASS (type, i), name))
2989       return 1;
2990
2991   return 0;
2992 }
2993
2994
2995 /* C++: Given ARG1, a value of type (pointer to a)* structure/union,
2996    return 1 if the component named NAME from the ultimate
2997    target structure/union is defined, otherwise, return 0.  */
2998
2999 int
3000 check_field (struct value *arg1, const char *name)
3001 {
3002   register struct type *t;
3003
3004   COERCE_ARRAY (arg1);
3005
3006   t = VALUE_TYPE (arg1);
3007
3008   /* Follow pointers until we get to a non-pointer.  */
3009
3010   for (;;)
3011     {
3012       CHECK_TYPEDEF (t);
3013       if (TYPE_CODE (t) != TYPE_CODE_PTR && TYPE_CODE (t) != TYPE_CODE_REF)
3014         break;
3015       t = TYPE_TARGET_TYPE (t);
3016     }
3017
3018   if (TYPE_CODE (t) == TYPE_CODE_MEMBER)
3019     error ("not implemented: member type in check_field");
3020
3021   if (TYPE_CODE (t) != TYPE_CODE_STRUCT
3022       && TYPE_CODE (t) != TYPE_CODE_UNION)
3023     error ("Internal error: `this' is not an aggregate");
3024
3025   return check_field_in (t, name);
3026 }
3027
3028 /* C++: Given an aggregate type CURTYPE, and a member name NAME,
3029    return the address of this member as a "pointer to member"
3030    type.  If INTYPE is non-null, then it will be the type
3031    of the member we are looking for.  This will help us resolve
3032    "pointers to member functions".  This function is used
3033    to resolve user expressions of the form "DOMAIN::NAME".  */
3034
3035 struct value *
3036 value_struct_elt_for_reference (struct type *domain, int offset,
3037                                 struct type *curtype, char *name,
3038                                 struct type *intype)
3039 {
3040   register struct type *t = curtype;
3041   register int i;
3042   struct value *v;
3043
3044   if (TYPE_CODE (t) != TYPE_CODE_STRUCT
3045       && TYPE_CODE (t) != TYPE_CODE_UNION)
3046     error ("Internal error: non-aggregate type to value_struct_elt_for_reference");
3047
3048   for (i = TYPE_NFIELDS (t) - 1; i >= TYPE_N_BASECLASSES (t); i--)
3049     {
3050       char *t_field_name = TYPE_FIELD_NAME (t, i);
3051
3052       if (t_field_name && STREQ (t_field_name, name))
3053         {
3054           if (TYPE_FIELD_STATIC (t, i))
3055             {
3056               v = value_static_field (t, i);
3057               if (v == NULL)
3058                 error ("static field %s has been optimized out",
3059                        name);
3060               return v;
3061             }
3062           if (TYPE_FIELD_PACKED (t, i))
3063             error ("pointers to bitfield members not allowed");
3064
3065           return value_from_longest
3066             (lookup_reference_type (lookup_member_type (TYPE_FIELD_TYPE (t, i),
3067                                                         domain)),
3068              offset + (LONGEST) (TYPE_FIELD_BITPOS (t, i) >> 3));
3069         }
3070     }
3071
3072   /* C++: If it was not found as a data field, then try to
3073      return it as a pointer to a method.  */
3074
3075   /* Destructors are a special case.  */
3076   if (destructor_name_p (name, t))
3077     {
3078       error ("member pointers to destructors not implemented yet");
3079     }
3080
3081   /* Perform all necessary dereferencing.  */
3082   while (intype && TYPE_CODE (intype) == TYPE_CODE_PTR)
3083     intype = TYPE_TARGET_TYPE (intype);
3084
3085   for (i = TYPE_NFN_FIELDS (t) - 1; i >= 0; --i)
3086     {
3087       char *t_field_name = TYPE_FN_FIELDLIST_NAME (t, i);
3088       char dem_opname[64];
3089
3090       if (strncmp (t_field_name, "__", 2) == 0 ||
3091           strncmp (t_field_name, "op", 2) == 0 ||
3092           strncmp (t_field_name, "type", 4) == 0)
3093         {
3094           if (cplus_demangle_opname (t_field_name, dem_opname, DMGL_ANSI))
3095             t_field_name = dem_opname;
3096           else if (cplus_demangle_opname (t_field_name, dem_opname, 0))
3097             t_field_name = dem_opname;
3098         }
3099       if (t_field_name && STREQ (t_field_name, name))
3100         {
3101           int j = TYPE_FN_FIELDLIST_LENGTH (t, i);
3102           struct fn_field *f = TYPE_FN_FIELDLIST1 (t, i);
3103
3104           if (intype == 0 && j > 1)
3105             error ("non-unique member `%s' requires type instantiation", name);
3106           if (intype)
3107             {
3108               while (j--)
3109                 if (TYPE_FN_FIELD_TYPE (f, j) == intype)
3110                   break;
3111               if (j < 0)
3112                 error ("no member function matches that type instantiation");
3113             }
3114           else
3115             j = 0;
3116
3117           if (TYPE_FN_FIELD_STUB (f, j))
3118             check_stub_method (t, i, j);
3119           if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
3120             {
3121               return value_from_longest
3122                 (lookup_reference_type
3123                  (lookup_member_type (TYPE_FN_FIELD_TYPE (f, j),
3124                                       domain)),
3125                  (LONGEST) METHOD_PTR_FROM_VOFFSET (TYPE_FN_FIELD_VOFFSET (f, j)));
3126             }
3127           else
3128             {
3129               struct symbol *s = lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
3130                                                 0, VAR_NAMESPACE, 0, NULL);
3131               if (s == NULL)
3132                 {
3133                   v = 0;
3134                 }
3135               else
3136                 {
3137                   v = read_var_value (s, 0);
3138 #if 0
3139                   VALUE_TYPE (v) = lookup_reference_type
3140                     (lookup_member_type (TYPE_FN_FIELD_TYPE (f, j),
3141                                          domain));
3142 #endif
3143                 }
3144               return v;
3145             }
3146         }
3147     }
3148   for (i = TYPE_N_BASECLASSES (t) - 1; i >= 0; i--)
3149     {
3150       struct value *v;
3151       int base_offset;
3152
3153       if (BASETYPE_VIA_VIRTUAL (t, i))
3154         base_offset = 0;
3155       else
3156         base_offset = TYPE_BASECLASS_BITPOS (t, i) / 8;
3157       v = value_struct_elt_for_reference (domain,
3158                                           offset + base_offset,
3159                                           TYPE_BASECLASS (t, i),
3160                                           name,
3161                                           intype);
3162       if (v)
3163         return v;
3164     }
3165   return 0;
3166 }
3167
3168
3169 /* Given a pointer value V, find the real (RTTI) type
3170    of the object it points to.
3171    Other parameters FULL, TOP, USING_ENC as with value_rtti_type()
3172    and refer to the values computed for the object pointed to. */
3173
3174 struct type *
3175 value_rtti_target_type (struct value *v, int *full, int *top, int *using_enc)
3176 {
3177   struct value *target;
3178
3179   target = value_ind (v);
3180
3181   return value_rtti_type (target, full, top, using_enc);
3182 }
3183
3184 /* Given a value pointed to by ARGP, check its real run-time type, and
3185    if that is different from the enclosing type, create a new value
3186    using the real run-time type as the enclosing type (and of the same
3187    type as ARGP) and return it, with the embedded offset adjusted to
3188    be the correct offset to the enclosed object
3189    RTYPE is the type, and XFULL, XTOP, and XUSING_ENC are the other
3190    parameters, computed by value_rtti_type(). If these are available,
3191    they can be supplied and a second call to value_rtti_type() is avoided.
3192    (Pass RTYPE == NULL if they're not available */
3193
3194 struct value *
3195 value_full_object (struct value *argp, struct type *rtype, int xfull, int xtop,
3196                    int xusing_enc)
3197 {
3198   struct type *real_type;
3199   int full = 0;
3200   int top = -1;
3201   int using_enc = 0;
3202   struct value *new_val;
3203
3204   if (rtype)
3205     {
3206       real_type = rtype;
3207       full = xfull;
3208       top = xtop;
3209       using_enc = xusing_enc;
3210     }
3211   else
3212     real_type = value_rtti_type (argp, &full, &top, &using_enc);
3213
3214   /* If no RTTI data, or if object is already complete, do nothing */
3215   if (!real_type || real_type == VALUE_ENCLOSING_TYPE (argp))
3216     return argp;
3217
3218   /* If we have the full object, but for some reason the enclosing
3219      type is wrong, set it *//* pai: FIXME -- sounds iffy */
3220   if (full)
3221     {
3222       argp = value_change_enclosing_type (argp, real_type);
3223       return argp;
3224     }
3225
3226   /* Check if object is in memory */
3227   if (VALUE_LVAL (argp) != lval_memory)
3228     {
3229       warning ("Couldn't retrieve complete object of RTTI type %s; object may be in register(s).", TYPE_NAME (real_type));
3230
3231       return argp;
3232     }
3233
3234   /* All other cases -- retrieve the complete object */
3235   /* Go back by the computed top_offset from the beginning of the object,
3236      adjusting for the embedded offset of argp if that's what value_rtti_type
3237      used for its computation. */
3238   new_val = value_at_lazy (real_type, VALUE_ADDRESS (argp) - top +
3239                            (using_enc ? 0 : VALUE_EMBEDDED_OFFSET (argp)),
3240                            VALUE_BFD_SECTION (argp));
3241   VALUE_TYPE (new_val) = VALUE_TYPE (argp);
3242   VALUE_EMBEDDED_OFFSET (new_val) = using_enc ? top + VALUE_EMBEDDED_OFFSET (argp) : top;
3243   return new_val;
3244 }
3245
3246
3247
3248
3249 /* C++: return the value of the class instance variable, if one exists.
3250    Flag COMPLAIN signals an error if the request is made in an
3251    inappropriate context.  */
3252
3253 struct value *
3254 value_of_this (int complain)
3255 {
3256   struct symbol *func, *sym;
3257   struct block *b;
3258   int i;
3259   static const char funny_this[] = "this";
3260   struct value *this;
3261
3262   if (selected_frame == 0)
3263     {
3264       if (complain)
3265         error ("no frame selected");
3266       else
3267         return 0;
3268     }
3269
3270   func = get_frame_function (selected_frame);
3271   if (!func)
3272     {
3273       if (complain)
3274         error ("no `this' in nameless context");
3275       else
3276         return 0;
3277     }
3278
3279   b = SYMBOL_BLOCK_VALUE (func);
3280   i = BLOCK_NSYMS (b);
3281   if (i <= 0)
3282     {
3283       if (complain)
3284         error ("no args, no `this'");
3285       else
3286         return 0;
3287     }
3288
3289   /* Calling lookup_block_symbol is necessary to get the LOC_REGISTER
3290      symbol instead of the LOC_ARG one (if both exist).  */
3291   sym = lookup_block_symbol (b, funny_this, NULL, VAR_NAMESPACE);
3292   if (sym == NULL)
3293     {
3294       if (complain)
3295         error ("current stack frame not in method");
3296       else
3297         return NULL;
3298     }
3299
3300   this = read_var_value (sym, selected_frame);
3301   if (this == 0 && complain)
3302     error ("`this' argument at unknown address");
3303   return this;
3304 }
3305
3306 /* Create a slice (sub-string, sub-array) of ARRAY, that is LENGTH elements
3307    long, starting at LOWBOUND.  The result has the same lower bound as
3308    the original ARRAY.  */
3309
3310 struct value *
3311 value_slice (struct value *array, int lowbound, int length)
3312 {
3313   struct type *slice_range_type, *slice_type, *range_type;
3314   LONGEST lowerbound, upperbound, offset;
3315   struct value *slice;
3316   struct type *array_type;
3317   array_type = check_typedef (VALUE_TYPE (array));
3318   COERCE_VARYING_ARRAY (array, array_type);
3319   if (TYPE_CODE (array_type) != TYPE_CODE_ARRAY
3320       && TYPE_CODE (array_type) != TYPE_CODE_STRING
3321       && TYPE_CODE (array_type) != TYPE_CODE_BITSTRING)
3322     error ("cannot take slice of non-array");
3323   range_type = TYPE_INDEX_TYPE (array_type);
3324   if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
3325     error ("slice from bad array or bitstring");
3326   if (lowbound < lowerbound || length < 0
3327       || lowbound + length - 1 > upperbound)
3328     /* OBSOLETE Chill allows zero-length strings but not arrays. */
3329     /* OBSOLETE || (current_language->la_language == language_chill */
3330     /* OBSOLETE && length == 0 && TYPE_CODE (array_type) == TYPE_CODE_ARRAY)) */
3331     error ("slice out of range");
3332   /* FIXME-type-allocation: need a way to free this type when we are
3333      done with it.  */
3334   slice_range_type = create_range_type ((struct type *) NULL,
3335                                         TYPE_TARGET_TYPE (range_type),
3336                                         lowbound, lowbound + length - 1);
3337   if (TYPE_CODE (array_type) == TYPE_CODE_BITSTRING)
3338     {
3339       int i;
3340       slice_type = create_set_type ((struct type *) NULL, slice_range_type);
3341       TYPE_CODE (slice_type) = TYPE_CODE_BITSTRING;
3342       slice = value_zero (slice_type, not_lval);
3343       for (i = 0; i < length; i++)
3344         {
3345           int element = value_bit_index (array_type,
3346                                          VALUE_CONTENTS (array),
3347                                          lowbound + i);
3348           if (element < 0)
3349             error ("internal error accessing bitstring");
3350           else if (element > 0)
3351             {
3352               int j = i % TARGET_CHAR_BIT;
3353               if (BITS_BIG_ENDIAN)
3354                 j = TARGET_CHAR_BIT - 1 - j;
3355               VALUE_CONTENTS_RAW (slice)[i / TARGET_CHAR_BIT] |= (1 << j);
3356             }
3357         }
3358       /* We should set the address, bitssize, and bitspos, so the clice
3359          can be used on the LHS, but that may require extensions to
3360          value_assign.  For now, just leave as a non_lval.  FIXME.  */
3361     }
3362   else
3363     {
3364       struct type *element_type = TYPE_TARGET_TYPE (array_type);
3365       offset
3366         = (lowbound - lowerbound) * TYPE_LENGTH (check_typedef (element_type));
3367       slice_type = create_array_type ((struct type *) NULL, element_type,
3368                                       slice_range_type);
3369       TYPE_CODE (slice_type) = TYPE_CODE (array_type);
3370       slice = allocate_value (slice_type);
3371       if (VALUE_LAZY (array))
3372         VALUE_LAZY (slice) = 1;
3373       else
3374         memcpy (VALUE_CONTENTS (slice), VALUE_CONTENTS (array) + offset,
3375                 TYPE_LENGTH (slice_type));
3376       if (VALUE_LVAL (array) == lval_internalvar)
3377         VALUE_LVAL (slice) = lval_internalvar_component;
3378       else
3379         VALUE_LVAL (slice) = VALUE_LVAL (array);
3380       VALUE_ADDRESS (slice) = VALUE_ADDRESS (array);
3381       VALUE_OFFSET (slice) = VALUE_OFFSET (array) + offset;
3382     }
3383   return slice;
3384 }
3385
3386 /* Assuming OBSOLETE chill_varying_type (VARRAY) is true, return an
3387    equivalent value as a fixed-length array. */
3388
3389 struct value *
3390 varying_to_slice (struct value *varray)
3391 {
3392   struct type *vtype = check_typedef (VALUE_TYPE (varray));
3393   LONGEST length = unpack_long (TYPE_FIELD_TYPE (vtype, 0),
3394                                 VALUE_CONTENTS (varray)
3395                                 + TYPE_FIELD_BITPOS (vtype, 0) / 8);
3396   return value_slice (value_primitive_field (varray, 0, 1, vtype), 0, length);
3397 }
3398
3399 /* Create a value for a FORTRAN complex number.  Currently most of
3400    the time values are coerced to COMPLEX*16 (i.e. a complex number
3401    composed of 2 doubles.  This really should be a smarter routine
3402    that figures out precision inteligently as opposed to assuming
3403    doubles. FIXME: fmb */
3404
3405 struct value *
3406 value_literal_complex (struct value *arg1, struct value *arg2, struct type *type)
3407 {
3408   struct value *val;
3409   struct type *real_type = TYPE_TARGET_TYPE (type);
3410
3411   val = allocate_value (type);
3412   arg1 = value_cast (real_type, arg1);
3413   arg2 = value_cast (real_type, arg2);
3414
3415   memcpy (VALUE_CONTENTS_RAW (val),
3416           VALUE_CONTENTS (arg1), TYPE_LENGTH (real_type));
3417   memcpy (VALUE_CONTENTS_RAW (val) + TYPE_LENGTH (real_type),
3418           VALUE_CONTENTS (arg2), TYPE_LENGTH (real_type));
3419   return val;
3420 }
3421
3422 /* Cast a value into the appropriate complex data type. */
3423
3424 static struct value *
3425 cast_into_complex (struct type *type, struct value *val)
3426 {
3427   struct type *real_type = TYPE_TARGET_TYPE (type);
3428   if (TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_COMPLEX)
3429     {
3430       struct type *val_real_type = TYPE_TARGET_TYPE (VALUE_TYPE (val));
3431       struct value *re_val = allocate_value (val_real_type);
3432       struct value *im_val = allocate_value (val_real_type);
3433
3434       memcpy (VALUE_CONTENTS_RAW (re_val),
3435               VALUE_CONTENTS (val), TYPE_LENGTH (val_real_type));
3436       memcpy (VALUE_CONTENTS_RAW (im_val),
3437               VALUE_CONTENTS (val) + TYPE_LENGTH (val_real_type),
3438               TYPE_LENGTH (val_real_type));
3439
3440       return value_literal_complex (re_val, im_val, type);
3441     }
3442   else if (TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_FLT
3443            || TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_INT)
3444     return value_literal_complex (val, value_zero (real_type, not_lval), type);
3445   else
3446     error ("cannot cast non-number to complex");
3447 }
3448
3449 void
3450 _initialize_valops (void)
3451 {
3452 #if 0
3453   add_show_from_set
3454     (add_set_cmd ("abandon", class_support, var_boolean, (char *) &auto_abandon,
3455                   "Set automatic abandonment of expressions upon failure.",
3456                   &setlist),
3457      &showlist);
3458 #endif
3459
3460   add_show_from_set
3461     (add_set_cmd ("overload-resolution", class_support, var_boolean, (char *) &overload_resolution,
3462                   "Set overload resolution in evaluating C++ functions.",
3463                   &setlist),
3464      &showlist);
3465   overload_resolution = 1;
3466
3467   add_show_from_set (
3468   add_set_cmd ("unwindonsignal", no_class, var_boolean,
3469                (char *) &unwind_on_signal_p,
3470 "Set unwinding of stack if a signal is received while in a call dummy.\n\
3471 The unwindonsignal lets the user determine what gdb should do if a signal\n\
3472 is received while in a function called from gdb (call dummy).  If set, gdb\n\
3473 unwinds the stack and restore the context to what as it was before the call.\n\
3474 The default is to stop in the frame where the signal was received.", &setlist),
3475                      &showlist);
3476 }