* configure.in: Add test for "long long" support.
[external/binutils.git] / gdb / valops.c
1 /* Perform non-arithmetic operations on values, for GDB.
2    Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1994, 1995
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, Boston, MA 02111-1307, USA.  */
20
21 #include "defs.h"
22 #include "symtab.h"
23 #include "gdbtypes.h"
24 #include "value.h"
25 #include "frame.h"
26 #include "inferior.h"
27 #include "gdbcore.h"
28 #include "target.h"
29 #include "demangle.h"
30 #include "language.h"
31
32 #include <errno.h>
33 #include "gdb_string.h"
34
35 /* Default to coercing float to double in function calls only when there is
36    no prototype.  Otherwise on targets where the debug information is incorrect
37    for either the prototype or non-prototype case, we can force it by defining
38    COERCE_FLOAT_TO_DOUBLE in the target configuration file. */
39
40 #ifndef COERCE_FLOAT_TO_DOUBLE
41 #define COERCE_FLOAT_TO_DOUBLE (param_type == NULL)
42 #endif
43
44 /* Local functions.  */
45
46 static int typecmp PARAMS ((int staticp, struct type *t1[], value_ptr t2[]));
47
48 static CORE_ADDR find_function_addr PARAMS ((value_ptr, struct type **));
49
50 #ifndef PUSH_ARGUMENTS
51 static CORE_ADDR value_push PARAMS ((CORE_ADDR, value_ptr));
52 #endif
53
54 static value_ptr search_struct_field PARAMS ((char *, value_ptr, int,
55                                               struct type *, int));
56
57 static value_ptr search_struct_method PARAMS ((char *, value_ptr *,
58                                                value_ptr *,
59                                                int, int *, struct type *));
60
61 static int check_field_in PARAMS ((struct type *, const char *));
62
63 static CORE_ADDR allocate_space_in_inferior PARAMS ((int));
64
65 static value_ptr cast_into_complex PARAMS ((struct type *, value_ptr));
66
67 static value_ptr value_arg_coerce PARAMS ((value_ptr, struct type *));
68
69 #define VALUE_SUBSTRING_START(VAL) VALUE_FRAME(VAL)
70
71 /* Flag for whether we want to abandon failed expression evals by default.  */
72
73 #if 0
74 static int auto_abandon = 0;
75 #endif
76
77 \f
78 /* Find the address of function name NAME in the inferior.  */
79
80 value_ptr
81 find_function_in_inferior (name)
82      char *name;
83 {
84   register struct symbol *sym;
85   sym = lookup_symbol (name, 0, VAR_NAMESPACE, 0, NULL);
86   if (sym != NULL)
87     {
88       if (SYMBOL_CLASS (sym) != LOC_BLOCK)
89         {
90           error ("\"%s\" exists in this program but is not a function.",
91                  name);
92         }
93       return value_of_variable (sym, NULL);
94     }
95   else
96     {
97       struct minimal_symbol *msymbol = lookup_minimal_symbol(name, NULL, NULL);
98       if (msymbol != NULL)
99         {
100           struct type *type;
101           LONGEST maddr;
102           type = lookup_pointer_type (builtin_type_char);
103           type = lookup_function_type (type);
104           type = lookup_pointer_type (type);
105           maddr = (LONGEST) SYMBOL_VALUE_ADDRESS (msymbol);
106           return value_from_longest (type, maddr);
107         }
108       else
109         {
110           error ("evaluation of this expression requires the program to have a function \"%s\".", name);
111         }
112     }
113 }
114
115 /* Allocate NBYTES of space in the inferior using the inferior's malloc
116    and return a value that is a pointer to the allocated space. */
117
118 value_ptr
119 value_allocate_space_in_inferior (len)
120      int len;
121 {
122   value_ptr blocklen;
123   register value_ptr val = find_function_in_inferior ("malloc");
124
125   blocklen = value_from_longest (builtin_type_int, (LONGEST) len);
126   val = call_function_by_hand (val, 1, &blocklen);
127   if (value_logical_not (val))
128     {
129       error ("No memory available to program.");
130     }
131   return val;
132 }
133
134 static CORE_ADDR
135 allocate_space_in_inferior (len)
136      int len;
137 {
138   return value_as_long (value_allocate_space_in_inferior (len));
139 }
140
141 /* Cast value ARG2 to type TYPE and return as a value.
142    More general than a C cast: accepts any two types of the same length,
143    and if ARG2 is an lvalue it can be cast into anything at all.  */
144 /* In C++, casts may change pointer or object representations.  */
145
146 value_ptr
147 value_cast (type, arg2)
148      struct type *type;
149      register value_ptr arg2;
150 {
151   register enum type_code code1;
152   register enum type_code code2;
153   register int scalar;
154   struct type *type2;
155
156   if (VALUE_TYPE (arg2) == type)
157     return arg2;
158
159   CHECK_TYPEDEF (type);
160   code1 = TYPE_CODE (type);
161   COERCE_REF(arg2);
162   type2 = check_typedef (VALUE_TYPE (arg2));
163
164   /* A cast to an undetermined-length array_type, such as (TYPE [])OBJECT,
165      is treated like a cast to (TYPE [N])OBJECT,
166      where N is sizeof(OBJECT)/sizeof(TYPE). */
167   if (code1 == TYPE_CODE_ARRAY)
168     {
169       struct type *element_type = TYPE_TARGET_TYPE (type);
170       unsigned element_length = TYPE_LENGTH (check_typedef (element_type));
171       if (element_length > 0
172           && TYPE_ARRAY_UPPER_BOUND_TYPE (type) == BOUND_CANNOT_BE_DETERMINED)
173         {
174           struct type *range_type = TYPE_INDEX_TYPE (type);
175           int val_length = TYPE_LENGTH (type2);
176           LONGEST low_bound, high_bound, new_length;
177           if (get_discrete_bounds (range_type, &low_bound, &high_bound) < 0)
178             low_bound = 0, high_bound = 0;
179           new_length = val_length / element_length;
180           if (val_length % element_length != 0)
181        warning("array element type size does not divide object size in cast");
182           /* FIXME-type-allocation: need a way to free this type when we are
183              done with it.  */
184           range_type = create_range_type ((struct type *) NULL,
185                                           TYPE_TARGET_TYPE (range_type),
186                                           low_bound,
187                                           new_length + low_bound - 1);
188           VALUE_TYPE (arg2) = create_array_type ((struct type *) NULL,
189                                                  element_type, range_type);
190           return arg2;
191         }
192     }
193
194   if (current_language->c_style_arrays
195       && TYPE_CODE (type2) == TYPE_CODE_ARRAY)
196     arg2 = value_coerce_array (arg2);
197
198   if (TYPE_CODE (type2) == TYPE_CODE_FUNC)
199     arg2 = value_coerce_function (arg2);
200
201   type2 = check_typedef (VALUE_TYPE (arg2));
202   COERCE_VARYING_ARRAY (arg2, type2);
203   code2 = TYPE_CODE (type2);
204
205   if (code1 == TYPE_CODE_COMPLEX)
206     return cast_into_complex (type, arg2);
207   if (code1 == TYPE_CODE_BOOL || code1 == TYPE_CODE_CHAR)
208     code1 = TYPE_CODE_INT; 
209   if (code2 == TYPE_CODE_BOOL || code2 == TYPE_CODE_CHAR)
210     code2 = TYPE_CODE_INT;
211
212   scalar = (code2 == TYPE_CODE_INT || code2 == TYPE_CODE_FLT
213             || code2 == TYPE_CODE_ENUM || code2 == TYPE_CODE_RANGE);
214
215   if (   code1 == TYPE_CODE_STRUCT
216       && code2 == TYPE_CODE_STRUCT
217       && TYPE_NAME (type) != 0)
218     {
219       /* Look in the type of the source to see if it contains the
220          type of the target as a superclass.  If so, we'll need to
221          offset the object in addition to changing its type.  */
222       value_ptr v = search_struct_field (type_name_no_tag (type),
223                                          arg2, 0, type2, 1);
224       if (v)
225         {
226           VALUE_TYPE (v) = type;
227           return v;
228         }
229     }
230   if (code1 == TYPE_CODE_FLT && scalar)
231     return value_from_double (type, value_as_double (arg2));
232   else if ((code1 == TYPE_CODE_INT || code1 == TYPE_CODE_ENUM
233             || code1 == TYPE_CODE_RANGE)
234            && (scalar || code2 == TYPE_CODE_PTR))
235     return value_from_longest (type, value_as_long (arg2));
236   else if (TYPE_LENGTH (type) == TYPE_LENGTH (type2))
237     {
238       if (code1 == TYPE_CODE_PTR && code2 == TYPE_CODE_PTR)
239         {
240           /* Look in the type of the source to see if it contains the
241              type of the target as a superclass.  If so, we'll need to
242              offset the pointer rather than just change its type.  */
243           struct type *t1 = check_typedef (TYPE_TARGET_TYPE (type));
244           struct type *t2 = check_typedef (TYPE_TARGET_TYPE (type2));
245           if (   TYPE_CODE (t1) == TYPE_CODE_STRUCT
246               && TYPE_CODE (t2) == TYPE_CODE_STRUCT
247               && TYPE_NAME (t1) != 0) /* if name unknown, can't have supercl */
248             {
249               value_ptr v = search_struct_field (type_name_no_tag (t1),
250                                                  value_ind (arg2), 0, t2, 1);
251               if (v)
252                 {
253                   v = value_addr (v);
254                   VALUE_TYPE (v) = type;
255                   return v;
256                 }
257             }
258           /* No superclass found, just fall through to change ptr type.  */
259         }
260       VALUE_TYPE (arg2) = type;
261       return arg2;
262     }
263   else if (chill_varying_type (type))
264     {
265       struct type *range1, *range2, *eltype1, *eltype2;
266       value_ptr val;
267       int count1, count2;
268       LONGEST low_bound, high_bound;
269       char *valaddr, *valaddr_data;
270       if (code2 == TYPE_CODE_BITSTRING)
271         error ("not implemented: converting bitstring to varying type");
272       if ((code2 != TYPE_CODE_ARRAY && code2 != TYPE_CODE_STRING)
273           || (eltype1 = check_typedef (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, 1))),
274               eltype2 = check_typedef (TYPE_TARGET_TYPE (type2)),
275               (TYPE_LENGTH (eltype1) != TYPE_LENGTH (eltype2)
276                /* || TYPE_CODE (eltype1) != TYPE_CODE (eltype2) */ )))
277         error ("Invalid conversion to varying type");
278       range1 = TYPE_FIELD_TYPE (TYPE_FIELD_TYPE (type, 1), 0);
279       range2 = TYPE_FIELD_TYPE (type2, 0);
280       if (get_discrete_bounds (range1, &low_bound, &high_bound) < 0)
281         count1 = -1;
282       else
283         count1 = high_bound - low_bound + 1;
284       if (get_discrete_bounds (range2, &low_bound, &high_bound) < 0)
285         count1 = -1, count2 = 0;  /* To force error before */
286       else
287         count2 = high_bound - low_bound + 1;
288       if (count2 > count1)
289         error ("target varying type is too small");
290       val = allocate_value (type);
291       valaddr = VALUE_CONTENTS_RAW (val);
292       valaddr_data = valaddr + TYPE_FIELD_BITPOS (type, 1) / 8;
293       /* Set val's __var_length field to count2. */
294       store_signed_integer (valaddr, TYPE_LENGTH (TYPE_FIELD_TYPE (type, 0)),
295                             count2);
296       /* Set the __var_data field to count2 elements copied from arg2. */
297       memcpy (valaddr_data, VALUE_CONTENTS (arg2),
298               count2 * TYPE_LENGTH (eltype2));
299       /* Zero the rest of the __var_data field of val. */
300       memset (valaddr_data + count2 * TYPE_LENGTH (eltype2), '\0',
301               (count1 - count2) * TYPE_LENGTH (eltype2));
302       return val;
303     }
304   else if (VALUE_LVAL (arg2) == lval_memory)
305     {
306       return value_at_lazy (type, VALUE_ADDRESS (arg2) + VALUE_OFFSET (arg2));
307     }
308   else if (code1 == TYPE_CODE_VOID)
309     {
310       return value_zero (builtin_type_void, not_lval);
311     }
312   else
313     {
314       error ("Invalid cast.");
315       return 0;
316     }
317 }
318
319 /* Create a value of type TYPE that is zero, and return it.  */
320
321 value_ptr
322 value_zero (type, lv)
323      struct type *type;
324      enum lval_type lv;
325 {
326   register value_ptr val = allocate_value (type);
327
328   memset (VALUE_CONTENTS (val), 0, TYPE_LENGTH (check_typedef (type)));
329   VALUE_LVAL (val) = lv;
330
331   return val;
332 }
333
334 /* Return a value with type TYPE located at ADDR.  
335
336    Call value_at only if the data needs to be fetched immediately;
337    if we can be 'lazy' and defer the fetch, perhaps indefinately, call
338    value_at_lazy instead.  value_at_lazy simply records the address of
339    the data and sets the lazy-evaluation-required flag.  The lazy flag 
340    is tested in the VALUE_CONTENTS macro, which is used if and when 
341    the contents are actually required.  */
342
343 value_ptr
344 value_at (type, addr)
345      struct type *type;
346      CORE_ADDR addr;
347 {
348   register value_ptr val;
349
350   if (TYPE_CODE (check_typedef (type)) == TYPE_CODE_VOID)
351     error ("Attempt to dereference a generic pointer.");
352
353   val = allocate_value (type);
354
355   read_memory (addr, VALUE_CONTENTS_RAW (val), TYPE_LENGTH (type));
356
357   VALUE_LVAL (val) = lval_memory;
358   VALUE_ADDRESS (val) = addr;
359
360   return val;
361 }
362
363 /* Return a lazy value with type TYPE located at ADDR (cf. value_at).  */
364
365 value_ptr
366 value_at_lazy (type, addr)
367      struct type *type;
368      CORE_ADDR addr;
369 {
370   register value_ptr val;
371
372   if (TYPE_CODE (check_typedef (type)) == TYPE_CODE_VOID)
373     error ("Attempt to dereference a generic pointer.");
374
375   val = allocate_value (type);
376
377   VALUE_LVAL (val) = lval_memory;
378   VALUE_ADDRESS (val) = addr;
379   VALUE_LAZY (val) = 1;
380
381   return val;
382 }
383
384 /* Called only from the VALUE_CONTENTS macro, if the current data for
385    a variable needs to be loaded into VALUE_CONTENTS(VAL).  Fetches the
386    data from the user's process, and clears the lazy flag to indicate
387    that the data in the buffer is valid.
388
389    If the value is zero-length, we avoid calling read_memory, which would
390    abort.  We mark the value as fetched anyway -- all 0 bytes of it.
391
392    This function returns a value because it is used in the VALUE_CONTENTS
393    macro as part of an expression, where a void would not work.  The
394    value is ignored.  */
395
396 int
397 value_fetch_lazy (val)
398      register value_ptr val;
399 {
400   CORE_ADDR addr = VALUE_ADDRESS (val) + VALUE_OFFSET (val);
401   int length = TYPE_LENGTH (VALUE_TYPE (val));
402
403   if (length)
404     read_memory (addr, VALUE_CONTENTS_RAW (val), length);
405   VALUE_LAZY (val) = 0;
406   return 0;
407 }
408
409
410 /* Store the contents of FROMVAL into the location of TOVAL.
411    Return a new value with the location of TOVAL and contents of FROMVAL.  */
412
413 value_ptr
414 value_assign (toval, fromval)
415      register value_ptr toval, fromval;
416 {
417   register struct type *type;
418   register value_ptr val;
419   char raw_buffer[MAX_REGISTER_RAW_SIZE];
420   int use_buffer = 0;
421
422   if (!toval->modifiable)
423     error ("Left operand of assignment is not a modifiable lvalue.");
424
425   COERCE_REF (toval);
426
427   type = VALUE_TYPE (toval);
428   if (VALUE_LVAL (toval) != lval_internalvar)
429     fromval = value_cast (type, fromval);
430   else
431     COERCE_ARRAY (fromval);
432   CHECK_TYPEDEF (type);
433
434   /* If TOVAL is a special machine register requiring conversion
435      of program values to a special raw format,
436      convert FROMVAL's contents now, with result in `raw_buffer',
437      and set USE_BUFFER to the number of bytes to write.  */
438
439 #ifdef REGISTER_CONVERTIBLE
440   if (VALUE_REGNO (toval) >= 0
441       && REGISTER_CONVERTIBLE (VALUE_REGNO (toval)))
442     {
443       int regno = VALUE_REGNO (toval);
444       if (REGISTER_CONVERTIBLE (regno))
445         {
446           struct type *fromtype = check_typedef (VALUE_TYPE (fromval));
447           REGISTER_CONVERT_TO_RAW (fromtype, regno,
448                                    VALUE_CONTENTS (fromval), raw_buffer);
449           use_buffer = REGISTER_RAW_SIZE (regno);
450         }
451     }
452 #endif
453
454   switch (VALUE_LVAL (toval))
455     {
456     case lval_internalvar:
457       set_internalvar (VALUE_INTERNALVAR (toval), fromval);
458       return value_copy (VALUE_INTERNALVAR (toval)->value);
459
460     case lval_internalvar_component:
461       set_internalvar_component (VALUE_INTERNALVAR (toval),
462                                  VALUE_OFFSET (toval),
463                                  VALUE_BITPOS (toval),
464                                  VALUE_BITSIZE (toval),
465                                  fromval);
466       break;
467
468     case lval_memory:
469       if (VALUE_BITSIZE (toval))
470         {
471           char buffer[sizeof (LONGEST)];
472           /* We assume that the argument to read_memory is in units of
473              host chars.  FIXME:  Is that correct?  */
474           int len = (VALUE_BITPOS (toval)
475                      + VALUE_BITSIZE (toval)
476                      + HOST_CHAR_BIT - 1)
477                     / HOST_CHAR_BIT;
478
479           if (len > (int) sizeof (LONGEST))
480             error ("Can't handle bitfields which don't fit in a %d bit word.",
481                    sizeof (LONGEST) * HOST_CHAR_BIT);
482
483           read_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
484                        buffer, len);
485           modify_field (buffer, value_as_long (fromval),
486                         VALUE_BITPOS (toval), VALUE_BITSIZE (toval));
487           write_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
488                         buffer, len);
489         }
490       else if (use_buffer)
491         write_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
492                       raw_buffer, use_buffer);
493       else
494         write_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
495                       VALUE_CONTENTS (fromval), TYPE_LENGTH (type));
496       break;
497
498     case lval_register:
499       if (VALUE_BITSIZE (toval))
500         {
501           char buffer[sizeof (LONGEST)];
502           int len = REGISTER_RAW_SIZE (VALUE_REGNO (toval));
503
504           if (len > (int) sizeof (LONGEST))
505             error ("Can't handle bitfields in registers larger than %d bits.",
506                    sizeof (LONGEST) * HOST_CHAR_BIT);
507
508           if (VALUE_BITPOS (toval) + VALUE_BITSIZE (toval)
509               > len * HOST_CHAR_BIT)
510             /* Getting this right would involve being very careful about
511                byte order.  */
512             error ("\
513 Can't handle bitfield which doesn't fit in a single register.");
514
515           read_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
516                                buffer, len);
517           modify_field (buffer, value_as_long (fromval),
518                         VALUE_BITPOS (toval), VALUE_BITSIZE (toval));
519           write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
520                                 buffer, len);
521         }
522       else if (use_buffer)
523         write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
524                               raw_buffer, use_buffer);
525       else
526         {
527           /* Do any conversion necessary when storing this type to more
528              than one register.  */
529 #ifdef REGISTER_CONVERT_FROM_TYPE
530           memcpy (raw_buffer, VALUE_CONTENTS (fromval), TYPE_LENGTH (type));
531           REGISTER_CONVERT_FROM_TYPE(VALUE_REGNO (toval), type, raw_buffer);
532           write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
533                                 raw_buffer, TYPE_LENGTH (type));
534 #else
535           write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
536                                 VALUE_CONTENTS (fromval), TYPE_LENGTH (type));
537 #endif
538         }
539       /* Assigning to the stack pointer, frame pointer, and other
540          (architecture and calling convention specific) registers may
541          cause the frame cache to be out of date.  We just do this
542          on all assignments to registers for simplicity; I doubt the slowdown
543          matters.  */
544       reinit_frame_cache ();
545       break;
546
547     case lval_reg_frame_relative:
548       {
549         /* value is stored in a series of registers in the frame
550            specified by the structure.  Copy that value out, modify
551            it, and copy it back in.  */
552         int amount_to_copy = (VALUE_BITSIZE (toval) ? 1 : TYPE_LENGTH (type));
553         int reg_size = REGISTER_RAW_SIZE (VALUE_FRAME_REGNUM (toval));
554         int byte_offset = VALUE_OFFSET (toval) % reg_size;
555         int reg_offset = VALUE_OFFSET (toval) / reg_size;
556         int amount_copied;
557
558         /* Make the buffer large enough in all cases.  */
559         char *buffer = (char *) alloca (amount_to_copy
560                                         + sizeof (LONGEST)
561                                         + MAX_REGISTER_RAW_SIZE);
562
563         int regno;
564         struct frame_info *frame;
565
566         /* Figure out which frame this is in currently.  */
567         for (frame = get_current_frame ();
568              frame && FRAME_FP (frame) != VALUE_FRAME (toval);
569              frame = get_prev_frame (frame))
570           ;
571
572         if (!frame)
573           error ("Value being assigned to is no longer active.");
574
575         amount_to_copy += (reg_size - amount_to_copy % reg_size);
576
577         /* Copy it out.  */
578         for ((regno = VALUE_FRAME_REGNUM (toval) + reg_offset,
579               amount_copied = 0);
580              amount_copied < amount_to_copy;
581              amount_copied += reg_size, regno++)
582           {
583             get_saved_register (buffer + amount_copied,
584                                 (int *)NULL, (CORE_ADDR *)NULL,
585                                 frame, regno, (enum lval_type *)NULL);
586           }
587
588         /* Modify what needs to be modified.  */
589         if (VALUE_BITSIZE (toval))
590           modify_field (buffer + byte_offset,
591                         value_as_long (fromval),
592                         VALUE_BITPOS (toval), VALUE_BITSIZE (toval));
593         else if (use_buffer)
594           memcpy (buffer + byte_offset, raw_buffer, use_buffer);
595         else
596           memcpy (buffer + byte_offset, VALUE_CONTENTS (fromval),
597                   TYPE_LENGTH (type));
598
599         /* Copy it back.  */
600         for ((regno = VALUE_FRAME_REGNUM (toval) + reg_offset,
601               amount_copied = 0);
602              amount_copied < amount_to_copy;
603              amount_copied += reg_size, regno++)
604           {
605             enum lval_type lval;
606             CORE_ADDR addr;
607             int optim;
608
609             /* Just find out where to put it.  */
610             get_saved_register ((char *)NULL,
611                                 &optim, &addr, frame, regno, &lval);
612             
613             if (optim)
614               error ("Attempt to assign to a value that was optimized out.");
615             if (lval == lval_memory)
616               write_memory (addr, buffer + amount_copied, reg_size);
617             else if (lval == lval_register)
618               write_register_bytes (addr, buffer + amount_copied, reg_size);
619             else
620               error ("Attempt to assign to an unmodifiable value.");
621           }
622       }
623       break;
624         
625
626     default:
627       error ("Left operand of assignment is not an lvalue.");
628     }
629
630   /* If the field does not entirely fill a LONGEST, then zero the sign bits.
631      If the field is signed, and is negative, then sign extend. */
632   if ((VALUE_BITSIZE (toval) > 0)
633       && (VALUE_BITSIZE (toval) < 8 * (int) sizeof (LONGEST)))
634     {
635       LONGEST fieldval = value_as_long (fromval);
636       LONGEST valmask = (((unsigned LONGEST) 1) << VALUE_BITSIZE (toval)) - 1;
637
638       fieldval &= valmask;
639       if (!TYPE_UNSIGNED (type) && (fieldval & (valmask ^ (valmask >> 1))))
640         fieldval |= ~valmask;
641
642       fromval = value_from_longest (type, fieldval);
643     }
644
645   val = value_copy (toval);
646   memcpy (VALUE_CONTENTS_RAW (val), VALUE_CONTENTS (fromval),
647           TYPE_LENGTH (type));
648   VALUE_TYPE (val) = type;
649   
650   return val;
651 }
652
653 /* Extend a value VAL to COUNT repetitions of its type.  */
654
655 value_ptr
656 value_repeat (arg1, count)
657      value_ptr arg1;
658      int count;
659 {
660   register value_ptr val;
661
662   if (VALUE_LVAL (arg1) != lval_memory)
663     error ("Only values in memory can be extended with '@'.");
664   if (count < 1)
665     error ("Invalid number %d of repetitions.", count);
666
667   val = allocate_repeat_value (VALUE_TYPE (arg1), count);
668
669   read_memory (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1),
670                VALUE_CONTENTS_RAW (val),
671                TYPE_LENGTH (VALUE_TYPE (val)));
672   VALUE_LVAL (val) = lval_memory;
673   VALUE_ADDRESS (val) = VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1);
674
675   return val;
676 }
677
678 value_ptr
679 value_of_variable (var, b)
680      struct symbol *var;
681      struct block *b;
682 {
683   value_ptr val;
684   struct frame_info *frame;
685
686   if (b == NULL)
687     /* Use selected frame.  */
688     frame = NULL;
689   else
690     {
691       frame = block_innermost_frame (b);
692       if (frame == NULL && symbol_read_needs_frame (var))
693         {
694           if (BLOCK_FUNCTION (b) != NULL
695               && SYMBOL_NAME (BLOCK_FUNCTION (b)) != NULL)
696             error ("No frame is currently executing in block %s.",
697                    SYMBOL_NAME (BLOCK_FUNCTION (b)));
698           else
699             error ("No frame is currently executing in specified block");
700         }
701     }
702   val = read_var_value (var, frame);
703   if (val == 0)
704     error ("Address of symbol \"%s\" is unknown.", SYMBOL_SOURCE_NAME (var));
705   return val;
706 }
707
708 /* Given a value which is an array, return a value which is a pointer to its
709    first element, regardless of whether or not the array has a nonzero lower
710    bound.
711
712    FIXME:  A previous comment here indicated that this routine should be
713    substracting the array's lower bound.  It's not clear to me that this
714    is correct.  Given an array subscripting operation, it would certainly
715    work to do the adjustment here, essentially computing:
716
717    (&array[0] - (lowerbound * sizeof array[0])) + (index * sizeof array[0])
718
719    However I believe a more appropriate and logical place to account for
720    the lower bound is to do so in value_subscript, essentially computing:
721
722    (&array[0] + ((index - lowerbound) * sizeof array[0]))
723
724    As further evidence consider what would happen with operations other
725    than array subscripting, where the caller would get back a value that
726    had an address somewhere before the actual first element of the array,
727    and the information about the lower bound would be lost because of
728    the coercion to pointer type.
729    */
730
731 value_ptr
732 value_coerce_array (arg1)
733      value_ptr arg1;
734 {
735   register struct type *type = check_typedef (VALUE_TYPE (arg1));
736
737   if (VALUE_LVAL (arg1) != lval_memory)
738     error ("Attempt to take address of value not located in memory.");
739
740   return value_from_longest (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
741                        (LONGEST) (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
742 }
743
744 /* Given a value which is a function, return a value which is a pointer
745    to it.  */
746
747 value_ptr
748 value_coerce_function (arg1)
749      value_ptr arg1;
750 {
751
752   if (VALUE_LVAL (arg1) != lval_memory)
753     error ("Attempt to take address of value not located in memory.");
754
755   return value_from_longest (lookup_pointer_type (VALUE_TYPE (arg1)),
756                 (LONGEST) (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
757 }  
758
759 /* Return a pointer value for the object for which ARG1 is the contents.  */
760
761 value_ptr
762 value_addr (arg1)
763      value_ptr arg1;
764 {
765   struct type *type = check_typedef (VALUE_TYPE (arg1));
766   if (TYPE_CODE (type) == TYPE_CODE_REF)
767     {
768       /* Copy the value, but change the type from (T&) to (T*).
769          We keep the same location information, which is efficient,
770          and allows &(&X) to get the location containing the reference. */
771       value_ptr arg2 = value_copy (arg1);
772       VALUE_TYPE (arg2) = lookup_pointer_type (TYPE_TARGET_TYPE (type));
773       return arg2;
774     }
775   if (TYPE_CODE (type) == TYPE_CODE_FUNC)
776     return value_coerce_function (arg1);
777
778   if (VALUE_LVAL (arg1) != lval_memory)
779     error ("Attempt to take address of value not located in memory.");
780
781   return value_from_longest (lookup_pointer_type (VALUE_TYPE (arg1)),
782                 (LONGEST) (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
783 }
784
785 /* Given a value of a pointer type, apply the C unary * operator to it.  */
786
787 value_ptr
788 value_ind (arg1)
789      value_ptr arg1;
790 {
791   struct type *type1;
792   COERCE_ARRAY (arg1);
793   type1 = check_typedef (VALUE_TYPE (arg1));
794
795   if (TYPE_CODE (type1) == TYPE_CODE_MEMBER)
796     error ("not implemented: member types in value_ind");
797
798   /* Allow * on an integer so we can cast it to whatever we want.
799      This returns an int, which seems like the most C-like thing
800      to do.  "long long" variables are rare enough that
801      BUILTIN_TYPE_LONGEST would seem to be a mistake.  */
802   if (TYPE_CODE (type1) == TYPE_CODE_INT)
803     return value_at (builtin_type_int,
804                      (CORE_ADDR) value_as_long (arg1));
805   else if (TYPE_CODE (type1) == TYPE_CODE_PTR)
806     return value_at_lazy (TYPE_TARGET_TYPE (type1), value_as_pointer (arg1));
807   error ("Attempt to take contents of a non-pointer value.");
808   return 0;  /* For lint -- never reached */
809 }
810 \f
811 /* Pushing small parts of stack frames.  */
812
813 /* Push one word (the size of object that a register holds).  */
814
815 CORE_ADDR
816 push_word (sp, word)
817      CORE_ADDR sp;
818      unsigned LONGEST word;
819 {
820   register int len = REGISTER_SIZE;
821   char buffer[MAX_REGISTER_RAW_SIZE];
822
823   store_unsigned_integer (buffer, len, word);
824 #if 1 INNER_THAN 2
825   sp -= len;
826   write_memory (sp, buffer, len);
827 #else /* stack grows upward */
828   write_memory (sp, buffer, len);
829   sp += len;
830 #endif /* stack grows upward */
831
832   return sp;
833 }
834
835 /* Push LEN bytes with data at BUFFER.  */
836
837 CORE_ADDR
838 push_bytes (sp, buffer, len)
839      CORE_ADDR sp;
840      char *buffer;
841      int len;
842 {
843 #if 1 INNER_THAN 2
844   sp -= len;
845   write_memory (sp, buffer, len);
846 #else /* stack grows upward */
847   write_memory (sp, buffer, len);
848   sp += len;
849 #endif /* stack grows upward */
850
851   return sp;
852 }
853
854 /* Push onto the stack the specified value VALUE.  */
855
856 #ifndef PUSH_ARGUMENTS
857
858 static CORE_ADDR
859 value_push (sp, arg)
860      register CORE_ADDR sp;
861      value_ptr arg;
862 {
863   register int len = TYPE_LENGTH (VALUE_TYPE (arg));
864
865 #if 1 INNER_THAN 2
866   sp -= len;
867   write_memory (sp, VALUE_CONTENTS (arg), len);
868 #else /* stack grows upward */
869   write_memory (sp, VALUE_CONTENTS (arg), len);
870   sp += len;
871 #endif /* stack grows upward */
872
873   return sp;
874 }
875
876 #endif  /* !PUSH_ARGUMENTS */
877
878 /* Perform the standard coercions that are specified
879    for arguments to be passed to C functions.
880
881    If PARAM_TYPE is non-NULL, it is the expected parameter type. */
882
883 static value_ptr
884 value_arg_coerce (arg, param_type)
885      value_ptr arg;
886      struct type *param_type;
887 {
888   register struct type *arg_type = check_typedef (VALUE_TYPE (arg));
889   register struct type *type
890     = param_type ? check_typedef (param_type) : arg_type;
891
892   switch (TYPE_CODE (type))
893     {
894     case TYPE_CODE_REF:
895       if (TYPE_CODE (arg_type) != TYPE_CODE_REF)
896         {
897           arg = value_addr (arg);
898           VALUE_TYPE (arg) = param_type;
899           return arg;
900         }
901       break;
902     case TYPE_CODE_INT:
903     case TYPE_CODE_CHAR:
904     case TYPE_CODE_BOOL:
905     case TYPE_CODE_ENUM:
906       if (TYPE_LENGTH (type) < TYPE_LENGTH (builtin_type_int))
907         type = builtin_type_int;
908       break;
909    case TYPE_CODE_FLT:
910      /* coerce float to double, unless the function prototype specifies float */
911      if (COERCE_FLOAT_TO_DOUBLE)
912        {
913          if (TYPE_LENGTH (type) < TYPE_LENGTH (builtin_type_double))
914            type = builtin_type_double;
915          else if (TYPE_LENGTH (type) > TYPE_LENGTH (builtin_type_double))
916            type = builtin_type_long_double;
917        }
918      break;
919     case TYPE_CODE_FUNC:
920       type = lookup_pointer_type (type);
921       break;
922     case TYPE_CODE_ARRAY:
923       if (current_language->c_style_arrays)
924         type = lookup_pointer_type (TYPE_TARGET_TYPE (type));
925       break;
926     case TYPE_CODE_UNDEF:
927     case TYPE_CODE_PTR:
928     case TYPE_CODE_STRUCT:
929     case TYPE_CODE_UNION:
930     case TYPE_CODE_VOID:
931     case TYPE_CODE_SET:
932     case TYPE_CODE_RANGE:
933     case TYPE_CODE_STRING:
934     case TYPE_CODE_BITSTRING:
935     case TYPE_CODE_ERROR:
936     case TYPE_CODE_MEMBER:
937     case TYPE_CODE_METHOD:
938     case TYPE_CODE_COMPLEX:
939     default:
940       break;
941     }
942
943   return value_cast (type, arg);
944 }
945
946 /* Determine a function's address and its return type from its value. 
947    Calls error() if the function is not valid for calling.  */
948
949 static CORE_ADDR
950 find_function_addr (function, retval_type)
951      value_ptr function;
952      struct type **retval_type;
953 {
954   register struct type *ftype = check_typedef (VALUE_TYPE (function));
955   register enum type_code code = TYPE_CODE (ftype);
956   struct type *value_type;
957   CORE_ADDR funaddr;
958
959   /* If it's a member function, just look at the function
960      part of it.  */
961
962   /* Determine address to call.  */
963   if (code == TYPE_CODE_FUNC || code == TYPE_CODE_METHOD)
964     {
965       funaddr = VALUE_ADDRESS (function);
966       value_type = TYPE_TARGET_TYPE (ftype);
967     }
968   else if (code == TYPE_CODE_PTR)
969     {
970       funaddr = value_as_pointer (function);
971       ftype = check_typedef (TYPE_TARGET_TYPE (ftype));
972       if (TYPE_CODE (ftype) == TYPE_CODE_FUNC
973           || TYPE_CODE (ftype) == TYPE_CODE_METHOD)
974         {
975 #ifdef CONVERT_FROM_FUNC_PTR_ADDR
976           /* FIXME: This is a workaround for the unusual function
977              pointer representation on the RS/6000, see comment
978              in config/rs6000/tm-rs6000.h  */
979           funaddr = CONVERT_FROM_FUNC_PTR_ADDR (funaddr);
980 #endif
981           value_type = TYPE_TARGET_TYPE (ftype);
982         }
983       else
984         value_type = builtin_type_int;
985     }
986   else if (code == TYPE_CODE_INT)
987     {
988       /* Handle the case of functions lacking debugging info.
989          Their values are characters since their addresses are char */
990       if (TYPE_LENGTH (ftype) == 1)
991         funaddr = value_as_pointer (value_addr (function));
992       else
993         /* Handle integer used as address of a function.  */
994         funaddr = (CORE_ADDR) value_as_long (function);
995
996       value_type = builtin_type_int;
997     }
998   else
999     error ("Invalid data type for function to be called.");
1000
1001   *retval_type = value_type;
1002   return funaddr;
1003 }
1004
1005 #if defined (CALL_DUMMY)
1006 /* All this stuff with a dummy frame may seem unnecessarily complicated
1007    (why not just save registers in GDB?).  The purpose of pushing a dummy
1008    frame which looks just like a real frame is so that if you call a
1009    function and then hit a breakpoint (get a signal, etc), "backtrace"
1010    will look right.  Whether the backtrace needs to actually show the
1011    stack at the time the inferior function was called is debatable, but
1012    it certainly needs to not display garbage.  So if you are contemplating
1013    making dummy frames be different from normal frames, consider that.  */
1014
1015 /* Perform a function call in the inferior.
1016    ARGS is a vector of values of arguments (NARGS of them).
1017    FUNCTION is a value, the function to be called.
1018    Returns a value representing what the function returned.
1019    May fail to return, if a breakpoint or signal is hit
1020    during the execution of the function.
1021
1022    ARGS is modified to contain coerced values. */
1023
1024 value_ptr
1025 call_function_by_hand (function, nargs, args)
1026      value_ptr function;
1027      int nargs;
1028      value_ptr *args;
1029 {
1030   register CORE_ADDR sp;
1031   register int i;
1032   CORE_ADDR start_sp;
1033   /* CALL_DUMMY is an array of words (REGISTER_SIZE), but each word
1034      is in host byte order.  Before calling FIX_CALL_DUMMY, we byteswap it
1035      and remove any extra bytes which might exist because unsigned LONGEST is
1036      bigger than REGISTER_SIZE.  */
1037   static unsigned LONGEST dummy[] = CALL_DUMMY;
1038   char dummy1[REGISTER_SIZE * sizeof dummy / sizeof (unsigned LONGEST)];
1039   CORE_ADDR old_sp;
1040   struct type *value_type;
1041   unsigned char struct_return;
1042   CORE_ADDR struct_addr = 0;
1043   struct inferior_status inf_status;
1044   struct cleanup *old_chain;
1045   CORE_ADDR funaddr;
1046   int using_gcc;
1047   CORE_ADDR real_pc;
1048   struct type *ftype = check_typedef (SYMBOL_TYPE (function));
1049
1050   if (!target_has_execution)
1051     noprocess();
1052
1053   save_inferior_status (&inf_status, 1);
1054   old_chain = make_cleanup (restore_inferior_status, &inf_status);
1055
1056   /* PUSH_DUMMY_FRAME is responsible for saving the inferior registers
1057      (and POP_FRAME for restoring them).  (At least on most machines)
1058      they are saved on the stack in the inferior.  */
1059   PUSH_DUMMY_FRAME;
1060
1061   old_sp = sp = read_sp ();
1062
1063 #if 1 INNER_THAN 2              /* Stack grows down */
1064   sp -= sizeof dummy1;
1065   start_sp = sp;
1066 #else                           /* Stack grows up */
1067   start_sp = sp;
1068   sp += sizeof dummy1;
1069 #endif
1070
1071   funaddr = find_function_addr (function, &value_type);
1072   CHECK_TYPEDEF (value_type);
1073
1074   {
1075     struct block *b = block_for_pc (funaddr);
1076     /* If compiled without -g, assume GCC.  */
1077     using_gcc = b == NULL ? 0 : BLOCK_GCC_COMPILED (b);
1078   }
1079
1080   /* Are we returning a value using a structure return or a normal
1081      value return? */
1082
1083   struct_return = using_struct_return (function, funaddr, value_type,
1084                                        using_gcc);
1085
1086   /* Create a call sequence customized for this function
1087      and the number of arguments for it.  */
1088   for (i = 0; i < (int) (sizeof (dummy) / sizeof (dummy[0])); i++)
1089     store_unsigned_integer (&dummy1[i * REGISTER_SIZE],
1090                             REGISTER_SIZE,
1091                             (unsigned LONGEST)dummy[i]);
1092
1093 #ifdef GDB_TARGET_IS_HPPA
1094   real_pc = FIX_CALL_DUMMY (dummy1, start_sp, funaddr, nargs, args,
1095                             value_type, using_gcc);
1096 #else
1097   FIX_CALL_DUMMY (dummy1, start_sp, funaddr, nargs, args,
1098                   value_type, using_gcc);
1099   real_pc = start_sp;
1100 #endif
1101
1102 #if CALL_DUMMY_LOCATION == ON_STACK
1103   write_memory (start_sp, (char *)dummy1, sizeof dummy1);
1104 #endif /* On stack.  */
1105
1106 #if CALL_DUMMY_LOCATION == BEFORE_TEXT_END
1107   /* Convex Unix prohibits executing in the stack segment. */
1108   /* Hope there is empty room at the top of the text segment. */
1109   {
1110     extern CORE_ADDR text_end;
1111     static checked = 0;
1112     if (!checked)
1113       for (start_sp = text_end - sizeof dummy1; start_sp < text_end; ++start_sp)
1114         if (read_memory_integer (start_sp, 1) != 0)
1115           error ("text segment full -- no place to put call");
1116     checked = 1;
1117     sp = old_sp;
1118     real_pc = text_end - sizeof dummy1;
1119     write_memory (real_pc, (char *)dummy1, sizeof dummy1);
1120   }
1121 #endif /* Before text_end.  */
1122
1123 #if CALL_DUMMY_LOCATION == AFTER_TEXT_END
1124   {
1125     extern CORE_ADDR text_end;
1126     int errcode;
1127     sp = old_sp;
1128     real_pc = text_end;
1129     errcode = target_write_memory (real_pc, (char *)dummy1, sizeof dummy1);
1130     if (errcode != 0)
1131       error ("Cannot write text segment -- call_function failed");
1132   }
1133 #endif /* After text_end.  */
1134
1135 #if CALL_DUMMY_LOCATION == AT_ENTRY_POINT
1136   real_pc = funaddr;
1137 #endif /* At entry point.  */
1138
1139 #ifdef lint
1140   sp = old_sp;          /* It really is used, for some ifdef's... */
1141 #endif
1142
1143   if (nargs < TYPE_NFIELDS (ftype))
1144     error ("too few arguments in function call");
1145
1146   for (i = nargs - 1; i >= 0; i--)
1147     {
1148       struct type *param_type;
1149       if (TYPE_NFIELDS (ftype) > i)
1150         param_type = TYPE_FIELD_TYPE (ftype, i);
1151       else
1152         param_type = 0;
1153       args[i] = value_arg_coerce (args[i], param_type);
1154     }
1155
1156 #if defined (REG_STRUCT_HAS_ADDR)
1157   {
1158     /* This is a machine like the sparc, where we may need to pass a pointer
1159        to the structure, not the structure itself.  */
1160     for (i = nargs - 1; i >= 0; i--)
1161       {
1162         struct type *arg_type = check_typedef (VALUE_TYPE (args[i]));
1163         if ((TYPE_CODE (arg_type) == TYPE_CODE_STRUCT
1164              || TYPE_CODE (arg_type) == TYPE_CODE_UNION
1165              || TYPE_CODE (arg_type) == TYPE_CODE_ARRAY
1166              || TYPE_CODE (arg_type) == TYPE_CODE_STRING
1167              || TYPE_CODE (arg_type) == TYPE_CODE_BITSTRING
1168              || TYPE_CODE (arg_type) == TYPE_CODE_SET
1169              || (TYPE_CODE (arg_type) == TYPE_CODE_FLT
1170                  && TYPE_LENGTH (arg_type) > 8)
1171              )
1172           && REG_STRUCT_HAS_ADDR (using_gcc, arg_type))
1173           {
1174             CORE_ADDR addr;
1175             int len = TYPE_LENGTH (arg_type);
1176 #ifdef STACK_ALIGN
1177             int aligned_len = STACK_ALIGN (len);
1178 #else
1179             int aligned_len = len;
1180 #endif
1181 #if !(1 INNER_THAN 2)
1182             /* The stack grows up, so the address of the thing we push
1183                is the stack pointer before we push it.  */
1184             addr = sp;
1185 #else
1186             sp -= aligned_len;
1187 #endif
1188             /* Push the structure.  */
1189             write_memory (sp, VALUE_CONTENTS (args[i]), len);
1190 #if 1 INNER_THAN 2
1191             /* The stack grows down, so the address of the thing we push
1192                is the stack pointer after we push it.  */
1193             addr = sp;
1194 #else
1195             sp += aligned_len;
1196 #endif
1197             /* The value we're going to pass is the address of the thing
1198                we just pushed.  */
1199             args[i] = value_from_longest (lookup_pointer_type (value_type),
1200                                           (LONGEST) addr);
1201           }
1202       }
1203   }
1204 #endif /* REG_STRUCT_HAS_ADDR.  */
1205
1206   /* Reserve space for the return structure to be written on the
1207      stack, if necessary */
1208
1209   if (struct_return)
1210     {
1211       int len = TYPE_LENGTH (value_type);
1212 #ifdef STACK_ALIGN
1213       len = STACK_ALIGN (len);
1214 #endif
1215 #if 1 INNER_THAN 2
1216       sp -= len;
1217       struct_addr = sp;
1218 #else
1219       struct_addr = sp;
1220       sp += len;
1221 #endif
1222     }
1223
1224 #ifdef STACK_ALIGN
1225   /* If stack grows down, we must leave a hole at the top. */
1226   {
1227     int len = 0;
1228
1229     for (i = nargs - 1; i >= 0; i--)
1230       len += TYPE_LENGTH (VALUE_TYPE (args[i]));
1231 #ifdef CALL_DUMMY_STACK_ADJUST
1232     len += CALL_DUMMY_STACK_ADJUST;
1233 #endif
1234 #if 1 INNER_THAN 2
1235     sp -= STACK_ALIGN (len) - len;
1236 #else
1237     sp += STACK_ALIGN (len) - len;
1238 #endif
1239   }
1240 #endif /* STACK_ALIGN */
1241
1242 #ifdef PUSH_ARGUMENTS
1243   PUSH_ARGUMENTS(nargs, args, sp, struct_return, struct_addr);
1244 #else /* !PUSH_ARGUMENTS */
1245   for (i = nargs - 1; i >= 0; i--)
1246     sp = value_push (sp, args[i]);
1247 #endif /* !PUSH_ARGUMENTS */
1248
1249 #ifdef CALL_DUMMY_STACK_ADJUST
1250 #if 1 INNER_THAN 2
1251   sp -= CALL_DUMMY_STACK_ADJUST;
1252 #else
1253   sp += CALL_DUMMY_STACK_ADJUST;
1254 #endif
1255 #endif /* CALL_DUMMY_STACK_ADJUST */
1256
1257   /* Store the address at which the structure is supposed to be
1258      written.  Note that this (and the code which reserved the space
1259      above) assumes that gcc was used to compile this function.  Since
1260      it doesn't cost us anything but space and if the function is pcc
1261      it will ignore this value, we will make that assumption.
1262
1263      Also note that on some machines (like the sparc) pcc uses a 
1264      convention like gcc's.  */
1265
1266   if (struct_return)
1267     STORE_STRUCT_RETURN (struct_addr, sp);
1268
1269   /* Write the stack pointer.  This is here because the statements above
1270      might fool with it.  On SPARC, this write also stores the register
1271      window into the right place in the new stack frame, which otherwise
1272      wouldn't happen.  (See store_inferior_registers in sparc-nat.c.)  */
1273   write_sp (sp);
1274
1275   {
1276     char retbuf[REGISTER_BYTES];
1277     char *name;
1278     struct symbol *symbol;
1279
1280     name = NULL;
1281     symbol = find_pc_function (funaddr);
1282     if (symbol)
1283       {
1284         name = SYMBOL_SOURCE_NAME (symbol);
1285       }
1286     else
1287       {
1288         /* Try the minimal symbols.  */
1289         struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (funaddr);
1290
1291         if (msymbol)
1292           {
1293             name = SYMBOL_SOURCE_NAME (msymbol);
1294           }
1295       }
1296     if (name == NULL)
1297       {
1298         char format[80];
1299         sprintf (format, "at %s", local_hex_format ());
1300         name = alloca (80);
1301         /* FIXME-32x64: assumes funaddr fits in a long.  */
1302         sprintf (name, format, (unsigned long) funaddr);
1303       }
1304
1305     /* Execute the stack dummy routine, calling FUNCTION.
1306        When it is done, discard the empty frame
1307        after storing the contents of all regs into retbuf.  */
1308     if (run_stack_dummy (real_pc + CALL_DUMMY_START_OFFSET, retbuf))
1309       {
1310         /* We stopped somewhere besides the call dummy.  */
1311
1312         /* If we did the cleanups, we would print a spurious error message
1313            (Unable to restore previously selected frame), would write the
1314            registers from the inf_status (which is wrong), and would do other
1315            wrong things (like set stop_bpstat to the wrong thing).  */
1316         discard_cleanups (old_chain);
1317         /* Prevent memory leak.  */
1318         bpstat_clear (&inf_status.stop_bpstat);
1319
1320         /* The following error message used to say "The expression
1321            which contained the function call has been discarded."  It
1322            is a hard concept to explain in a few words.  Ideally, GDB
1323            would be able to resume evaluation of the expression when
1324            the function finally is done executing.  Perhaps someday
1325            this will be implemented (it would not be easy).  */
1326
1327         /* FIXME: Insert a bunch of wrap_here; name can be very long if it's
1328            a C++ name with arguments and stuff.  */
1329         error ("\
1330 The program being debugged stopped while in a function called from GDB.\n\
1331 When the function (%s) is done executing, GDB will silently\n\
1332 stop (instead of continuing to evaluate the expression containing\n\
1333 the function call).", name);
1334       }
1335
1336     do_cleanups (old_chain);
1337
1338     /* Figure out the value returned by the function.  */
1339     return value_being_returned (value_type, retbuf, struct_return);
1340   }
1341 }
1342 #else /* no CALL_DUMMY.  */
1343 value_ptr
1344 call_function_by_hand (function, nargs, args)
1345      value_ptr function;
1346      int nargs;
1347      value_ptr *args;
1348 {
1349   error ("Cannot invoke functions on this machine.");
1350 }
1351 #endif /* no CALL_DUMMY.  */
1352
1353 \f
1354 /* Create a value for an array by allocating space in the inferior, copying
1355    the data into that space, and then setting up an array value.
1356
1357    The array bounds are set from LOWBOUND and HIGHBOUND, and the array is
1358    populated from the values passed in ELEMVEC.
1359
1360    The element type of the array is inherited from the type of the
1361    first element, and all elements must have the same size (though we
1362    don't currently enforce any restriction on their types). */
1363
1364 value_ptr
1365 value_array (lowbound, highbound, elemvec)
1366      int lowbound;
1367      int highbound;
1368      value_ptr *elemvec;
1369 {
1370   int nelem;
1371   int idx;
1372   unsigned int typelength;
1373   value_ptr val;
1374   struct type *rangetype;
1375   struct type *arraytype;
1376   CORE_ADDR addr;
1377
1378   /* Validate that the bounds are reasonable and that each of the elements
1379      have the same size. */
1380
1381   nelem = highbound - lowbound + 1;
1382   if (nelem <= 0)
1383     {
1384       error ("bad array bounds (%d, %d)", lowbound, highbound);
1385     }
1386   typelength = TYPE_LENGTH (VALUE_TYPE (elemvec[0]));
1387   for (idx = 1; idx < nelem; idx++)
1388     {
1389       if (TYPE_LENGTH (VALUE_TYPE (elemvec[idx])) != typelength)
1390         {
1391           error ("array elements must all be the same size");
1392         }
1393     }
1394
1395   rangetype = create_range_type ((struct type *) NULL, builtin_type_int,
1396                                  lowbound, highbound);
1397   arraytype = create_array_type ((struct type *) NULL, 
1398                                  VALUE_TYPE (elemvec[0]), rangetype);
1399
1400   if (!current_language->c_style_arrays)
1401     {
1402       val = allocate_value (arraytype);
1403       for (idx = 0; idx < nelem; idx++)
1404         {
1405           memcpy (VALUE_CONTENTS_RAW (val) + (idx * typelength),
1406                   VALUE_CONTENTS (elemvec[idx]),
1407                   typelength);
1408         }
1409       return val;
1410     }
1411
1412   /* Allocate space to store the array in the inferior, and then initialize
1413      it by copying in each element.  FIXME:  Is it worth it to create a
1414      local buffer in which to collect each value and then write all the
1415      bytes in one operation? */
1416
1417   addr = allocate_space_in_inferior (nelem * typelength);
1418   for (idx = 0; idx < nelem; idx++)
1419     {
1420       write_memory (addr + (idx * typelength), VALUE_CONTENTS (elemvec[idx]),
1421                     typelength);
1422     }
1423
1424   /* Create the array type and set up an array value to be evaluated lazily. */
1425
1426   val = value_at_lazy (arraytype, addr);
1427   return (val);
1428 }
1429
1430 /* Create a value for a string constant by allocating space in the inferior,
1431    copying the data into that space, and returning the address with type
1432    TYPE_CODE_STRING.  PTR points to the string constant data; LEN is number
1433    of characters.
1434    Note that string types are like array of char types with a lower bound of
1435    zero and an upper bound of LEN - 1.  Also note that the string may contain
1436    embedded null bytes. */
1437
1438 value_ptr
1439 value_string (ptr, len)
1440      char *ptr;
1441      int len;
1442 {
1443   value_ptr val;
1444   int lowbound = current_language->string_lower_bound;
1445   struct type *rangetype = create_range_type ((struct type *) NULL,
1446                                               builtin_type_int,
1447                                               lowbound, len + lowbound - 1);
1448   struct type *stringtype
1449     = create_string_type ((struct type *) NULL, rangetype);
1450   CORE_ADDR addr;
1451
1452   if (current_language->c_style_arrays == 0)
1453     {
1454       val = allocate_value (stringtype);
1455       memcpy (VALUE_CONTENTS_RAW (val), ptr, len);
1456       return val;
1457     }
1458
1459
1460   /* Allocate space to store the string in the inferior, and then
1461      copy LEN bytes from PTR in gdb to that address in the inferior. */
1462
1463   addr = allocate_space_in_inferior (len);
1464   write_memory (addr, ptr, len);
1465
1466   val = value_at_lazy (stringtype, addr);
1467   return (val);
1468 }
1469
1470 value_ptr
1471 value_bitstring (ptr, len)
1472      char *ptr;
1473      int len;
1474 {
1475   value_ptr val;
1476   struct type *domain_type = create_range_type (NULL, builtin_type_int,
1477                                                 0, len - 1);
1478   struct type *type = create_set_type ((struct type*) NULL, domain_type);
1479   TYPE_CODE (type) = TYPE_CODE_BITSTRING;
1480   val = allocate_value (type);
1481   memcpy (VALUE_CONTENTS_RAW (val), ptr, TYPE_LENGTH (type));
1482   return val;
1483 }
1484 \f
1485 /* See if we can pass arguments in T2 to a function which takes arguments
1486    of types T1.  Both t1 and t2 are NULL-terminated vectors.  If some
1487    arguments need coercion of some sort, then the coerced values are written
1488    into T2.  Return value is 0 if the arguments could be matched, or the
1489    position at which they differ if not.
1490
1491    STATICP is nonzero if the T1 argument list came from a
1492    static member function.
1493
1494    For non-static member functions, we ignore the first argument,
1495    which is the type of the instance variable.  This is because we want
1496    to handle calls with objects from derived classes.  This is not
1497    entirely correct: we should actually check to make sure that a
1498    requested operation is type secure, shouldn't we?  FIXME.  */
1499
1500 static int
1501 typecmp (staticp, t1, t2)
1502      int staticp;
1503      struct type *t1[];
1504      value_ptr t2[];
1505 {
1506   int i;
1507
1508   if (t2 == 0)
1509     return 1;
1510   if (staticp && t1 == 0)
1511     return t2[1] != 0;
1512   if (t1 == 0)
1513     return 1;
1514   if (TYPE_CODE (t1[0]) == TYPE_CODE_VOID) return 0;
1515   if (t1[!staticp] == 0) return 0;
1516   for (i = !staticp; t1[i] && TYPE_CODE (t1[i]) != TYPE_CODE_VOID; i++)
1517     {
1518     struct type *tt1, *tt2;
1519       if (! t2[i])
1520         return i+1;
1521       tt1 = check_typedef (t1[i]);
1522       tt2 = check_typedef (VALUE_TYPE(t2[i]));
1523       if (TYPE_CODE (tt1) == TYPE_CODE_REF
1524           /* We should be doing hairy argument matching, as below.  */
1525           && (TYPE_CODE (check_typedef (TYPE_TARGET_TYPE (tt1))) == TYPE_CODE (tt2)))
1526         {
1527           if (TYPE_CODE (tt2) == TYPE_CODE_ARRAY)
1528             t2[i] = value_coerce_array (t2[i]);
1529           else
1530             t2[i] = value_addr (t2[i]);
1531           continue;
1532         }
1533
1534       while (TYPE_CODE (tt1) == TYPE_CODE_PTR
1535           && (   TYPE_CODE (tt2) == TYPE_CODE_ARRAY
1536               || TYPE_CODE (tt2) == TYPE_CODE_PTR))
1537         {
1538            tt1 = check_typedef (TYPE_TARGET_TYPE(tt1)); 
1539            tt2 = check_typedef (TYPE_TARGET_TYPE(tt2));
1540         }
1541       if (TYPE_CODE(tt1) == TYPE_CODE(tt2)) continue;
1542       /* Array to pointer is a `trivial conversion' according to the ARM.  */
1543
1544       /* We should be doing much hairier argument matching (see section 13.2
1545          of the ARM), but as a quick kludge, just check for the same type
1546          code.  */
1547       if (TYPE_CODE (t1[i]) != TYPE_CODE (VALUE_TYPE (t2[i])))
1548         return i+1;
1549     }
1550   if (!t1[i]) return 0;
1551   return t2[i] ? i+1 : 0;
1552 }
1553
1554 /* Helper function used by value_struct_elt to recurse through baseclasses.
1555    Look for a field NAME in ARG1. Adjust the address of ARG1 by OFFSET bytes,
1556    and search in it assuming it has (class) type TYPE.
1557    If found, return value, else return NULL.
1558
1559    If LOOKING_FOR_BASECLASS, then instead of looking for struct fields,
1560    look for a baseclass named NAME.  */
1561
1562 static value_ptr
1563 search_struct_field (name, arg1, offset, type, looking_for_baseclass)
1564      char *name;
1565      register value_ptr arg1;
1566      int offset;
1567      register struct type *type;
1568      int looking_for_baseclass;
1569 {
1570   int i;
1571
1572   CHECK_TYPEDEF (type);
1573
1574   if (! looking_for_baseclass)
1575     for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
1576       {
1577         char *t_field_name = TYPE_FIELD_NAME (type, i);
1578
1579         if (t_field_name && STREQ (t_field_name, name))
1580           {
1581             value_ptr v;
1582             if (TYPE_FIELD_STATIC (type, i))
1583               {
1584                 char *phys_name = TYPE_FIELD_STATIC_PHYSNAME (type, i);
1585                 struct symbol *sym =
1586                     lookup_symbol (phys_name, 0, VAR_NAMESPACE, 0, NULL);
1587                 if (sym == NULL)
1588                     error ("Internal error: could not find physical static variable named %s",
1589                            phys_name);
1590                 v = value_at (TYPE_FIELD_TYPE (type, i),
1591                               (CORE_ADDR)SYMBOL_BLOCK_VALUE (sym));
1592               }
1593             else
1594               v = value_primitive_field (arg1, offset, i, type);
1595             if (v == 0)
1596               error("there is no field named %s", name);
1597             return v;
1598           }
1599
1600         if (t_field_name
1601             && (t_field_name[0] == '\0'
1602                 || (TYPE_CODE (type) == TYPE_CODE_UNION
1603                     && STREQ (t_field_name, "else"))))
1604           {
1605             struct type *field_type = TYPE_FIELD_TYPE (type, i);
1606             if (TYPE_CODE (field_type) == TYPE_CODE_UNION
1607                 || TYPE_CODE (field_type) == TYPE_CODE_STRUCT)
1608               {
1609                 /* Look for a match through the fields of an anonymous union,
1610                    or anonymous struct.  C++ provides anonymous unions.
1611
1612                    In the GNU Chill implementation of variant record types,
1613                    each <alternative field> has an (anonymous) union type,
1614                    each member of the union represents a <variant alternative>.
1615                    Each <variant alternative> is represented as a struct,
1616                    with a member for each <variant field>.  */
1617                    
1618                 value_ptr v;
1619                 int new_offset = offset;
1620
1621                 /* This is pretty gross.  In G++, the offset in an anonymous
1622                    union is relative to the beginning of the enclosing struct.
1623                    In the GNU Chill implementation of variant records,
1624                    the bitpos is zero in an anonymous union field, so we
1625                    have to add the offset of the union here. */
1626                 if (TYPE_CODE (field_type) == TYPE_CODE_STRUCT
1627                     || (TYPE_NFIELDS (field_type) > 0
1628                         && TYPE_FIELD_BITPOS (field_type, 0) == 0))
1629                   new_offset += TYPE_FIELD_BITPOS (type, i) / 8;
1630
1631                 v = search_struct_field (name, arg1, new_offset, field_type,
1632                                          looking_for_baseclass);
1633                 if (v)
1634                   return v;
1635               }
1636           }
1637       }
1638
1639   for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1640     {
1641       value_ptr v;
1642       struct type *basetype = check_typedef (TYPE_BASECLASS (type, i));
1643       /* If we are looking for baseclasses, this is what we get when we
1644          hit them.  But it could happen that the base part's member name
1645          is not yet filled in.  */
1646       int found_baseclass = (looking_for_baseclass
1647                              && TYPE_BASECLASS_NAME (type, i) != NULL
1648                              && STREQ (name, TYPE_BASECLASS_NAME (type, i)));
1649
1650       if (BASETYPE_VIA_VIRTUAL (type, i))
1651         {
1652           int boffset = VALUE_OFFSET (arg1) + offset;
1653           boffset = baseclass_offset (type, i,
1654                                       VALUE_CONTENTS (arg1) + boffset,
1655                                       VALUE_ADDRESS (arg1) + boffset);
1656           if (boffset == -1)
1657             error ("virtual baseclass botch");
1658           if (found_baseclass)
1659             {
1660               value_ptr v2 = allocate_value (basetype);
1661               VALUE_LVAL (v2) = VALUE_LVAL (arg1);
1662               VALUE_ADDRESS (v2) = VALUE_ADDRESS (arg1);
1663               VALUE_OFFSET (v2) = VALUE_OFFSET (arg1) + offset + boffset;
1664               if (VALUE_LAZY (arg1))
1665                 VALUE_LAZY (v2) = 1;
1666               else
1667                 memcpy (VALUE_CONTENTS_RAW (v2),
1668                         VALUE_CONTENTS_RAW (arg1) + offset + boffset,
1669                         TYPE_LENGTH (basetype));
1670               return v2;
1671             }
1672           v = search_struct_field (name, arg1, offset + boffset,
1673                                    TYPE_BASECLASS (type, i),
1674                                    looking_for_baseclass);
1675         }
1676       else if (found_baseclass)
1677         v = value_primitive_field (arg1, offset, i, type);
1678       else
1679         v = search_struct_field (name, arg1,
1680                                  offset + TYPE_BASECLASS_BITPOS (type, i) / 8,
1681                                  basetype, looking_for_baseclass);
1682       if (v) return v;
1683     }
1684   return NULL;
1685 }
1686
1687 /* Helper function used by value_struct_elt to recurse through baseclasses.
1688    Look for a field NAME in ARG1. Adjust the address of ARG1 by OFFSET bytes,
1689    and search in it assuming it has (class) type TYPE.
1690    If found, return value, else if name matched and args not return (value)-1,
1691    else return NULL. */
1692
1693 static value_ptr
1694 search_struct_method (name, arg1p, args, offset, static_memfuncp, type)
1695      char *name;
1696      register value_ptr *arg1p, *args;
1697      int offset, *static_memfuncp;
1698      register struct type *type;
1699 {
1700   int i;
1701   value_ptr v;
1702   int name_matched = 0;
1703   char dem_opname[64];
1704
1705   CHECK_TYPEDEF (type);
1706   for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
1707     {
1708       char *t_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
1709       /* FIXME!  May need to check for ARM demangling here */
1710       if (strncmp(t_field_name, "__", 2)==0 ||
1711         strncmp(t_field_name, "op", 2)==0 ||
1712         strncmp(t_field_name, "type", 4)==0 )
1713         {
1714           if (cplus_demangle_opname(t_field_name, dem_opname, DMGL_ANSI))
1715             t_field_name = dem_opname;
1716           else if (cplus_demangle_opname(t_field_name, dem_opname, 0))
1717             t_field_name = dem_opname; 
1718         }
1719       if (t_field_name && STREQ (t_field_name, name))
1720         {
1721           int j = TYPE_FN_FIELDLIST_LENGTH (type, i) - 1;
1722           struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
1723           name_matched = 1; 
1724
1725           if (j > 0 && args == 0)
1726             error ("cannot resolve overloaded method `%s'", name);
1727           while (j >= 0)
1728             {
1729               if (TYPE_FN_FIELD_STUB (f, j))
1730                 check_stub_method (type, i, j);
1731               if (!typecmp (TYPE_FN_FIELD_STATIC_P (f, j),
1732                             TYPE_FN_FIELD_ARGS (f, j), args))
1733                 {
1734                   if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
1735                     return value_virtual_fn_field (arg1p, f, j, type, offset);
1736                   if (TYPE_FN_FIELD_STATIC_P (f, j) && static_memfuncp)
1737                     *static_memfuncp = 1;
1738                   v = value_fn_field (arg1p, f, j, type, offset);
1739                   if (v != NULL) return v;
1740                 }
1741               j--;
1742             }
1743         }
1744     }
1745
1746   for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1747     {
1748       int base_offset;
1749
1750       if (BASETYPE_VIA_VIRTUAL (type, i))
1751         {
1752           base_offset = VALUE_OFFSET (*arg1p) + offset;
1753           base_offset =
1754             baseclass_offset (type, i,
1755                               VALUE_CONTENTS (*arg1p) + base_offset,
1756                               VALUE_ADDRESS (*arg1p) + base_offset);
1757           if (base_offset == -1)
1758             error ("virtual baseclass botch");
1759         }
1760       else
1761         {
1762           base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
1763         }
1764       v = search_struct_method (name, arg1p, args, base_offset + offset,
1765                                 static_memfuncp, TYPE_BASECLASS (type, i));
1766       if (v == (value_ptr) -1)
1767         {
1768           name_matched = 1;
1769         }
1770       else if (v)
1771         {
1772 /* FIXME-bothner:  Why is this commented out?  Why is it here?  */
1773 /*        *arg1p = arg1_tmp;*/
1774           return v;
1775         }
1776     }
1777   if (name_matched) return (value_ptr) -1;
1778   else return NULL;
1779 }
1780
1781 /* Given *ARGP, a value of type (pointer to a)* structure/union,
1782    extract the component named NAME from the ultimate target structure/union
1783    and return it as a value with its appropriate type.
1784    ERR is used in the error message if *ARGP's type is wrong.
1785
1786    C++: ARGS is a list of argument types to aid in the selection of
1787    an appropriate method. Also, handle derived types.
1788
1789    STATIC_MEMFUNCP, if non-NULL, points to a caller-supplied location
1790    where the truthvalue of whether the function that was resolved was
1791    a static member function or not is stored.
1792
1793    ERR is an error message to be printed in case the field is not found.  */
1794
1795 value_ptr
1796 value_struct_elt (argp, args, name, static_memfuncp, err)
1797      register value_ptr *argp, *args;
1798      char *name;
1799      int *static_memfuncp;
1800      char *err;
1801 {
1802   register struct type *t;
1803   value_ptr v;
1804
1805   COERCE_ARRAY (*argp);
1806
1807   t = check_typedef (VALUE_TYPE (*argp));
1808
1809   /* Follow pointers until we get to a non-pointer.  */
1810
1811   while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
1812     {
1813       *argp = value_ind (*argp);
1814       /* Don't coerce fn pointer to fn and then back again!  */
1815       if (TYPE_CODE (VALUE_TYPE (*argp)) != TYPE_CODE_FUNC)
1816         COERCE_ARRAY (*argp);
1817       t = check_typedef (VALUE_TYPE (*argp));
1818     }
1819
1820   if (TYPE_CODE (t) == TYPE_CODE_MEMBER)
1821     error ("not implemented: member type in value_struct_elt");
1822
1823   if (   TYPE_CODE (t) != TYPE_CODE_STRUCT
1824       && TYPE_CODE (t) != TYPE_CODE_UNION)
1825     error ("Attempt to extract a component of a value that is not a %s.", err);
1826
1827   /* Assume it's not, unless we see that it is.  */
1828   if (static_memfuncp)
1829     *static_memfuncp =0;
1830
1831   if (!args)
1832     {
1833       /* if there are no arguments ...do this...  */
1834
1835       /* Try as a field first, because if we succeed, there
1836          is less work to be done.  */
1837       v = search_struct_field (name, *argp, 0, t, 0);
1838       if (v)
1839         return v;
1840
1841       /* C++: If it was not found as a data field, then try to
1842          return it as a pointer to a method.  */
1843
1844       if (destructor_name_p (name, t))
1845         error ("Cannot get value of destructor");
1846
1847       v = search_struct_method (name, argp, args, 0, static_memfuncp, t);
1848
1849       if (v == (value_ptr) -1)
1850         error ("Cannot take address of a method");
1851       else if (v == 0)
1852         {
1853           if (TYPE_NFN_FIELDS (t))
1854             error ("There is no member or method named %s.", name);
1855           else
1856             error ("There is no member named %s.", name);
1857         }
1858       return v;
1859     }
1860
1861   if (destructor_name_p (name, t))
1862     {
1863       if (!args[1])
1864         {
1865           /* destructors are a special case.  */
1866           v = value_fn_field (NULL, TYPE_FN_FIELDLIST1 (t, 0),
1867                               TYPE_FN_FIELDLIST_LENGTH (t, 0), 0, 0);
1868           if (!v) error("could not find destructor function named %s.", name);
1869           else return v;
1870         }
1871       else
1872         {
1873           error ("destructor should not have any argument");
1874         }
1875     }
1876   else
1877     v = search_struct_method (name, argp, args, 0, static_memfuncp, t);
1878
1879   if (v == (value_ptr) -1)
1880     {
1881         error("Argument list of %s mismatch with component in the structure.", name);
1882     }
1883   else if (v == 0)
1884     {
1885       /* See if user tried to invoke data as function.  If so,
1886          hand it back.  If it's not callable (i.e., a pointer to function),
1887          gdb should give an error.  */
1888       v = search_struct_field (name, *argp, 0, t, 0);
1889     }
1890
1891   if (!v)
1892     error ("Structure has no component named %s.", name);
1893   return v;
1894 }
1895
1896 /* C++: return 1 is NAME is a legitimate name for the destructor
1897    of type TYPE.  If TYPE does not have a destructor, or
1898    if NAME is inappropriate for TYPE, an error is signaled.  */
1899 int
1900 destructor_name_p (name, type)
1901      const char *name;
1902      const struct type *type;
1903 {
1904   /* destructors are a special case.  */
1905
1906   if (name[0] == '~')
1907     {
1908       char *dname = type_name_no_tag (type);
1909       char *cp = strchr (dname, '<');
1910       unsigned int len;
1911
1912       /* Do not compare the template part for template classes.  */
1913       if (cp == NULL)
1914         len = strlen (dname);
1915       else
1916         len = cp - dname;
1917       if (strlen (name + 1) != len || !STREQN (dname, name + 1, len))
1918         error ("name of destructor must equal name of class");
1919       else
1920         return 1;
1921     }
1922   return 0;
1923 }
1924
1925 /* Helper function for check_field: Given TYPE, a structure/union,
1926    return 1 if the component named NAME from the ultimate
1927    target structure/union is defined, otherwise, return 0. */
1928
1929 static int
1930 check_field_in (type, name)
1931      register struct type *type;
1932      const char *name;
1933 {
1934   register int i;
1935
1936   for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
1937     {
1938       char *t_field_name = TYPE_FIELD_NAME (type, i);
1939       if (t_field_name && STREQ (t_field_name, name))
1940         return 1;
1941     }
1942
1943   /* C++: If it was not found as a data field, then try to
1944      return it as a pointer to a method.  */
1945
1946   /* Destructors are a special case.  */
1947   if (destructor_name_p (name, type))
1948     return 1;
1949
1950   for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; --i)
1951     {
1952       if (STREQ (TYPE_FN_FIELDLIST_NAME (type, i), name))
1953         return 1;
1954     }
1955
1956   for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1957     if (check_field_in (TYPE_BASECLASS (type, i), name))
1958       return 1;
1959       
1960   return 0;
1961 }
1962
1963
1964 /* C++: Given ARG1, a value of type (pointer to a)* structure/union,
1965    return 1 if the component named NAME from the ultimate
1966    target structure/union is defined, otherwise, return 0.  */
1967
1968 int
1969 check_field (arg1, name)
1970      register value_ptr arg1;
1971      const char *name;
1972 {
1973   register struct type *t;
1974
1975   COERCE_ARRAY (arg1);
1976
1977   t = VALUE_TYPE (arg1);
1978
1979   /* Follow pointers until we get to a non-pointer.  */
1980
1981   for (;;)
1982     {
1983       CHECK_TYPEDEF (t);
1984       if (TYPE_CODE (t) != TYPE_CODE_PTR && TYPE_CODE (t) != TYPE_CODE_REF)
1985         break;
1986       t = TYPE_TARGET_TYPE (t);
1987     }
1988
1989   if (TYPE_CODE (t) == TYPE_CODE_MEMBER)
1990     error ("not implemented: member type in check_field");
1991
1992   if (   TYPE_CODE (t) != TYPE_CODE_STRUCT
1993       && TYPE_CODE (t) != TYPE_CODE_UNION)
1994     error ("Internal error: `this' is not an aggregate");
1995
1996   return check_field_in (t, name);
1997 }
1998
1999 /* C++: Given an aggregate type CURTYPE, and a member name NAME,
2000    return the address of this member as a "pointer to member"
2001    type.  If INTYPE is non-null, then it will be the type
2002    of the member we are looking for.  This will help us resolve
2003    "pointers to member functions".  This function is used
2004    to resolve user expressions of the form "DOMAIN::NAME".  */
2005
2006 value_ptr
2007 value_struct_elt_for_reference (domain, offset, curtype, name, intype)
2008      struct type *domain, *curtype, *intype;
2009      int offset;
2010      char *name;
2011 {
2012   register struct type *t = curtype;
2013   register int i;
2014   value_ptr v;
2015
2016   if (   TYPE_CODE (t) != TYPE_CODE_STRUCT
2017       && TYPE_CODE (t) != TYPE_CODE_UNION)
2018     error ("Internal error: non-aggregate type to value_struct_elt_for_reference");
2019
2020   for (i = TYPE_NFIELDS (t) - 1; i >= TYPE_N_BASECLASSES (t); i--)
2021     {
2022       char *t_field_name = TYPE_FIELD_NAME (t, i);
2023       
2024       if (t_field_name && STREQ (t_field_name, name))
2025         {
2026           if (TYPE_FIELD_STATIC (t, i))
2027             {
2028               char *phys_name = TYPE_FIELD_STATIC_PHYSNAME (t, i);
2029               struct symbol *sym =
2030                 lookup_symbol (phys_name, 0, VAR_NAMESPACE, 0, NULL);
2031               if (sym == NULL)
2032                 error ("Internal error: could not find physical static variable named %s",
2033                        phys_name);
2034               return value_at (SYMBOL_TYPE (sym),
2035                                (CORE_ADDR)SYMBOL_BLOCK_VALUE (sym));
2036             }
2037           if (TYPE_FIELD_PACKED (t, i))
2038             error ("pointers to bitfield members not allowed");
2039           
2040           return value_from_longest
2041             (lookup_reference_type (lookup_member_type (TYPE_FIELD_TYPE (t, i),
2042                                                         domain)),
2043              offset + (LONGEST) (TYPE_FIELD_BITPOS (t, i) >> 3));
2044         }
2045     }
2046
2047   /* C++: If it was not found as a data field, then try to
2048      return it as a pointer to a method.  */
2049
2050   /* Destructors are a special case.  */
2051   if (destructor_name_p (name, t))
2052     {
2053       error ("member pointers to destructors not implemented yet");
2054     }
2055
2056   /* Perform all necessary dereferencing.  */
2057   while (intype && TYPE_CODE (intype) == TYPE_CODE_PTR)
2058     intype = TYPE_TARGET_TYPE (intype);
2059
2060   for (i = TYPE_NFN_FIELDS (t) - 1; i >= 0; --i)
2061     {
2062       char *t_field_name = TYPE_FN_FIELDLIST_NAME (t, i);
2063       char dem_opname[64];
2064
2065       if (strncmp(t_field_name, "__", 2)==0 ||
2066         strncmp(t_field_name, "op", 2)==0 ||
2067         strncmp(t_field_name, "type", 4)==0 )
2068         {
2069           if (cplus_demangle_opname(t_field_name, dem_opname, DMGL_ANSI))
2070             t_field_name = dem_opname;
2071           else if (cplus_demangle_opname(t_field_name, dem_opname, 0))
2072             t_field_name = dem_opname; 
2073         }
2074       if (t_field_name && STREQ (t_field_name, name))
2075         {
2076           int j = TYPE_FN_FIELDLIST_LENGTH (t, i);
2077           struct fn_field *f = TYPE_FN_FIELDLIST1 (t, i);
2078           
2079           if (intype == 0 && j > 1)
2080             error ("non-unique member `%s' requires type instantiation", name);
2081           if (intype)
2082             {
2083               while (j--)
2084                 if (TYPE_FN_FIELD_TYPE (f, j) == intype)
2085                   break;
2086               if (j < 0)
2087                 error ("no member function matches that type instantiation");
2088             }
2089           else
2090             j = 0;
2091           
2092           if (TYPE_FN_FIELD_STUB (f, j))
2093             check_stub_method (t, i, j);
2094           if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
2095             {
2096               return value_from_longest
2097                 (lookup_reference_type
2098                  (lookup_member_type (TYPE_FN_FIELD_TYPE (f, j),
2099                                       domain)),
2100                  (LONGEST) METHOD_PTR_FROM_VOFFSET (TYPE_FN_FIELD_VOFFSET (f, j)));
2101             }
2102           else
2103             {
2104               struct symbol *s = lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
2105                                                 0, VAR_NAMESPACE, 0, NULL);
2106               if (s == NULL)
2107                 {
2108                   v = 0;
2109                 }
2110               else
2111                 {
2112                   v = read_var_value (s, 0);
2113 #if 0
2114                   VALUE_TYPE (v) = lookup_reference_type
2115                     (lookup_member_type (TYPE_FN_FIELD_TYPE (f, j),
2116                                          domain));
2117 #endif
2118                 }
2119               return v;
2120             }
2121         }
2122     }
2123   for (i = TYPE_N_BASECLASSES (t) - 1; i >= 0; i--)
2124     {
2125       value_ptr v;
2126       int base_offset;
2127
2128       if (BASETYPE_VIA_VIRTUAL (t, i))
2129         base_offset = 0;
2130       else
2131         base_offset = TYPE_BASECLASS_BITPOS (t, i) / 8;
2132       v = value_struct_elt_for_reference (domain,
2133                                           offset + base_offset,
2134                                           TYPE_BASECLASS (t, i),
2135                                           name,
2136                                           intype);
2137       if (v)
2138         return v;
2139     }
2140   return 0;
2141 }
2142
2143 /* C++: return the value of the class instance variable, if one exists.
2144    Flag COMPLAIN signals an error if the request is made in an
2145    inappropriate context.  */
2146
2147 value_ptr
2148 value_of_this (complain)
2149      int complain;
2150 {
2151   struct symbol *func, *sym;
2152   struct block *b;
2153   int i;
2154   static const char funny_this[] = "this";
2155   value_ptr this;
2156
2157   if (selected_frame == 0)
2158     if (complain)
2159       error ("no frame selected");
2160     else return 0;
2161
2162   func = get_frame_function (selected_frame);
2163   if (!func)
2164     {
2165       if (complain)
2166         error ("no `this' in nameless context");
2167       else return 0;
2168     }
2169
2170   b = SYMBOL_BLOCK_VALUE (func);
2171   i = BLOCK_NSYMS (b);
2172   if (i <= 0)
2173     if (complain)
2174       error ("no args, no `this'");
2175     else return 0;
2176
2177   /* Calling lookup_block_symbol is necessary to get the LOC_REGISTER
2178      symbol instead of the LOC_ARG one (if both exist).  */
2179   sym = lookup_block_symbol (b, funny_this, VAR_NAMESPACE);
2180   if (sym == NULL)
2181     {
2182       if (complain)
2183         error ("current stack frame not in method");
2184       else
2185         return NULL;
2186     }
2187
2188   this = read_var_value (sym, selected_frame);
2189   if (this == 0 && complain)
2190     error ("`this' argument at unknown address");
2191   return this;
2192 }
2193
2194 /* Create a slice (sub-string, sub-array) of ARRAY, that is LENGTH elements
2195    long, starting at LOWBOUND.  The result has the same lower bound as
2196    the original ARRAY.  */
2197
2198 value_ptr
2199 value_slice (array, lowbound, length)
2200      value_ptr array;
2201      int lowbound, length;
2202 {
2203   struct type *slice_range_type, *slice_type, *range_type;
2204   LONGEST lowerbound, upperbound, offset;
2205   value_ptr slice;
2206   struct type *array_type;
2207   array_type = check_typedef (VALUE_TYPE (array));
2208   COERCE_VARYING_ARRAY (array, array_type);
2209   if (TYPE_CODE (array_type) != TYPE_CODE_ARRAY
2210       && TYPE_CODE (array_type) != TYPE_CODE_STRING
2211       && TYPE_CODE (array_type) != TYPE_CODE_BITSTRING)
2212     error ("cannot take slice of non-array");
2213   range_type = TYPE_INDEX_TYPE (array_type);
2214   if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
2215     error ("slice from bad array or bitstring");
2216   if (lowbound < lowerbound || length < 0
2217       || lowbound + length - 1 > upperbound
2218       /* Chill allows zero-length strings but not arrays. */
2219       || (current_language->la_language == language_chill
2220           && length == 0 && TYPE_CODE (array_type) == TYPE_CODE_ARRAY))
2221     error ("slice out of range");
2222   /* FIXME-type-allocation: need a way to free this type when we are
2223      done with it.  */
2224   slice_range_type = create_range_type ((struct type*) NULL,
2225                                         TYPE_TARGET_TYPE (range_type),
2226                                         lowbound, lowbound + length - 1);
2227   if (TYPE_CODE (array_type) == TYPE_CODE_BITSTRING)
2228     {
2229       int i;
2230       slice_type = create_set_type ((struct type*) NULL, slice_range_type);
2231       TYPE_CODE (slice_type) = TYPE_CODE_BITSTRING;
2232       slice = value_zero (slice_type, not_lval);
2233       for (i = 0; i < length; i++)
2234         {
2235           int element = value_bit_index (array_type,
2236                                          VALUE_CONTENTS (array),
2237                                          lowbound + i);
2238           if (element < 0)
2239             error ("internal error accessing bitstring");
2240           else if (element > 0)
2241             {
2242               int j = i % TARGET_CHAR_BIT;
2243               if (BITS_BIG_ENDIAN)
2244                 j = TARGET_CHAR_BIT - 1 - j;
2245               VALUE_CONTENTS_RAW (slice)[i / TARGET_CHAR_BIT] |= (1 << j);
2246             }
2247         }
2248       /* We should set the address, bitssize, and bitspos, so the clice
2249          can be used on the LHS, but that may require extensions to
2250          value_assign.  For now, just leave as a non_lval.  FIXME.  */
2251     }
2252   else
2253     {
2254       struct type *element_type = TYPE_TARGET_TYPE (array_type);
2255       offset
2256         = (lowbound - lowerbound) * TYPE_LENGTH (check_typedef (element_type));
2257       slice_type = create_array_type ((struct type*) NULL, element_type,
2258                                       slice_range_type);
2259       TYPE_CODE (slice_type) = TYPE_CODE (array_type);
2260       slice = allocate_value (slice_type);
2261       if (VALUE_LAZY (array))
2262         VALUE_LAZY (slice) = 1;
2263       else
2264         memcpy (VALUE_CONTENTS (slice), VALUE_CONTENTS (array) + offset,
2265                 TYPE_LENGTH (slice_type));
2266       if (VALUE_LVAL (array) == lval_internalvar)
2267         VALUE_LVAL (slice) = lval_internalvar_component;
2268       else
2269         VALUE_LVAL (slice) = VALUE_LVAL (array);
2270       VALUE_ADDRESS (slice) = VALUE_ADDRESS (array);
2271       VALUE_OFFSET (slice) = VALUE_OFFSET (array) + offset;
2272     }
2273   return slice;
2274 }
2275
2276 /* Assuming chill_varying_type (VARRAY) is true, return an equivalent
2277    value as a fixed-length array. */
2278
2279 value_ptr
2280 varying_to_slice (varray)
2281      value_ptr varray;
2282 {
2283   struct type *vtype = check_typedef (VALUE_TYPE (varray));
2284   LONGEST length = unpack_long (TYPE_FIELD_TYPE (vtype, 0),
2285                                 VALUE_CONTENTS (varray)
2286                                 + TYPE_FIELD_BITPOS (vtype, 0) / 8);
2287   return value_slice (value_primitive_field (varray, 0, 1, vtype), 0, length);
2288 }
2289
2290 /* Create a value for a FORTRAN complex number.  Currently most of 
2291    the time values are coerced to COMPLEX*16 (i.e. a complex number 
2292    composed of 2 doubles.  This really should be a smarter routine 
2293    that figures out precision inteligently as opposed to assuming 
2294    doubles. FIXME: fmb */ 
2295
2296 value_ptr
2297 value_literal_complex (arg1, arg2, type)
2298      value_ptr arg1;
2299      value_ptr arg2;
2300      struct type *type;
2301 {
2302   register value_ptr val;
2303   struct type *real_type = TYPE_TARGET_TYPE (type);
2304
2305   val = allocate_value (type);
2306   arg1 = value_cast (real_type, arg1);
2307   arg2 = value_cast (real_type, arg2);
2308
2309   memcpy (VALUE_CONTENTS_RAW (val),
2310           VALUE_CONTENTS (arg1), TYPE_LENGTH (real_type));
2311   memcpy (VALUE_CONTENTS_RAW (val) + TYPE_LENGTH (real_type),
2312           VALUE_CONTENTS (arg2), TYPE_LENGTH (real_type));
2313   return val;
2314 }
2315
2316 /* Cast a value into the appropriate complex data type. */
2317
2318 static value_ptr
2319 cast_into_complex (type, val)
2320      struct type *type;
2321      register value_ptr val;
2322 {
2323   struct type *real_type = TYPE_TARGET_TYPE (type);
2324   if (TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_COMPLEX)
2325     {
2326       struct type *val_real_type = TYPE_TARGET_TYPE (VALUE_TYPE (val));
2327       value_ptr re_val = allocate_value (val_real_type);
2328       value_ptr im_val = allocate_value (val_real_type);
2329
2330       memcpy (VALUE_CONTENTS_RAW (re_val),
2331               VALUE_CONTENTS (val), TYPE_LENGTH (val_real_type));
2332       memcpy (VALUE_CONTENTS_RAW (im_val),
2333               VALUE_CONTENTS (val) + TYPE_LENGTH (val_real_type),
2334                TYPE_LENGTH (val_real_type));
2335
2336       return value_literal_complex (re_val, im_val, type);
2337     }
2338   else if (TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_FLT
2339            || TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_INT)
2340     return value_literal_complex (val, value_zero (real_type, not_lval), type);
2341   else
2342     error ("cannot cast non-number to complex");
2343 }
2344
2345 void
2346 _initialize_valops ()
2347 {
2348 #if 0
2349   add_show_from_set
2350     (add_set_cmd ("abandon", class_support, var_boolean, (char *)&auto_abandon,
2351                   "Set automatic abandonment of expressions upon failure.",
2352                   &setlist),
2353      &showlist);
2354 #endif
2355 }