1 /* Perform non-arithmetic operations on values, for GDB.
2 Copyright 1986, 1987, 1989, 1991, 1992 Free Software Foundation, Inc.
4 This file is part of GDB.
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.
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.
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. */
32 /* Local functions. */
35 find_function_addr PARAMS ((value, struct type **));
38 value_push PARAMS ((CORE_ADDR, value));
41 value_arg_push PARAMS ((CORE_ADDR, value));
44 search_struct_field PARAMS ((char *, value, int, struct type *, int));
47 search_struct_method PARAMS ((char *, value *, value *, int, int *,
51 check_field_in PARAMS ((struct type *, const char *));
54 allocate_space_in_inferior PARAMS ((int));
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. */
61 allocate_space_in_inferior (len)
65 register struct symbol *sym;
66 struct minimal_symbol *msymbol;
71 /* Find the address of malloc in the inferior. */
73 sym = lookup_symbol ("malloc", 0, VAR_NAMESPACE, 0, NULL);
76 if (SYMBOL_CLASS (sym) != LOC_BLOCK)
78 error ("\"malloc\" exists in this program but is not a function.");
80 val = value_of_variable (sym);
84 msymbol = lookup_minimal_symbol ("malloc", (struct objfile *) NULL);
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);
95 error ("evaluation of this expression requires the program to have a function \"malloc\".");
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))
103 error ("No memory available to program.");
105 return (value_as_long (val));
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. */
114 value_cast (type, arg2)
118 register enum type_code code1;
119 register enum type_code code2;
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)
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);
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)))
139 if (code1 == TYPE_CODE_PTR && code2 == TYPE_CODE_PTR)
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 */
150 value v = search_struct_field (type_name_no_tag (t1),
151 value_ind (arg2), 0, t2, 1);
155 VALUE_TYPE (v) = type;
159 /* No superclass found, just fall through to change ptr type. */
161 VALUE_TYPE (arg2) = type;
164 else if (VALUE_LVAL (arg2) == lval_memory)
166 return value_at_lazy (type, VALUE_ADDRESS (arg2) + VALUE_OFFSET (arg2));
168 else if (code1 == TYPE_CODE_VOID)
170 return value_zero (builtin_type_void, not_lval);
174 error ("Invalid cast.");
179 /* Create a value of type TYPE that is zero, and return it. */
182 value_zero (type, lv)
186 register value val = allocate_value (type);
188 memset (VALUE_CONTENTS (val), 0, TYPE_LENGTH (type));
189 VALUE_LVAL (val) = lv;
194 /* Return a value with type TYPE located at ADDR.
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. */
204 value_at (type, addr)
208 register value val = allocate_value (type);
210 read_memory (addr, VALUE_CONTENTS_RAW (val), TYPE_LENGTH (type));
212 VALUE_LVAL (val) = lval_memory;
213 VALUE_ADDRESS (val) = addr;
218 /* Return a lazy value with type TYPE located at ADDR (cf. value_at). */
221 value_at_lazy (type, addr)
225 register value val = allocate_value (type);
227 VALUE_LVAL (val) = lval_memory;
228 VALUE_ADDRESS (val) = addr;
229 VALUE_LAZY (val) = 1;
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.
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.
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
247 value_fetch_lazy (val)
250 CORE_ADDR addr = VALUE_ADDRESS (val) + VALUE_OFFSET (val);
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;
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. */
264 value_assign (toval, fromval)
265 register value toval, fromval;
267 register struct type *type = VALUE_TYPE (toval);
269 char raw_buffer[MAX_REGISTER_RAW_SIZE];
270 char virtual_buffer[MAX_REGISTER_VIRTUAL_SIZE];
273 COERCE_ARRAY (fromval);
276 if (VALUE_LVAL (toval) != lval_internalvar)
277 fromval = value_cast (type, fromval);
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. */
284 if (VALUE_REGNO (toval) >= 0
285 && REGISTER_CONVERTIBLE (VALUE_REGNO (toval)))
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);
296 switch (VALUE_LVAL (toval))
298 case lval_internalvar:
299 set_internalvar (VALUE_INTERNALVAR (toval), fromval);
302 case lval_internalvar_component:
303 set_internalvar_component (VALUE_INTERNALVAR (toval),
304 VALUE_OFFSET (toval),
305 VALUE_BITPOS (toval),
306 VALUE_BITSIZE (toval),
311 if (VALUE_BITSIZE (toval))
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);
322 write_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
323 raw_buffer, use_buffer);
325 write_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
326 VALUE_CONTENTS (fromval), TYPE_LENGTH (type));
330 if (VALUE_BITSIZE (toval))
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);
342 write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
343 raw_buffer, use_buffer);
345 write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
346 VALUE_CONTENTS (fromval), TYPE_LENGTH (type));
349 case lval_reg_frame_relative:
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;
359 char *buffer = (char *) alloca (amount_to_copy);
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))
370 error ("Value being assigned to is no longer active.");
372 amount_to_copy += (reg_size - amount_to_copy % reg_size);
375 for ((regno = VALUE_FRAME_REGNUM (toval) + reg_offset,
377 amount_copied < amount_to_copy;
378 amount_copied += reg_size, regno++)
380 get_saved_register (buffer + amount_copied,
381 (int *)NULL, (CORE_ADDR *)NULL,
382 frame, regno, (enum lval_type *)NULL);
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));
391 memcpy (buffer + byte_offset, raw_buffer, use_buffer);
393 memcpy (buffer + byte_offset, VALUE_CONTENTS (fromval),
397 for ((regno = VALUE_FRAME_REGNUM (toval) + reg_offset,
399 amount_copied < amount_to_copy;
400 amount_copied += reg_size, regno++)
406 /* Just find out where to put it. */
407 get_saved_register ((char *)NULL,
408 &optim, &addr, frame, regno, &lval);
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);
417 error ("Attempt to assign to an unmodifiable value.");
424 error ("Left side of = operation is not an lvalue.");
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). */
430 if (VALUE_LVAL (toval) == lval_internalvar
431 || VALUE_LVAL (toval) == lval_internalvar_component)
433 type = VALUE_TYPE (fromval);
436 val = allocate_value (type);
437 memcpy (val, toval, VALUE_CONTENTS_RAW (val) - (char *) val);
438 memcpy (VALUE_CONTENTS_RAW (val), VALUE_CONTENTS (fromval),
440 VALUE_TYPE (val) = type;
445 /* Extend a value VAL to COUNT repetitions of its type. */
448 value_repeat (arg1, count)
454 if (VALUE_LVAL (arg1) != lval_memory)
455 error ("Only values in memory can be extended with '@'.");
457 error ("Invalid number %d of repetitions.", count);
459 val = allocate_repeat_value (VALUE_TYPE (arg1), count);
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);
471 value_of_variable (var)
476 val = read_var_value (var, (FRAME) 0);
478 error ("Address of symbol \"%s\" is unknown.", SYMBOL_SOURCE_NAME (var));
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
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:
491 (&array[0] - (lowerbound * sizeof array[0])) + (index * sizeof array[0])
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:
496 (&array[0] + ((index - lowerbound) * sizeof array[0]))
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.
506 value_coerce_array (arg1)
509 register struct type *type;
511 if (VALUE_LVAL (arg1) != lval_memory)
512 error ("Attempt to take address of value not located in memory.");
514 /* Get type of elements. */
515 if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_ARRAY)
516 type = TYPE_TARGET_TYPE (VALUE_TYPE (arg1));
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);
522 return value_from_longest (lookup_pointer_type (type),
523 (LONGEST) (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
526 /* Given a value which is a function, return a value which is a pointer
530 value_coerce_function (arg1)
534 if (VALUE_LVAL (arg1) != lval_memory)
535 error ("Attempt to take address of value not located in memory.");
537 return value_from_longest (lookup_pointer_type (VALUE_TYPE (arg1)),
538 (LONGEST) (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
541 /* Return a pointer value for the object for which ARG1 is the contents. */
547 struct type *type = VALUE_TYPE (arg1);
548 if (TYPE_CODE (type) == TYPE_CODE_REF)
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));
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);
563 if (VALUE_LVAL (arg1) != lval_memory)
564 error ("Attempt to take address of value not located in memory.");
566 return value_from_longest (lookup_pointer_type (type),
567 (LONGEST) (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
570 /* Given a value of a pointer type, apply the C unary * operator to it. */
578 if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_MEMBER)
579 error ("not implemented: member types in value_ind");
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 */
595 /* Pushing small parts of stack frames. */
597 /* Push one word (the size of object that a register holds). */
600 push_word (sp, buffer)
602 REGISTER_TYPE buffer;
604 register int len = sizeof (REGISTER_TYPE);
606 SWAP_TARGET_AND_HOST (&buffer, len);
609 write_memory (sp, (char *)&buffer, len);
610 #else /* stack grows upward */
611 write_memory (sp, (char *)&buffer, len);
613 #endif /* stack grows upward */
618 /* Push LEN bytes with data at BUFFER. */
621 push_bytes (sp, buffer, len)
628 write_memory (sp, buffer, len);
629 #else /* stack grows upward */
630 write_memory (sp, buffer, len);
632 #endif /* stack grows upward */
637 /* Push onto the stack the specified value VALUE. */
641 register CORE_ADDR sp;
644 register int len = TYPE_LENGTH (VALUE_TYPE (arg));
648 write_memory (sp, VALUE_CONTENTS (arg), len);
649 #else /* stack grows upward */
650 write_memory (sp, VALUE_CONTENTS (arg), len);
652 #endif /* stack grows upward */
657 /* Perform the standard coercions that are specified
658 for arguments to be passed to C functions. */
661 value_arg_coerce (arg)
664 register struct type *type;
668 type = VALUE_TYPE (arg);
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);
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);
681 /* Push the value ARG, first coercing it as an argument
685 value_arg_push (sp, arg)
686 register CORE_ADDR sp;
689 return value_push (sp, value_arg_coerce (arg));
692 /* Determine a function's address and its return type from its value.
693 Calls error() if the function is not valid for calling. */
696 find_function_addr (function, retval_type)
698 struct type **retval_type;
700 register struct type *ftype = VALUE_TYPE (function);
701 register enum type_code code = TYPE_CODE (ftype);
702 struct type *value_type;
705 /* If it's a member function, just look at the function
708 /* Determine address to call. */
709 if (code == TYPE_CODE_FUNC || code == TYPE_CODE_METHOD)
711 funaddr = VALUE_ADDRESS (function);
712 value_type = TYPE_TARGET_TYPE (ftype);
714 else if (code == TYPE_CODE_PTR)
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));
721 value_type = builtin_type_int;
723 else if (code == TYPE_CODE_INT)
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));
730 /* Handle integer used as address of a function. */
731 funaddr = (CORE_ADDR) value_as_long (function);
733 value_type = builtin_type_int;
736 error ("Invalid data type for function to be called.");
738 *retval_type = value_type;
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. */
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. */
760 call_function_by_hand (function, nargs, args)
765 register CORE_ADDR 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
771 static REGISTER_TYPE dummy[] = CALL_DUMMY;
772 REGISTER_TYPE dummy1[sizeof dummy / sizeof (REGISTER_TYPE)];
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;
783 if (!target_has_execution)
786 save_inferior_status (&inf_status, 1);
787 old_chain = make_cleanup (restore_inferior_status, &inf_status);
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. */
794 old_sp = sp = read_register (SP_REGNUM);
796 #if 1 INNER_THAN 2 /* Stack grows down */
799 #else /* Stack grows up */
804 funaddr = find_function_addr (function, &value_type);
807 struct block *b = block_for_pc (funaddr);
808 /* If compiled without -g, assume GCC. */
809 using_gcc = b == NULL || BLOCK_GCC_COMPILED (b);
812 /* Are we returning a value using a structure return or a normal
815 struct_return = using_struct_return (function, funaddr, value_type,
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));
824 #ifdef GDB_TARGET_IS_HPPA
825 FIX_CALL_DUMMY (dummy1, start_sp, real_pc, funaddr, nargs, args,
826 value_type, using_gcc);
828 FIX_CALL_DUMMY (dummy1, start_sp, funaddr, nargs, args,
829 value_type, using_gcc);
833 #if CALL_DUMMY_LOCATION == ON_STACK
834 write_memory (start_sp, (char *)dummy1, sizeof dummy);
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. */
841 extern CORE_ADDR text_end;
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");
849 start_sp = text_end - sizeof dummy;
850 write_memory (start_sp, (char *)dummy1, sizeof dummy);
852 #else /* After text_end. */
854 extern CORE_ADDR text_end;
858 errcode = target_write_memory (start_sp, (char *)dummy1, sizeof dummy);
860 error ("Cannot write text segment -- call_function failed");
862 #endif /* After text_end. */
863 #endif /* Not on stack. */
866 sp = old_sp; /* It really is used, for some ifdef's... */
870 /* If stack grows down, we must leave a hole at the top. */
874 /* Reserve space for the return structure to be written on the
875 stack, if necessary */
878 len += TYPE_LENGTH (value_type);
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;
886 sp -= STACK_ALIGN (len) - len;
888 sp += STACK_ALIGN (len) - len;
891 #endif /* STACK_ALIGN */
893 /* Reserve space for the return structure to be written on the
894 stack, if necessary */
899 sp -= TYPE_LENGTH (value_type);
903 sp += TYPE_LENGTH (value_type);
907 #if defined (REG_STRUCT_HAS_ADDR)
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)
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. */
921 /* Push the structure. */
922 sp = value_push (sp, args[i]);
924 /* The stack grows down, so the address of the thing we push
925 is the stack pointer after we push it. */
928 /* The value we're going to pass is the address of the thing
930 args[i] = value_from_longest (lookup_pointer_type (value_type),
934 #endif /* REG_STRUCT_HAS_ADDR. */
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 */
943 #ifdef CALL_DUMMY_STACK_ADJUST
945 sp -= CALL_DUMMY_STACK_ADJUST;
947 sp += CALL_DUMMY_STACK_ADJUST;
949 #endif /* CALL_DUMMY_STACK_ADJUST */
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.
957 Also note that on some machines (like the sparc) pcc uses a
958 convention like gcc's. */
961 STORE_STRUCT_RETURN (struct_addr, sp);
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);
969 /* Figure out the value returned by the function. */
971 char retbuf[REGISTER_BYTES];
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);
978 do_cleanups (old_chain);
980 return value_being_returned (value_type, retbuf, struct_return);
983 #else /* no CALL_DUMMY. */
985 call_function_by_hand (function, nargs, args)
990 error ("Cannot invoke functions on this machine.");
992 #endif /* no CALL_DUMMY. */
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.
998 The array bounds are set from LOWBOUND and HIGHBOUND, and the array is
999 populated from the values passed in ELEMVEC.
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). */
1006 value_array (lowbound, highbound, elemvec)
1015 struct type *rangetype;
1016 struct type *arraytype;
1019 /* Validate that the bounds are reasonable and that each of the elements
1020 have the same size. */
1022 nelem = highbound - lowbound + 1;
1025 error ("bad array bounds (%d, %d)", lowbound, highbound);
1027 typelength = TYPE_LENGTH (VALUE_TYPE (elemvec[0]));
1028 for (idx = 0; idx < nelem; idx++)
1030 if (TYPE_LENGTH (VALUE_TYPE (elemvec[idx])) != typelength)
1032 error ("array elements must all be the same size");
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? */
1041 addr = allocate_space_in_inferior (nelem * typelength);
1042 for (idx = 0; idx < nelem; idx++)
1044 write_memory (addr + (idx * typelength), VALUE_CONTENTS (elemvec[idx]),
1048 /* Create the array type and set up an array value to be evaluated lazily. */
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);
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
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. */
1067 value_string (ptr, len)
1072 struct type *rangetype;
1073 struct type *stringtype;
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. */
1079 addr = allocate_space_in_inferior (len);
1080 write_memory (addr, ptr, len);
1082 /* Create the string type and set up a string value to be evaluated
1085 rangetype = create_range_type ((struct type *) NULL, builtin_type_int,
1087 stringtype = create_string_type ((struct type *) NULL, rangetype);
1088 val = value_at_lazy (stringtype, addr);
1092 /* Compare two argument lists and return the position in which they differ,
1095 STATICP is nonzero if the T1 argument list came from a
1096 static member function.
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. */
1105 typecmp (staticp, t1, t2)
1114 if (staticp && t1 == 0)
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++)
1124 if (TYPE_CODE (t1[i]) == TYPE_CODE_REF
1125 && TYPE_TARGET_TYPE (t1[i]) == VALUE_TYPE (t2[i]))
1127 if (TYPE_CODE (t1[i]) != TYPE_CODE (VALUE_TYPE (t2[i])))
1130 if (!t1[i]) return 0;
1131 return t2[i] ? i+1 : 0;
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.
1139 If LOOKING_FOR_BASECLASS, then instead of looking for struct fields,
1140 look for a baseclass named NAME. */
1143 search_struct_field (name, arg1, offset, type, looking_for_baseclass)
1145 register value arg1;
1147 register struct type *type;
1148 int looking_for_baseclass;
1152 check_stub_type (type);
1154 if (! looking_for_baseclass)
1155 for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
1157 char *t_field_name = TYPE_FIELD_NAME (type, i);
1159 if (t_field_name && STREQ (t_field_name, name))
1162 if (TYPE_FIELD_STATIC (type, i))
1164 char *phys_name = TYPE_FIELD_STATIC_PHYSNAME (type, i);
1165 struct symbol *sym =
1166 lookup_symbol (phys_name, 0, VAR_NAMESPACE, 0, NULL);
1168 error ("Internal error: could not find physical static variable named %s",
1170 v = value_at (TYPE_FIELD_TYPE (type, i),
1171 (CORE_ADDR)SYMBOL_BLOCK_VALUE (sym));
1174 v = value_primitive_field (arg1, offset, i, type);
1176 error("there is no field named %s", name);
1181 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1184 /* If we are looking for baseclasses, this is what we get when we
1186 int found_baseclass = (looking_for_baseclass
1187 && STREQ (name, TYPE_BASECLASS_NAME (type, i)));
1189 if (BASETYPE_VIA_VIRTUAL (type, i))
1192 /* Fix to use baseclass_offset instead. FIXME */
1193 baseclass_addr (type, i, VALUE_CONTENTS (arg1) + offset,
1196 error ("virtual baseclass botch");
1197 if (found_baseclass)
1199 v = search_struct_field (name, v2, 0, TYPE_BASECLASS (type, i),
1200 looking_for_baseclass);
1202 else if (found_baseclass)
1203 v = value_primitive_field (arg1, offset, i, type);
1205 v = search_struct_field (name, arg1,
1206 offset + TYPE_BASECLASS_BITPOS (type, i) / 8,
1207 TYPE_BASECLASS (type, i),
1208 looking_for_baseclass);
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. */
1220 search_struct_method (name, arg1p, args, offset, static_memfuncp, type)
1222 register value *arg1p, *args;
1223 int offset, *static_memfuncp;
1224 register struct type *type;
1228 check_stub_type (type);
1229 for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
1231 char *t_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
1232 if (t_field_name && STREQ (t_field_name, name))
1234 int j = TYPE_FN_FIELDLIST_LENGTH (type, i) - 1;
1235 struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
1237 if (j > 0 && args == 0)
1238 error ("cannot resolve overloaded method `%s'", name);
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))
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);
1257 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1262 if (BASETYPE_VIA_VIRTUAL (type, i))
1264 base_offset = baseclass_offset (type, i, *arg1p, offset);
1265 if (base_offset == -1)
1266 error ("virtual baseclass botch");
1270 base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
1272 v = search_struct_method (name, arg1p, args, base_offset + offset,
1273 static_memfuncp, TYPE_BASECLASS (type, i));
1276 /* FIXME-bothner: Why is this commented out? Why is it here? */
1277 /* *arg1p = arg1_tmp;*/
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.
1289 C++: ARGS is a list of argument types to aid in the selection of
1290 an appropriate method. Also, handle derived types.
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.
1296 ERR is an error message to be printed in case the field is not found. */
1299 value_struct_elt (argp, args, name, static_memfuncp, err)
1300 register value *argp, *args;
1302 int *static_memfuncp;
1305 register struct type *t;
1308 COERCE_ARRAY (*argp);
1310 t = VALUE_TYPE (*argp);
1312 /* Follow pointers until we get to a non-pointer. */
1314 while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
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);
1323 if (TYPE_CODE (t) == TYPE_CODE_MEMBER)
1324 error ("not implemented: member type in value_struct_elt");
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);
1330 /* Assume it's not, unless we see that it is. */
1331 if (static_memfuncp)
1332 *static_memfuncp =0;
1336 /* if there are no arguments ...do this... */
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);
1344 /* C++: If it was not found as a data field, then try to
1345 return it as a pointer to a method. */
1347 if (destructor_name_p (name, t))
1348 error ("Cannot get value of destructor");
1350 v = search_struct_method (name, argp, args, 0, static_memfuncp, t);
1354 if (TYPE_NFN_FIELDS (t))
1355 error ("There is no member or method named %s.", name);
1357 error ("There is no member named %s.", name);
1362 if (destructor_name_p (name, t))
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),
1373 error ("destructor should not have any argument");
1377 v = search_struct_method (name, argp, args, 0, static_memfuncp, t);
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);
1388 error ("Structure has no component named %s.", name);
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. */
1396 destructor_name_p (name, type)
1398 const struct type *type;
1400 /* destructors are a special case. */
1404 char *dname = type_name_no_tag (type);
1405 if (!STREQ (dname, name+1))
1406 error ("name of destructor must equal name of class");
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. */
1418 check_field_in (type, name)
1419 register struct type *type;
1424 for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
1426 char *t_field_name = TYPE_FIELD_NAME (type, i);
1427 if (t_field_name && STREQ (t_field_name, name))
1431 /* C++: If it was not found as a data field, then try to
1432 return it as a pointer to a method. */
1434 /* Destructors are a special case. */
1435 if (destructor_name_p (name, type))
1438 for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; --i)
1440 if (STREQ (TYPE_FN_FIELDLIST_NAME (type, i), name))
1444 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1445 if (check_field_in (TYPE_BASECLASS (type, i), name))
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. */
1457 check_field (arg1, name)
1458 register value arg1;
1461 register struct type *t;
1463 COERCE_ARRAY (arg1);
1465 t = VALUE_TYPE (arg1);
1467 /* Follow pointers until we get to a non-pointer. */
1469 while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
1470 t = TYPE_TARGET_TYPE (t);
1472 if (TYPE_CODE (t) == TYPE_CODE_MEMBER)
1473 error ("not implemented: member type in check_field");
1475 if ( TYPE_CODE (t) != TYPE_CODE_STRUCT
1476 && TYPE_CODE (t) != TYPE_CODE_UNION)
1477 error ("Internal error: `this' is not an aggregate");
1479 return check_field_in (t, name);
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". */
1490 value_struct_elt_for_reference (domain, offset, curtype, name, intype)
1491 struct type *domain, *curtype, *intype;
1495 register struct type *t = curtype;
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");
1503 for (i = TYPE_NFIELDS (t) - 1; i >= TYPE_N_BASECLASSES (t); i--)
1505 char *t_field_name = TYPE_FIELD_NAME (t, i);
1507 if (t_field_name && STREQ (t_field_name, name))
1509 if (TYPE_FIELD_STATIC (t, i))
1511 char *phys_name = TYPE_FIELD_STATIC_PHYSNAME (t, i);
1512 struct symbol *sym =
1513 lookup_symbol (phys_name, 0, VAR_NAMESPACE, 0, NULL);
1515 error ("Internal error: could not find physical static variable named %s",
1517 return value_at (SYMBOL_TYPE (sym),
1518 (CORE_ADDR)SYMBOL_BLOCK_VALUE (sym));
1520 if (TYPE_FIELD_PACKED (t, i))
1521 error ("pointers to bitfield members not allowed");
1523 return value_from_longest
1524 (lookup_reference_type (lookup_member_type (TYPE_FIELD_TYPE (t, i),
1526 offset + (LONGEST) (TYPE_FIELD_BITPOS (t, i) >> 3));
1530 /* C++: If it was not found as a data field, then try to
1531 return it as a pointer to a method. */
1533 /* Destructors are a special case. */
1534 if (destructor_name_p (name, t))
1536 error ("member pointers to destructors not implemented yet");
1539 /* Perform all necessary dereferencing. */
1540 while (intype && TYPE_CODE (intype) == TYPE_CODE_PTR)
1541 intype = TYPE_TARGET_TYPE (intype);
1543 for (i = TYPE_NFN_FIELDS (t) - 1; i >= 0; --i)
1545 if (STREQ (TYPE_FN_FIELDLIST_NAME (t, i), name))
1547 int j = TYPE_FN_FIELDLIST_LENGTH (t, i);
1548 struct fn_field *f = TYPE_FN_FIELDLIST1 (t, i);
1550 if (intype == 0 && j > 1)
1551 error ("non-unique member `%s' requires type instantiation", name);
1555 if (TYPE_FN_FIELD_TYPE (f, j) == intype)
1558 error ("no member function matches that type instantiation");
1563 if (TYPE_FN_FIELD_STUB (f, j))
1564 check_stub_method (t, i, j);
1565 if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
1567 return value_from_longest
1568 (lookup_reference_type
1569 (lookup_member_type (TYPE_FN_FIELD_TYPE (f, j),
1571 (LONGEST) METHOD_PTR_FROM_VOFFSET
1572 (TYPE_FN_FIELD_VOFFSET (f, j)));
1576 struct symbol *s = lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
1577 0, VAR_NAMESPACE, 0, NULL);
1584 v = read_var_value (s, 0);
1586 VALUE_TYPE (v) = lookup_reference_type
1587 (lookup_member_type (TYPE_FN_FIELD_TYPE (f, j),
1595 for (i = TYPE_N_BASECLASSES (t) - 1; i >= 0; i--)
1600 if (BASETYPE_VIA_VIRTUAL (t, i))
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),
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. */
1619 value_of_this (complain)
1622 extern FRAME selected_frame;
1623 struct symbol *func, *sym;
1626 static const char funny_this[] = "this";
1629 if (selected_frame == 0)
1631 error ("no frame selected");
1634 func = get_frame_function (selected_frame);
1638 error ("no `this' in nameless context");
1642 b = SYMBOL_BLOCK_VALUE (func);
1643 i = BLOCK_NSYMS (b);
1646 error ("no args, no `this'");
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);
1655 error ("current stack frame not in method");
1660 this = read_var_value (sym, selected_frame);
1661 if (this == 0 && complain)
1662 error ("`this' argument at unknown address");