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