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