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