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