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