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