1 /* Perform non-arithmetic operations on values, for GDB.
2 Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1994
3 Free Software Foundation, Inc.
5 This file is part of GDB.
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.
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.
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. */
34 /* Local functions. */
37 typecmp PARAMS ((int staticp, struct type *t1[], value t2[]));
40 find_function_addr PARAMS ((value, struct type **));
43 value_push PARAMS ((CORE_ADDR, value));
46 value_arg_push PARAMS ((CORE_ADDR, value));
49 search_struct_field PARAMS ((char *, value, int, struct type *, int));
52 search_struct_method PARAMS ((char *, value *, value *, int, int *,
56 check_field_in PARAMS ((struct type *, const char *));
59 allocate_space_in_inferior PARAMS ((int));
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. */
66 allocate_space_in_inferior (len)
70 register struct symbol *sym;
71 struct minimal_symbol *msymbol;
76 /* Find the address of malloc in the inferior. */
78 sym = lookup_symbol ("malloc", 0, VAR_NAMESPACE, 0, NULL);
81 if (SYMBOL_CLASS (sym) != LOC_BLOCK)
83 error ("\"malloc\" exists in this program but is not a function.");
85 val = value_of_variable (sym, NULL);
89 msymbol = lookup_minimal_symbol ("malloc", (struct objfile *) NULL);
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);
100 error ("evaluation of this expression requires the program to have a function \"malloc\".");
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))
108 error ("No memory available to program.");
110 return (value_as_long (val));
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. */
119 value_cast (type, arg2)
123 register enum type_code code1;
124 register enum type_code code2;
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)
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);
137 if ( code1 == TYPE_CODE_STRUCT
138 && code2 == TYPE_CODE_STRUCT
139 && TYPE_NAME (type) != 0)
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);
148 VALUE_TYPE (v) = type;
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)))
159 if (code1 == TYPE_CODE_PTR && code2 == TYPE_CODE_PTR)
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 */
170 value v = search_struct_field (type_name_no_tag (t1),
171 value_ind (arg2), 0, t2, 1);
175 VALUE_TYPE (v) = type;
179 /* No superclass found, just fall through to change ptr type. */
181 VALUE_TYPE (arg2) = type;
184 else if (VALUE_LVAL (arg2) == lval_memory)
186 return value_at_lazy (type, VALUE_ADDRESS (arg2) + VALUE_OFFSET (arg2));
188 else if (code1 == TYPE_CODE_VOID)
190 return value_zero (builtin_type_void, not_lval);
194 error ("Invalid cast.");
199 /* Create a value of type TYPE that is zero, and return it. */
202 value_zero (type, lv)
206 register value val = allocate_value (type);
208 memset (VALUE_CONTENTS (val), 0, TYPE_LENGTH (type));
209 VALUE_LVAL (val) = lv;
214 /* Return a value with type TYPE located at ADDR.
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. */
224 value_at (type, addr)
228 register value val = allocate_value (type);
230 read_memory (addr, VALUE_CONTENTS_RAW (val), TYPE_LENGTH (type));
232 VALUE_LVAL (val) = lval_memory;
233 VALUE_ADDRESS (val) = addr;
238 /* Return a lazy value with type TYPE located at ADDR (cf. value_at). */
241 value_at_lazy (type, addr)
245 register value val = allocate_value (type);
247 VALUE_LVAL (val) = lval_memory;
248 VALUE_ADDRESS (val) = addr;
249 VALUE_LAZY (val) = 1;
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.
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.
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
267 value_fetch_lazy (val)
270 CORE_ADDR addr = VALUE_ADDRESS (val) + VALUE_OFFSET (val);
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;
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. */
284 value_assign (toval, fromval)
285 register value toval, fromval;
287 register struct type *type;
289 char raw_buffer[MAX_REGISTER_RAW_SIZE];
292 if (!toval->modifiable)
293 error ("Left operand of assignment is not a modifiable lvalue.");
295 COERCE_ARRAY (fromval);
298 type = VALUE_TYPE (toval);
299 if (VALUE_LVAL (toval) != lval_internalvar)
300 fromval = value_cast (type, fromval);
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. */
307 #ifdef REGISTER_CONVERTIBLE
308 if (VALUE_REGNO (toval) >= 0
309 && REGISTER_CONVERTIBLE (VALUE_REGNO (toval)))
311 int regno = VALUE_REGNO (toval);
312 if (REGISTER_CONVERTIBLE (regno))
314 REGISTER_CONVERT_TO_RAW (VALUE_TYPE (fromval), regno,
315 VALUE_CONTENTS (fromval), raw_buffer);
316 use_buffer = REGISTER_RAW_SIZE (regno);
321 switch (VALUE_LVAL (toval))
323 case lval_internalvar:
324 set_internalvar (VALUE_INTERNALVAR (toval), fromval);
327 case lval_internalvar_component:
328 set_internalvar_component (VALUE_INTERNALVAR (toval),
329 VALUE_OFFSET (toval),
330 VALUE_BITPOS (toval),
331 VALUE_BITSIZE (toval),
336 if (VALUE_BITSIZE (toval))
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)
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);
350 read_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
352 modify_field (buffer, value_as_long (fromval),
353 VALUE_BITPOS (toval), VALUE_BITSIZE (toval));
354 write_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
358 write_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
359 raw_buffer, use_buffer);
361 write_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
362 VALUE_CONTENTS (fromval), TYPE_LENGTH (type));
366 if (VALUE_BITSIZE (toval))
368 char buffer[sizeof (LONGEST)];
369 int len = REGISTER_RAW_SIZE (VALUE_REGNO (toval));
371 if (len > sizeof (LONGEST))
372 error ("Can't handle bitfields in registers larger than %d bits.",
373 sizeof (LONGEST) * HOST_CHAR_BIT);
375 if (VALUE_BITPOS (toval) + VALUE_BITSIZE (toval)
376 > len * HOST_CHAR_BIT)
377 /* Getting this right would involve being very careful about
380 Can't handle bitfield which doesn't fit in a single register.");
382 read_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
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),
390 write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
391 raw_buffer, use_buffer);
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));
402 write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
403 VALUE_CONTENTS (fromval), TYPE_LENGTH (type));
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
411 reinit_frame_cache ();
414 case lval_reg_frame_relative:
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;
425 /* Make the buffer large enough in all cases. */
426 char *buffer = (char *) alloca (amount_to_copy
428 + MAX_REGISTER_RAW_SIZE);
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))
440 error ("Value being assigned to is no longer active.");
442 amount_to_copy += (reg_size - amount_to_copy % reg_size);
445 for ((regno = VALUE_FRAME_REGNUM (toval) + reg_offset,
447 amount_copied < amount_to_copy;
448 amount_copied += reg_size, regno++)
450 get_saved_register (buffer + amount_copied,
451 (int *)NULL, (CORE_ADDR *)NULL,
452 frame, regno, (enum lval_type *)NULL);
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));
461 memcpy (buffer + byte_offset, raw_buffer, use_buffer);
463 memcpy (buffer + byte_offset, VALUE_CONTENTS (fromval),
467 for ((regno = VALUE_FRAME_REGNUM (toval) + reg_offset,
469 amount_copied < amount_to_copy;
470 amount_copied += reg_size, regno++)
476 /* Just find out where to put it. */
477 get_saved_register ((char *)NULL,
478 &optim, &addr, frame, regno, &lval);
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);
487 error ("Attempt to assign to an unmodifiable value.");
494 error ("Left operand of assignment is not an lvalue.");
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). */
500 if (VALUE_LVAL (toval) == lval_internalvar
501 || VALUE_LVAL (toval) == lval_internalvar_component)
503 type = VALUE_TYPE (fromval);
506 val = allocate_value (type);
507 memcpy (val, toval, VALUE_CONTENTS_RAW (val) - (char *) val);
508 memcpy (VALUE_CONTENTS_RAW (val), VALUE_CONTENTS (fromval),
510 VALUE_TYPE (val) = type;
515 /* Extend a value VAL to COUNT repetitions of its type. */
518 value_repeat (arg1, count)
524 if (VALUE_LVAL (arg1) != lval_memory)
525 error ("Only values in memory can be extended with '@'.");
527 error ("Invalid number %d of repetitions.", count);
529 val = allocate_repeat_value (VALUE_TYPE (arg1), count);
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);
541 value_of_variable (var, b)
549 /* Use selected frame. */
553 fr = block_innermost_frame (b);
554 if (fr == NULL && symbol_read_needs_frame (var))
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)));
561 error ("No frame is currently executing in specified block");
564 val = read_var_value (var, fr);
566 error ("Address of symbol \"%s\" is unknown.", SYMBOL_SOURCE_NAME (var));
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
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:
579 (&array[0] - (lowerbound * sizeof array[0])) + (index * sizeof array[0])
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:
584 (&array[0] + ((index - lowerbound) * sizeof array[0]))
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.
594 value_coerce_array (arg1)
597 register struct type *type;
599 if (VALUE_LVAL (arg1) != lval_memory)
600 error ("Attempt to take address of value not located in memory.");
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));
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);
611 return value_from_longest (lookup_pointer_type (type),
612 (LONGEST) (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
615 /* Given a value which is a function, return a value which is a pointer
619 value_coerce_function (arg1)
623 if (VALUE_LVAL (arg1) != lval_memory)
624 error ("Attempt to take address of value not located in memory.");
626 return value_from_longest (lookup_pointer_type (VALUE_TYPE (arg1)),
627 (LONGEST) (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
630 /* Return a pointer value for the object for which ARG1 is the contents. */
636 struct type *type = VALUE_TYPE (arg1);
637 if (TYPE_CODE (type) == TYPE_CODE_REF)
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));
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);
652 if (VALUE_LVAL (arg1) != lval_memory)
653 error ("Attempt to take address of value not located in memory.");
655 return value_from_longest (lookup_pointer_type (type),
656 (LONGEST) (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
659 /* Given a value of a pointer type, apply the C unary * operator to it. */
667 if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_MEMBER)
668 error ("not implemented: member types in value_ind");
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 */
684 /* Pushing small parts of stack frames. */
686 /* Push one word (the size of object that a register holds). */
691 unsigned LONGEST word;
693 register int len = REGISTER_SIZE;
694 char buffer[MAX_REGISTER_RAW_SIZE];
696 store_unsigned_integer (buffer, len, word);
699 write_memory (sp, buffer, len);
700 #else /* stack grows upward */
701 write_memory (sp, buffer, len);
703 #endif /* stack grows upward */
708 /* Push LEN bytes with data at BUFFER. */
711 push_bytes (sp, buffer, len)
718 write_memory (sp, buffer, len);
719 #else /* stack grows upward */
720 write_memory (sp, buffer, len);
722 #endif /* stack grows upward */
727 /* Push onto the stack the specified value VALUE. */
731 register CORE_ADDR sp;
734 register int len = TYPE_LENGTH (VALUE_TYPE (arg));
738 write_memory (sp, VALUE_CONTENTS (arg), len);
739 #else /* stack grows upward */
740 write_memory (sp, VALUE_CONTENTS (arg), len);
742 #endif /* stack grows upward */
747 /* Perform the standard coercions that are specified
748 for arguments to be passed to C functions. */
751 value_arg_coerce (arg)
754 register struct type *type;
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
762 if (TYPE_CODE (VALUE_TYPE (arg)) == TYPE_CODE_ENUM)
763 arg = value_cast (builtin_type_unsigned_int, arg);
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);
773 type = VALUE_TYPE (arg);
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);
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);
786 /* Push the value ARG, first coercing it as an argument
790 value_arg_push (sp, arg)
791 register CORE_ADDR sp;
794 return value_push (sp, value_arg_coerce (arg));
797 /* Determine a function's address and its return type from its value.
798 Calls error() if the function is not valid for calling. */
801 find_function_addr (function, retval_type)
803 struct type **retval_type;
805 register struct type *ftype = VALUE_TYPE (function);
806 register enum type_code code = TYPE_CODE (ftype);
807 struct type *value_type;
810 /* If it's a member function, just look at the function
813 /* Determine address to call. */
814 if (code == TYPE_CODE_FUNC || code == TYPE_CODE_METHOD)
816 funaddr = VALUE_ADDRESS (function);
817 value_type = TYPE_TARGET_TYPE (ftype);
819 else if (code == TYPE_CODE_PTR)
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));
826 value_type = builtin_type_int;
828 else if (code == TYPE_CODE_INT)
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));
835 /* Handle integer used as address of a function. */
836 funaddr = (CORE_ADDR) value_as_long (function);
838 value_type = builtin_type_int;
841 error ("Invalid data type for function to be called.");
843 *retval_type = value_type;
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. */
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. */
865 call_function_by_hand (function, nargs, args)
870 register CORE_ADDR 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)];
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;
889 if (!target_has_execution)
892 save_inferior_status (&inf_status, 1);
893 old_chain = make_cleanup (restore_inferior_status, &inf_status);
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. */
900 old_sp = sp = read_sp ();
902 #if 1 INNER_THAN 2 /* Stack grows down */
905 #else /* Stack grows up */
910 funaddr = find_function_addr (function, &value_type);
913 struct block *b = block_for_pc (funaddr);
914 /* If compiled without -g, assume GCC. */
915 using_gcc = b == NULL || BLOCK_GCC_COMPILED (b);
918 /* Are we returning a value using a structure return or a normal
921 struct_return = using_struct_return (function, funaddr, value_type,
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],
929 (unsigned LONGEST)dummy[i]);
931 #ifdef GDB_TARGET_IS_HPPA
932 real_pc = FIX_CALL_DUMMY (dummy1, start_sp, funaddr, nargs, args,
933 value_type, using_gcc);
935 FIX_CALL_DUMMY (dummy1, start_sp, funaddr, nargs, args,
936 value_type, using_gcc);
940 #if CALL_DUMMY_LOCATION == ON_STACK
941 write_memory (start_sp, (char *)dummy1, sizeof dummy);
942 #endif /* On stack. */
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. */
948 extern CORE_ADDR text_end;
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");
956 real_pc = text_end - sizeof dummy;
957 write_memory (real_pc, (char *)dummy1, sizeof dummy);
959 #endif /* Before text_end. */
961 #if CALL_DUMMY_LOCATION == AFTER_TEXT_END
963 extern CORE_ADDR text_end;
967 errcode = target_write_memory (real_pc, (char *)dummy1, sizeof dummy);
969 error ("Cannot write text segment -- call_function failed");
971 #endif /* After text_end. */
973 #if CALL_DUMMY_LOCATION == AT_ENTRY_POINT
975 #endif /* At entry point. */
978 sp = old_sp; /* It really is used, for some ifdef's... */
982 /* If stack grows down, we must leave a hole at the top. */
986 /* Reserve space for the return structure to be written on the
987 stack, if necessary */
990 len += TYPE_LENGTH (value_type);
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;
998 sp -= STACK_ALIGN (len) - len;
1000 sp += STACK_ALIGN (len) - len;
1003 #endif /* STACK_ALIGN */
1005 /* Reserve space for the return structure to be written on the
1006 stack, if necessary */
1011 sp -= TYPE_LENGTH (value_type);
1015 sp += TYPE_LENGTH (value_type);
1019 #if defined (REG_STRUCT_HAS_ADDR)
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)
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. */
1033 /* Push the structure. */
1034 sp = value_push (sp, args[i]);
1036 /* The stack grows down, so the address of the thing we push
1037 is the stack pointer after we push it. */
1040 /* The value we're going to pass is the address of the thing
1042 args[i] = value_from_longest (lookup_pointer_type (value_type),
1046 #endif /* REG_STRUCT_HAS_ADDR. */
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 */
1055 #ifdef CALL_DUMMY_STACK_ADJUST
1057 sp -= CALL_DUMMY_STACK_ADJUST;
1059 sp += CALL_DUMMY_STACK_ADJUST;
1061 #endif /* CALL_DUMMY_STACK_ADJUST */
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.
1069 Also note that on some machines (like the sparc) pcc uses a
1070 convention like gcc's. */
1073 STORE_STRUCT_RETURN (struct_addr, sp);
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.) */
1082 char retbuf[REGISTER_BYTES];
1084 struct symbol *symbol;
1087 symbol = find_pc_function (funaddr);
1090 name = SYMBOL_SOURCE_NAME (symbol);
1094 /* Try the minimal symbols. */
1095 struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (funaddr);
1099 name = SYMBOL_SOURCE_NAME (msymbol);
1105 sprintf (format, "at %s", local_hex_format ());
1107 /* FIXME-32x64: assumes funaddr fits in a long. */
1108 sprintf (name, format, (unsigned long) funaddr);
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))
1116 /* We stopped somewhere besides the call dummy. */
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);
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). */
1133 /* FIXME: Insert a bunch of wrap_here; name can be very long if it's
1134 a C++ name with arguments and stuff. */
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);
1142 do_cleanups (old_chain);
1144 /* Figure out the value returned by the function. */
1145 return value_being_returned (value_type, retbuf, struct_return);
1148 #else /* no CALL_DUMMY. */
1150 call_function_by_hand (function, nargs, args)
1155 error ("Cannot invoke functions on this machine.");
1157 #endif /* no CALL_DUMMY. */
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.
1163 The array bounds are set from LOWBOUND and HIGHBOUND, and the array is
1164 populated from the values passed in ELEMVEC.
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). */
1171 value_array (lowbound, highbound, elemvec)
1180 struct type *rangetype;
1181 struct type *arraytype;
1184 /* Validate that the bounds are reasonable and that each of the elements
1185 have the same size. */
1187 nelem = highbound - lowbound + 1;
1190 error ("bad array bounds (%d, %d)", lowbound, highbound);
1192 typelength = TYPE_LENGTH (VALUE_TYPE (elemvec[0]));
1193 for (idx = 0; idx < nelem; idx++)
1195 if (TYPE_LENGTH (VALUE_TYPE (elemvec[idx])) != typelength)
1197 error ("array elements must all be the same size");
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? */
1206 addr = allocate_space_in_inferior (nelem * typelength);
1207 for (idx = 0; idx < nelem; idx++)
1209 write_memory (addr + (idx * typelength), VALUE_CONTENTS (elemvec[idx]),
1213 /* Create the array type and set up an array value to be evaluated lazily. */
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);
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
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. */
1232 value_string (ptr, len)
1237 struct type *rangetype;
1238 struct type *stringtype;
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. */
1244 addr = allocate_space_in_inferior (len);
1245 write_memory (addr, ptr, len);
1247 /* Create the string type and set up a string value to be evaluated
1250 rangetype = create_range_type ((struct type *) NULL, builtin_type_int,
1252 stringtype = create_string_type ((struct type *) NULL, rangetype);
1253 val = value_at_lazy (stringtype, addr);
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.
1263 STATICP is nonzero if the T1 argument list came from a
1264 static member function.
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. */
1273 typecmp (staticp, t1, t2)
1282 if (staticp && t1 == 0)
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++)
1290 struct type *tt1, *tt2;
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)))
1299 t2[i] = value_addr (t2[i]);
1303 while (TYPE_CODE (tt1) == TYPE_CODE_PTR
1304 && (TYPE_CODE(tt2)==TYPE_CODE_ARRAY || TYPE_CODE(tt2)==TYPE_CODE_PTR))
1306 tt1 = TYPE_TARGET_TYPE(tt1);
1307 tt2 = TYPE_TARGET_TYPE(tt2);
1309 if (TYPE_CODE(tt1) == TYPE_CODE(tt2)) continue;
1310 /* Array to pointer is a `trivial conversion' according to the ARM. */
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
1315 if (TYPE_CODE (t1[i]) != TYPE_CODE (VALUE_TYPE (t2[i])))
1318 if (!t1[i]) return 0;
1319 return t2[i] ? i+1 : 0;
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.
1327 If LOOKING_FOR_BASECLASS, then instead of looking for struct fields,
1328 look for a baseclass named NAME. */
1331 search_struct_field (name, arg1, offset, type, looking_for_baseclass)
1333 register value arg1;
1335 register struct type *type;
1336 int looking_for_baseclass;
1340 check_stub_type (type);
1342 if (! looking_for_baseclass)
1343 for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
1345 char *t_field_name = TYPE_FIELD_NAME (type, i);
1347 if (t_field_name && STREQ (t_field_name, name))
1350 if (TYPE_FIELD_STATIC (type, i))
1352 char *phys_name = TYPE_FIELD_STATIC_PHYSNAME (type, i);
1353 struct symbol *sym =
1354 lookup_symbol (phys_name, 0, VAR_NAMESPACE, 0, NULL);
1356 error ("Internal error: could not find physical static variable named %s",
1358 v = value_at (TYPE_FIELD_TYPE (type, i),
1359 (CORE_ADDR)SYMBOL_BLOCK_VALUE (sym));
1362 v = value_primitive_field (arg1, offset, i, type);
1364 error("there is no field named %s", name);
1369 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
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)));
1379 if (BASETYPE_VIA_VIRTUAL (type, i))
1382 /* Fix to use baseclass_offset instead. FIXME */
1383 baseclass_addr (type, i, VALUE_CONTENTS (arg1) + offset,
1386 error ("virtual baseclass botch");
1387 if (found_baseclass)
1389 v = search_struct_field (name, v2, 0, TYPE_BASECLASS (type, i),
1390 looking_for_baseclass);
1392 else if (found_baseclass)
1393 v = value_primitive_field (arg1, offset, i, type);
1395 v = search_struct_field (name, arg1,
1396 offset + TYPE_BASECLASS_BITPOS (type, i) / 8,
1397 TYPE_BASECLASS (type, i),
1398 looking_for_baseclass);
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. */
1411 search_struct_method (name, arg1p, args, offset, static_memfuncp, type)
1413 register value *arg1p, *args;
1414 int offset, *static_memfuncp;
1415 register struct type *type;
1419 int name_matched = 0;
1420 char dem_opname[64];
1422 check_stub_type (type);
1423 for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
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 )
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;
1435 if (t_field_name && STREQ (t_field_name, name))
1437 int j = TYPE_FN_FIELDLIST_LENGTH (type, i) - 1;
1438 struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
1441 if (j > 0 && args == 0)
1442 error ("cannot resolve overloaded method `%s'", name);
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))
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;
1462 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1466 if (BASETYPE_VIA_VIRTUAL (type, i))
1468 base_offset = baseclass_offset (type, i, *arg1p, offset);
1469 if (base_offset == -1)
1470 error ("virtual baseclass botch");
1474 base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
1476 v = search_struct_method (name, arg1p, args, base_offset + offset,
1477 static_memfuncp, TYPE_BASECLASS (type, i));
1478 if (v == (value) -1)
1484 /* FIXME-bothner: Why is this commented out? Why is it here? */
1485 /* *arg1p = arg1_tmp;*/
1489 if (name_matched) return (value) -1;
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.
1498 C++: ARGS is a list of argument types to aid in the selection of
1499 an appropriate method. Also, handle derived types.
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.
1505 ERR is an error message to be printed in case the field is not found. */
1508 value_struct_elt (argp, args, name, static_memfuncp, err)
1509 register value *argp, *args;
1511 int *static_memfuncp;
1514 register struct type *t;
1517 COERCE_ARRAY (*argp);
1519 t = VALUE_TYPE (*argp);
1521 /* Follow pointers until we get to a non-pointer. */
1523 while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
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);
1532 if (TYPE_CODE (t) == TYPE_CODE_MEMBER)
1533 error ("not implemented: member type in value_struct_elt");
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);
1539 /* Assume it's not, unless we see that it is. */
1540 if (static_memfuncp)
1541 *static_memfuncp =0;
1545 /* if there are no arguments ...do this... */
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);
1553 /* C++: If it was not found as a data field, then try to
1554 return it as a pointer to a method. */
1556 if (destructor_name_p (name, t))
1557 error ("Cannot get value of destructor");
1559 v = search_struct_method (name, argp, args, 0, static_memfuncp, t);
1561 if (v == (value) -1)
1562 error ("Cannot take address of a method");
1565 if (TYPE_NFN_FIELDS (t))
1566 error ("There is no member or method named %s.", name);
1568 error ("There is no member named %s.", name);
1573 if (destructor_name_p (name, t))
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);
1585 error ("destructor should not have any argument");
1589 v = search_struct_method (name, argp, args, 0, static_memfuncp, t);
1591 if (v == (value) -1)
1593 error("Argument list of %s mismatch with component in the structure.", name);
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);
1604 error ("Structure has no component named %s.", name);
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. */
1612 destructor_name_p (name, type)
1614 const struct type *type;
1616 /* destructors are a special case. */
1620 char *dname = type_name_no_tag (type);
1621 if (!STREQ (dname, name+1))
1622 error ("name of destructor must equal name of class");
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. */
1634 check_field_in (type, name)
1635 register struct type *type;
1640 for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
1642 char *t_field_name = TYPE_FIELD_NAME (type, i);
1643 if (t_field_name && STREQ (t_field_name, name))
1647 /* C++: If it was not found as a data field, then try to
1648 return it as a pointer to a method. */
1650 /* Destructors are a special case. */
1651 if (destructor_name_p (name, type))
1654 for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; --i)
1656 if (STREQ (TYPE_FN_FIELDLIST_NAME (type, i), name))
1660 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1661 if (check_field_in (TYPE_BASECLASS (type, i), name))
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. */
1673 check_field (arg1, name)
1674 register value arg1;
1677 register struct type *t;
1679 COERCE_ARRAY (arg1);
1681 t = VALUE_TYPE (arg1);
1683 /* Follow pointers until we get to a non-pointer. */
1685 while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
1686 t = TYPE_TARGET_TYPE (t);
1688 if (TYPE_CODE (t) == TYPE_CODE_MEMBER)
1689 error ("not implemented: member type in check_field");
1691 if ( TYPE_CODE (t) != TYPE_CODE_STRUCT
1692 && TYPE_CODE (t) != TYPE_CODE_UNION)
1693 error ("Internal error: `this' is not an aggregate");
1695 return check_field_in (t, name);
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". */
1706 value_struct_elt_for_reference (domain, offset, curtype, name, intype)
1707 struct type *domain, *curtype, *intype;
1711 register struct type *t = curtype;
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");
1719 for (i = TYPE_NFIELDS (t) - 1; i >= TYPE_N_BASECLASSES (t); i--)
1721 char *t_field_name = TYPE_FIELD_NAME (t, i);
1723 if (t_field_name && STREQ (t_field_name, name))
1725 if (TYPE_FIELD_STATIC (t, i))
1727 char *phys_name = TYPE_FIELD_STATIC_PHYSNAME (t, i);
1728 struct symbol *sym =
1729 lookup_symbol (phys_name, 0, VAR_NAMESPACE, 0, NULL);
1731 error ("Internal error: could not find physical static variable named %s",
1733 return value_at (SYMBOL_TYPE (sym),
1734 (CORE_ADDR)SYMBOL_BLOCK_VALUE (sym));
1736 if (TYPE_FIELD_PACKED (t, i))
1737 error ("pointers to bitfield members not allowed");
1739 return value_from_longest
1740 (lookup_reference_type (lookup_member_type (TYPE_FIELD_TYPE (t, i),
1742 offset + (LONGEST) (TYPE_FIELD_BITPOS (t, i) >> 3));
1746 /* C++: If it was not found as a data field, then try to
1747 return it as a pointer to a method. */
1749 /* Destructors are a special case. */
1750 if (destructor_name_p (name, t))
1752 error ("member pointers to destructors not implemented yet");
1755 /* Perform all necessary dereferencing. */
1756 while (intype && TYPE_CODE (intype) == TYPE_CODE_PTR)
1757 intype = TYPE_TARGET_TYPE (intype);
1759 for (i = TYPE_NFN_FIELDS (t) - 1; i >= 0; --i)
1761 char *t_field_name = TYPE_FN_FIELDLIST_NAME (t, i);
1762 char dem_opname[64];
1764 if (strncmp(t_field_name, "__", 2)==0 ||
1765 strncmp(t_field_name, "op", 2)==0 ||
1766 strncmp(t_field_name, "type", 4)==0 )
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;
1773 if (t_field_name && STREQ (t_field_name, name))
1775 int j = TYPE_FN_FIELDLIST_LENGTH (t, i);
1776 struct fn_field *f = TYPE_FN_FIELDLIST1 (t, i);
1778 if (intype == 0 && j > 1)
1779 error ("non-unique member `%s' requires type instantiation", name);
1783 if (TYPE_FN_FIELD_TYPE (f, j) == intype)
1786 error ("no member function matches that type instantiation");
1791 if (TYPE_FN_FIELD_STUB (f, j))
1792 check_stub_method (t, i, j);
1793 if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
1795 return value_from_longest
1796 (lookup_reference_type
1797 (lookup_member_type (TYPE_FN_FIELD_TYPE (f, j),
1799 (LONGEST) METHOD_PTR_FROM_VOFFSET
1800 (TYPE_FN_FIELD_VOFFSET (f, j)));
1804 struct symbol *s = lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
1805 0, VAR_NAMESPACE, 0, NULL);
1812 v = read_var_value (s, 0);
1814 VALUE_TYPE (v) = lookup_reference_type
1815 (lookup_member_type (TYPE_FN_FIELD_TYPE (f, j),
1823 for (i = TYPE_N_BASECLASSES (t) - 1; i >= 0; i--)
1828 if (BASETYPE_VIA_VIRTUAL (t, i))
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),
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. */
1847 value_of_this (complain)
1850 extern FRAME selected_frame;
1851 struct symbol *func, *sym;
1854 static const char funny_this[] = "this";
1857 if (selected_frame == 0)
1859 error ("no frame selected");
1862 func = get_frame_function (selected_frame);
1866 error ("no `this' in nameless context");
1870 b = SYMBOL_BLOCK_VALUE (func);
1871 i = BLOCK_NSYMS (b);
1874 error ("no args, no `this'");
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);
1883 error ("current stack frame not in method");
1888 this = read_var_value (sym, selected_frame);
1889 if (this == 0 && complain)
1890 error ("`this' argument at unknown address");