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