1 /* Perform non-arithmetic operations on values, for GDB.
2 Copyright (C) 1986, 1987, 1989 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. */
33 static value search_struct_field ();
35 /* Cast value ARG2 to type TYPE and return as a value.
36 More general than a C cast: accepts any two types of the same length,
37 and if ARG2 is an lvalue it can be cast into anything at all. */
38 /* In C++, casts may change pointer representations. */
41 value_cast (type, arg2)
45 register enum type_code code1;
46 register enum type_code code2;
49 /* Coerce arrays but not enums. Enums will work as-is
50 and coercing them would cause an infinite recursion. */
51 if (TYPE_CODE (VALUE_TYPE (arg2)) != TYPE_CODE_ENUM)
54 code1 = TYPE_CODE (type);
55 code2 = TYPE_CODE (VALUE_TYPE (arg2));
56 scalar = (code2 == TYPE_CODE_INT || code2 == TYPE_CODE_FLT
57 || code2 == TYPE_CODE_ENUM);
59 if (code1 == TYPE_CODE_FLT && scalar)
60 return value_from_double (type, value_as_double (arg2));
61 else if ((code1 == TYPE_CODE_INT || code1 == TYPE_CODE_ENUM)
62 && (scalar || code2 == TYPE_CODE_PTR))
63 return value_from_longest (type, value_as_long (arg2));
64 else if (TYPE_LENGTH (type) == TYPE_LENGTH (VALUE_TYPE (arg2)))
66 if (code1 == TYPE_CODE_PTR && code2 == TYPE_CODE_PTR)
68 /* Look in the type of the source to see if it contains the
69 type of the target as a superclass. If so, we'll need to
70 offset the pointer rather than just change its type. */
71 struct type *t1 = TYPE_TARGET_TYPE (type);
72 struct type *t2 = TYPE_TARGET_TYPE (VALUE_TYPE (arg2));
73 if (TYPE_CODE (t1) == TYPE_CODE_STRUCT
74 && TYPE_CODE (t2) == TYPE_CODE_STRUCT
75 && TYPE_NAME (t1) != 0) /* if name unknown, can't have supercl */
77 value v = search_struct_field (type_name_no_tag (t1),
78 value_ind (arg2), 0, t2, 1);
82 VALUE_TYPE (v) = type;
86 /* No superclass found, just fall through to change ptr type. */
88 VALUE_TYPE (arg2) = type;
91 else if (VALUE_LVAL (arg2) == lval_memory)
93 return value_at_lazy (type, VALUE_ADDRESS (arg2) + VALUE_OFFSET (arg2));
95 else if (code1 == TYPE_CODE_VOID)
97 return value_zero (builtin_type_void, not_lval);
101 error ("Invalid cast.");
106 /* Create a value of type TYPE that is zero, and return it. */
109 value_zero (type, lv)
113 register value val = allocate_value (type);
115 bzero (VALUE_CONTENTS (val), TYPE_LENGTH (type));
116 VALUE_LVAL (val) = lv;
121 /* Return a value with type TYPE located at ADDR.
123 Call value_at only if the data needs to be fetched immediately;
124 if we can be 'lazy' and defer the fetch, perhaps indefinately, call
125 value_at_lazy instead. value_at_lazy simply records the address of
126 the data and sets the lazy-evaluation-required flag. The lazy flag
127 is tested in the VALUE_CONTENTS macro, which is used if and when
128 the contents are actually required. */
131 value_at (type, addr)
135 register value val = allocate_value (type);
137 read_memory (addr, VALUE_CONTENTS_RAW (val), TYPE_LENGTH (type));
139 VALUE_LVAL (val) = lval_memory;
140 VALUE_ADDRESS (val) = addr;
145 /* Return a lazy value with type TYPE located at ADDR (cf. value_at). */
148 value_at_lazy (type, addr)
152 register value val = allocate_value (type);
154 VALUE_LVAL (val) = lval_memory;
155 VALUE_ADDRESS (val) = addr;
156 VALUE_LAZY (val) = 1;
161 /* Called only from the VALUE_CONTENTS macro, if the current data for
162 a variable needs to be loaded into VALUE_CONTENTS(VAL). Fetches the
163 data from the user's process, and clears the lazy flag to indicate
164 that the data in the buffer is valid.
166 If the value is zero-length, we avoid calling read_memory, which would
167 abort. We mark the value as fetched anyway -- all 0 bytes of it.
169 This function returns a value because it is used in the VALUE_CONTENTS
170 macro as part of an expression, where a void would not work. The
174 value_fetch_lazy (val)
177 CORE_ADDR addr = VALUE_ADDRESS (val) + VALUE_OFFSET (val);
179 if (TYPE_LENGTH (VALUE_TYPE (val)))
180 read_memory (addr, VALUE_CONTENTS_RAW (val),
181 TYPE_LENGTH (VALUE_TYPE (val)));
182 VALUE_LAZY (val) = 0;
187 /* Store the contents of FROMVAL into the location of TOVAL.
188 Return a new value with the location of TOVAL and contents of FROMVAL. */
191 value_assign (toval, fromval)
192 register value toval, fromval;
194 register struct type *type = VALUE_TYPE (toval);
196 char raw_buffer[MAX_REGISTER_RAW_SIZE];
197 char virtual_buffer[MAX_REGISTER_VIRTUAL_SIZE];
200 COERCE_ARRAY (fromval);
202 if (VALUE_LVAL (toval) != lval_internalvar)
203 fromval = value_cast (type, fromval);
205 /* If TOVAL is a special machine register requiring conversion
206 of program values to a special raw format,
207 convert FROMVAL's contents now, with result in `raw_buffer',
208 and set USE_BUFFER to the number of bytes to write. */
210 if (VALUE_REGNO (toval) >= 0
211 && REGISTER_CONVERTIBLE (VALUE_REGNO (toval)))
213 int regno = VALUE_REGNO (toval);
214 if (VALUE_TYPE (fromval) != REGISTER_VIRTUAL_TYPE (regno))
215 fromval = value_cast (REGISTER_VIRTUAL_TYPE (regno), fromval);
216 bcopy (VALUE_CONTENTS (fromval), virtual_buffer,
217 REGISTER_VIRTUAL_SIZE (regno));
218 target_convert_from_virtual (regno, virtual_buffer, raw_buffer);
219 use_buffer = REGISTER_RAW_SIZE (regno);
222 switch (VALUE_LVAL (toval))
224 case lval_internalvar:
225 set_internalvar (VALUE_INTERNALVAR (toval), fromval);
228 case lval_internalvar_component:
229 set_internalvar_component (VALUE_INTERNALVAR (toval),
230 VALUE_OFFSET (toval),
231 VALUE_BITPOS (toval),
232 VALUE_BITSIZE (toval),
237 if (VALUE_BITSIZE (toval))
239 int v; /* FIXME, this won't work for large bitfields */
240 read_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
242 modify_field (&v, (int) value_as_long (fromval),
243 VALUE_BITPOS (toval), VALUE_BITSIZE (toval));
244 write_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
245 (char *)&v, sizeof v);
248 write_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
249 raw_buffer, use_buffer);
251 write_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
252 VALUE_CONTENTS (fromval), TYPE_LENGTH (type));
256 if (VALUE_BITSIZE (toval))
260 read_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
262 modify_field (&v, (int) value_as_long (fromval),
263 VALUE_BITPOS (toval), VALUE_BITSIZE (toval));
264 write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
268 write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
269 raw_buffer, use_buffer);
271 write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
272 VALUE_CONTENTS (fromval), TYPE_LENGTH (type));
275 case lval_reg_frame_relative:
277 /* value is stored in a series of registers in the frame
278 specified by the structure. Copy that value out, modify
279 it, and copy it back in. */
280 int amount_to_copy = (VALUE_BITSIZE (toval) ? 1 : TYPE_LENGTH (type));
281 int reg_size = REGISTER_RAW_SIZE (VALUE_FRAME_REGNUM (toval));
282 int byte_offset = VALUE_OFFSET (toval) % reg_size;
283 int reg_offset = VALUE_OFFSET (toval) / reg_size;
285 char *buffer = (char *) alloca (amount_to_copy);
289 /* Figure out which frame this is in currently. */
290 for (frame = get_current_frame ();
291 frame && FRAME_FP (frame) != VALUE_FRAME (toval);
292 frame = get_prev_frame (frame))
296 error ("Value being assigned to is no longer active.");
298 amount_to_copy += (reg_size - amount_to_copy % reg_size);
301 for ((regno = VALUE_FRAME_REGNUM (toval) + reg_offset,
303 amount_copied < amount_to_copy;
304 amount_copied += reg_size, regno++)
306 get_saved_register (buffer + amount_copied,
307 (int *)NULL, (CORE_ADDR)NULL,
308 frame, regno, (enum lval_type *)NULL);
311 /* Modify what needs to be modified. */
312 if (VALUE_BITSIZE (toval))
313 modify_field (buffer + byte_offset,
314 (int) value_as_long (fromval),
315 VALUE_BITPOS (toval), VALUE_BITSIZE (toval));
317 bcopy (raw_buffer, buffer + byte_offset, use_buffer);
319 bcopy (VALUE_CONTENTS (fromval), buffer + byte_offset,
323 for ((regno = VALUE_FRAME_REGNUM (toval) + reg_offset,
325 amount_copied < amount_to_copy;
326 amount_copied += reg_size, regno++)
332 /* Just find out where to put it. */
333 get_saved_register ((char *)NULL,
334 &optim, &addr, frame, regno, &lval);
337 error ("Attempt to assign to a value that was optimized out.");
338 if (lval == lval_memory)
339 write_memory (addr, buffer + amount_copied, reg_size);
340 else if (lval == lval_register)
341 write_register_bytes (addr, buffer + amount_copied, reg_size);
343 error ("Attempt to assign to an unmodifiable value.");
350 error ("Left side of = operation is not an lvalue.");
353 /* Return a value just like TOVAL except with the contents of FROMVAL
354 (except in the case of the type if TOVAL is an internalvar). */
356 if (VALUE_LVAL (toval) == lval_internalvar
357 || VALUE_LVAL (toval) == lval_internalvar_component)
359 type = VALUE_TYPE (fromval);
362 val = allocate_value (type);
363 bcopy (toval, val, VALUE_CONTENTS_RAW (val) - (char *) val);
364 bcopy (VALUE_CONTENTS (fromval), VALUE_CONTENTS_RAW (val), TYPE_LENGTH (type));
365 VALUE_TYPE (val) = type;
370 /* Extend a value VAL to COUNT repetitions of its type. */
373 value_repeat (arg1, count)
379 if (VALUE_LVAL (arg1) != lval_memory)
380 error ("Only values in memory can be extended with '@'.");
382 error ("Invalid number %d of repetitions.", count);
384 val = allocate_repeat_value (VALUE_TYPE (arg1), count);
386 read_memory (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1),
387 VALUE_CONTENTS_RAW (val),
388 TYPE_LENGTH (VALUE_TYPE (val)) * count);
389 VALUE_LVAL (val) = lval_memory;
390 VALUE_ADDRESS (val) = VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1);
396 value_of_variable (var)
401 val = read_var_value (var, (FRAME) 0);
403 error ("Address of symbol \"%s\" is unknown.", SYMBOL_NAME (var));
407 /* Given a value which is an array, return a value which is
408 a pointer to its first (actually, zeroth) element.
409 FIXME, this should be subtracting the array's lower bound. */
412 value_coerce_array (arg1)
415 register struct type *type;
417 if (VALUE_LVAL (arg1) != lval_memory)
418 error ("Attempt to take address of value not located in memory.");
420 /* Get type of elements. */
421 if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_ARRAY)
422 type = TYPE_TARGET_TYPE (VALUE_TYPE (arg1));
424 /* A phony array made by value_repeat.
425 Its type is the type of the elements, not an array type. */
426 type = VALUE_TYPE (arg1);
428 return value_from_longest (lookup_pointer_type (type),
429 (LONGEST) (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
432 /* Given a value which is a function, return a value which is a pointer
436 value_coerce_function (arg1)
440 if (VALUE_LVAL (arg1) != lval_memory)
441 error ("Attempt to take address of value not located in memory.");
443 return value_from_longest (lookup_pointer_type (VALUE_TYPE (arg1)),
444 (LONGEST) (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
447 /* Return a pointer value for the object for which ARG1 is the contents. */
455 if (VALUE_REPEATED (arg1)
456 || TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_ARRAY)
457 return value_coerce_array (arg1);
458 if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_FUNC)
459 return value_coerce_function (arg1);
461 if (VALUE_LVAL (arg1) != lval_memory)
462 error ("Attempt to take address of value not located in memory.");
464 return value_from_longest (lookup_pointer_type (VALUE_TYPE (arg1)),
465 (LONGEST) (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
468 /* Given a value of a pointer type, apply the C unary * operator to it. */
476 if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_MEMBER)
477 error ("not implemented: member types in value_ind");
479 /* Allow * on an integer so we can cast it to whatever we want.
480 This returns an int, which seems like the most C-like thing
481 to do. "long long" variables are rare enough that
482 BUILTIN_TYPE_LONGEST would seem to be a mistake. */
483 if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_INT)
484 return value_at (builtin_type_int,
485 (CORE_ADDR) value_as_long (arg1));
486 else if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_PTR)
487 return value_at_lazy (TYPE_TARGET_TYPE (VALUE_TYPE (arg1)),
488 value_as_pointer (arg1));
489 error ("Attempt to take contents of a non-pointer value.");
490 return 0; /* For lint -- never reached */
493 /* Pushing small parts of stack frames. */
495 /* Push one word (the size of object that a register holds). */
498 push_word (sp, buffer)
500 REGISTER_TYPE buffer;
502 register int len = sizeof (REGISTER_TYPE);
504 SWAP_TARGET_AND_HOST (&buffer, len);
507 write_memory (sp, (char *)&buffer, len);
508 #else /* stack grows upward */
509 write_memory (sp, (char *)&buffer, len);
511 #endif /* stack grows upward */
516 /* Push LEN bytes with data at BUFFER. */
519 push_bytes (sp, buffer, len)
526 write_memory (sp, buffer, len);
527 #else /* stack grows upward */
528 write_memory (sp, buffer, len);
530 #endif /* stack grows upward */
535 /* Push onto the stack the specified value VALUE. */
539 register CORE_ADDR sp;
542 register int len = TYPE_LENGTH (VALUE_TYPE (arg));
546 write_memory (sp, VALUE_CONTENTS (arg), len);
547 #else /* stack grows upward */
548 write_memory (sp, VALUE_CONTENTS (arg), len);
550 #endif /* stack grows upward */
555 /* Perform the standard coercions that are specified
556 for arguments to be passed to C functions. */
559 value_arg_coerce (arg)
562 register struct type *type;
566 type = VALUE_TYPE (arg);
568 if (TYPE_CODE (type) == TYPE_CODE_INT
569 && TYPE_LENGTH (type) < sizeof (int))
570 return value_cast (builtin_type_int, arg);
572 if (type == builtin_type_float)
573 return value_cast (builtin_type_double, arg);
578 /* Push the value ARG, first coercing it as an argument
582 value_arg_push (sp, arg)
583 register CORE_ADDR sp;
586 return value_push (sp, value_arg_coerce (arg));
589 /* Determine a function's address and its return type from its value.
590 Calls error() if the function is not valid for calling. */
593 find_function_addr (function, retval_type)
595 struct type **retval_type;
597 register struct type *ftype = VALUE_TYPE (function);
598 register enum type_code code = TYPE_CODE (ftype);
599 struct type *value_type;
602 /* If it's a member function, just look at the function
605 /* Determine address to call. */
606 if (code == TYPE_CODE_FUNC || code == TYPE_CODE_METHOD)
608 funaddr = VALUE_ADDRESS (function);
609 value_type = TYPE_TARGET_TYPE (ftype);
611 else if (code == TYPE_CODE_PTR)
613 funaddr = value_as_pointer (function);
614 if (TYPE_CODE (TYPE_TARGET_TYPE (ftype)) == TYPE_CODE_FUNC
615 || TYPE_CODE (TYPE_TARGET_TYPE (ftype)) == TYPE_CODE_METHOD)
616 value_type = TYPE_TARGET_TYPE (TYPE_TARGET_TYPE (ftype));
618 value_type = builtin_type_int;
620 else if (code == TYPE_CODE_INT)
622 /* Handle the case of functions lacking debugging info.
623 Their values are characters since their addresses are char */
624 if (TYPE_LENGTH (ftype) == 1)
625 funaddr = value_as_pointer (value_addr (function));
627 /* Handle integer used as address of a function. */
628 funaddr = (CORE_ADDR) value_as_long (function);
630 value_type = builtin_type_int;
633 error ("Invalid data type for function to be called.");
635 *retval_type = value_type;
639 #if defined (CALL_DUMMY)
640 /* All this stuff with a dummy frame may seem unnecessarily complicated
641 (why not just save registers in GDB?). The purpose of pushing a dummy
642 frame which looks just like a real frame is so that if you call a
643 function and then hit a breakpoint (get a signal, etc), "backtrace"
644 will look right. Whether the backtrace needs to actually show the
645 stack at the time the inferior function was called is debatable, but
646 it certainly needs to not display garbage. So if you are contemplating
647 making dummy frames be different from normal frames, consider that. */
649 /* Perform a function call in the inferior.
650 ARGS is a vector of values of arguments (NARGS of them).
651 FUNCTION is a value, the function to be called.
652 Returns a value representing what the function returned.
653 May fail to return, if a breakpoint or signal is hit
654 during the execution of the function. */
657 call_function_by_hand (function, nargs, args)
662 register CORE_ADDR sp;
665 /* CALL_DUMMY is an array of words (REGISTER_TYPE), but each word
666 is in host byte order. It is switched to target byte order before calling
668 static REGISTER_TYPE dummy[] = CALL_DUMMY;
669 REGISTER_TYPE dummy1[sizeof dummy / sizeof (REGISTER_TYPE)];
671 struct type *value_type;
672 unsigned char struct_return;
673 CORE_ADDR struct_addr;
674 struct inferior_status inf_status;
675 struct cleanup *old_chain;
679 save_inferior_status (&inf_status, 1);
680 old_chain = make_cleanup (restore_inferior_status, &inf_status);
682 /* PUSH_DUMMY_FRAME is responsible for saving the inferior registers
683 (and POP_FRAME for restoring them). (At least on most machines)
684 they are saved on the stack in the inferior. */
687 old_sp = sp = read_register (SP_REGNUM);
689 #if 1 INNER_THAN 2 /* Stack grows down */
692 #else /* Stack grows up */
697 funaddr = find_function_addr (function, &value_type);
700 struct block *b = block_for_pc (funaddr);
701 /* If compiled without -g, assume GCC. */
702 using_gcc = b == NULL || BLOCK_GCC_COMPILED (b);
705 /* Are we returning a value using a structure return or a normal
708 struct_return = using_struct_return (function, funaddr, value_type,
711 /* Create a call sequence customized for this function
712 and the number of arguments for it. */
713 bcopy (dummy, dummy1, sizeof dummy);
714 for (i = 0; i < sizeof dummy / sizeof (REGISTER_TYPE); i++)
715 SWAP_TARGET_AND_HOST (&dummy1[i], sizeof (REGISTER_TYPE));
716 FIX_CALL_DUMMY (dummy1, start_sp, funaddr, nargs, args,
717 value_type, using_gcc);
719 #if CALL_DUMMY_LOCATION == ON_STACK
720 write_memory (start_sp, (char *)dummy1, sizeof dummy);
722 #else /* Not on stack. */
723 #if CALL_DUMMY_LOCATION == BEFORE_TEXT_END
724 /* Convex Unix prohibits executing in the stack segment. */
725 /* Hope there is empty room at the top of the text segment. */
727 extern CORE_ADDR text_end;
730 for (start_sp = text_end - sizeof dummy; start_sp < text_end; ++start_sp)
731 if (read_memory_integer (start_sp, 1) != 0)
732 error ("text segment full -- no place to put call");
735 start_sp = text_end - sizeof dummy;
736 write_memory (start_sp, (char *)dummy1, sizeof dummy);
738 #else /* After text_end. */
740 extern CORE_ADDR text_end;
744 errcode = target_write_memory (start_sp, (char *)dummy1, sizeof dummy);
746 error ("Cannot write text segment -- call_function failed");
748 #endif /* After text_end. */
749 #endif /* Not on stack. */
752 sp = old_sp; /* It really is used, for some ifdef's... */
756 /* If stack grows down, we must leave a hole at the top. */
760 /* Reserve space for the return structure to be written on the
761 stack, if necessary */
764 len += TYPE_LENGTH (value_type);
766 for (i = nargs - 1; i >= 0; i--)
767 len += TYPE_LENGTH (VALUE_TYPE (value_arg_coerce (args[i])));
768 #ifdef CALL_DUMMY_STACK_ADJUST
769 len += CALL_DUMMY_STACK_ADJUST;
772 sp -= STACK_ALIGN (len) - len;
774 sp += STACK_ALIGN (len) - len;
777 #endif /* STACK_ALIGN */
779 /* Reserve space for the return structure to be written on the
780 stack, if necessary */
785 sp -= TYPE_LENGTH (value_type);
789 sp += TYPE_LENGTH (value_type);
793 #if defined (REG_STRUCT_HAS_ADDR)
795 /* This is a machine like the sparc, where we need to pass a pointer
796 to the structure, not the structure itself. */
797 if (REG_STRUCT_HAS_ADDR (using_gcc))
798 for (i = nargs - 1; i >= 0; i--)
799 if (TYPE_CODE (VALUE_TYPE (args[i])) == TYPE_CODE_STRUCT)
802 #if !(1 INNER_THAN 2)
803 /* The stack grows up, so the address of the thing we push
804 is the stack pointer before we push it. */
807 /* Push the structure. */
808 sp = value_push (sp, args[i]);
810 /* The stack grows down, so the address of the thing we push
811 is the stack pointer after we push it. */
814 /* The value we're going to pass is the address of the thing
816 args[i] = value_from_longest (lookup_pointer_type (value_type),
820 #endif /* REG_STRUCT_HAS_ADDR. */
822 #ifdef PUSH_ARGUMENTS
823 PUSH_ARGUMENTS(nargs, args, sp, struct_return, struct_addr);
824 #else /* !PUSH_ARGUMENTS */
825 for (i = nargs - 1; i >= 0; i--)
826 sp = value_arg_push (sp, args[i]);
827 #endif /* !PUSH_ARGUMENTS */
829 #ifdef CALL_DUMMY_STACK_ADJUST
831 sp -= CALL_DUMMY_STACK_ADJUST;
833 sp += CALL_DUMMY_STACK_ADJUST;
835 #endif /* CALL_DUMMY_STACK_ADJUST */
837 /* Store the address at which the structure is supposed to be
838 written. Note that this (and the code which reserved the space
839 above) assumes that gcc was used to compile this function. Since
840 it doesn't cost us anything but space and if the function is pcc
841 it will ignore this value, we will make that assumption.
843 Also note that on some machines (like the sparc) pcc uses a
844 convention like gcc's. */
847 STORE_STRUCT_RETURN (struct_addr, sp);
849 /* Write the stack pointer. This is here because the statements above
850 might fool with it. On SPARC, this write also stores the register
851 window into the right place in the new stack frame, which otherwise
852 wouldn't happen. (See write_inferior_registers in sparc-xdep.c.) */
853 write_register (SP_REGNUM, sp);
855 /* Figure out the value returned by the function. */
857 char retbuf[REGISTER_BYTES];
859 /* Execute the stack dummy routine, calling FUNCTION.
860 When it is done, discard the empty frame
861 after storing the contents of all regs into retbuf. */
862 run_stack_dummy (start_sp + CALL_DUMMY_START_OFFSET, retbuf);
864 do_cleanups (old_chain);
866 return value_being_returned (value_type, retbuf, struct_return);
869 #else /* no CALL_DUMMY. */
871 call_function_by_hand (function, nargs, args)
876 error ("Cannot invoke functions on this machine.");
878 #endif /* no CALL_DUMMY. */
880 /* Create a value for a string constant:
881 Call the function malloc in the inferior to get space for it,
882 then copy the data into that space
883 and then return the address with type char *.
884 PTR points to the string constant data; LEN is number of characters. */
887 value_string (ptr, len)
892 register struct symbol *sym;
894 register char *copy = (char *) alloca (len + 1);
896 register char *o = copy, *ibeg = ptr;
899 /* Copy the string into COPY, processing escapes.
900 We could not conveniently process them in the parser
901 because the string there wants to be a substring of the input. */
903 while (i - ibeg < len)
908 c = parse_escape (&i);
916 /* Get the length of the string after escapes are processed. */
920 /* Find the address of malloc in the inferior. */
922 sym = lookup_symbol ("malloc", 0, VAR_NAMESPACE, 0, NULL);
925 if (SYMBOL_CLASS (sym) != LOC_BLOCK)
926 error ("\"malloc\" exists in this program but is not a function.");
927 val = value_of_variable (sym);
932 j = lookup_misc_func ("malloc");
934 val = value_from_longest (
935 lookup_pointer_type (lookup_function_type (
936 lookup_pointer_type (builtin_type_char))),
937 (LONGEST) misc_function_vector[j].address);
939 error ("String constants require the program to have a function \"malloc\".");
942 blocklen = value_from_longest (builtin_type_int, (LONGEST) (len + 1));
943 val = target_call_function (val, 1, &blocklen);
944 if (value_zerop (val))
945 error ("No memory available for string constant.");
946 write_memory (value_as_pointer (val), copy, len + 1);
947 VALUE_TYPE (val) = lookup_pointer_type (builtin_type_char);
951 /* Helper function used by value_struct_elt to recurse through baseclasses.
952 Look for a field NAME in ARG1. Adjust the address of ARG1 by OFFSET bytes,
953 and treat the result as having type TYPE.
954 If found, return value, else return NULL.
956 If LOOKING_FOR_BASECLASS, then instead of looking for struct fields,
957 look for a baseclass named NAME. */
960 search_struct_field (name, arg1, offset, type, looking_for_baseclass)
964 register struct type *type;
965 int looking_for_baseclass;
969 check_stub_type (type);
971 if (! looking_for_baseclass)
972 for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
974 char *t_field_name = TYPE_FIELD_NAME (type, i);
976 if (t_field_name && !strcmp (t_field_name, name))
978 value v = (TYPE_FIELD_STATIC (type, i)
979 ? value_static_field (type, name, i)
980 : value_primitive_field (arg1, offset, i, type));
982 error("there is no field named %s", name);
987 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
990 /* If we are looking for baseclasses, this is what we get when we
992 int found_baseclass = (looking_for_baseclass
993 && !strcmp (name, TYPE_BASECLASS_NAME (type, i)));
995 if (BASETYPE_VIA_VIRTUAL (type, i))
998 baseclass_addr (type, i, VALUE_CONTENTS (arg1) + offset,
1001 error ("virtual baseclass botch");
1002 if (found_baseclass)
1004 v = search_struct_field (name, v2, 0, TYPE_BASECLASS (type, i),
1005 looking_for_baseclass);
1009 if (found_baseclass)
1010 v = value_primitive_field (arg1, offset, i, type);
1012 v = search_struct_field (name, arg1,
1013 offset + TYPE_BASECLASS_BITPOS (type, i) / 8,
1014 TYPE_BASECLASS (type, i),
1015 looking_for_baseclass);
1021 /* Helper function used by value_struct_elt to recurse through baseclasses.
1022 Look for a field NAME in ARG1. Adjust the address of ARG1 by OFFSET bytes,
1023 and treat the result as having type TYPE.
1024 If found, return value, else return NULL. */
1027 search_struct_method (name, arg1, args, offset, static_memfuncp, type)
1029 register value arg1, *args;
1030 int offset, *static_memfuncp;
1031 register struct type *type;
1035 check_stub_type (type);
1036 for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
1038 char *t_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
1039 if (t_field_name && !strcmp (t_field_name, name))
1041 int j = TYPE_FN_FIELDLIST_LENGTH (type, i) - 1;
1042 struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
1044 if (j > 0 && args == 0)
1045 error ("cannot resolve overloaded method `%s'", name);
1048 if (TYPE_FLAGS (TYPE_FN_FIELD_TYPE (f, j)) & TYPE_FLAG_STUB)
1049 check_stub_method (type, i, j);
1050 if (!typecmp (TYPE_FN_FIELD_STATIC_P (f, j),
1051 TYPE_FN_FIELD_ARGS (f, j), args))
1053 if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
1054 return (value)value_virtual_fn_field (arg1, f, j, type);
1055 if (TYPE_FN_FIELD_STATIC_P (f, j) && static_memfuncp)
1056 *static_memfuncp = 1;
1057 return (value)value_fn_field (arg1, i, j);
1064 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1068 if (BASETYPE_VIA_VIRTUAL (type, i))
1071 baseclass_addr (type, i, VALUE_CONTENTS (arg1) + offset,
1074 error ("virtual baseclass botch");
1075 v = search_struct_method (name, v2, args, 0,
1076 static_memfuncp, TYPE_BASECLASS (type, i));
1081 v = search_struct_method (name, arg1, args,
1082 TYPE_BASECLASS_BITPOS (type, i) / 8,
1083 static_memfuncp, TYPE_BASECLASS (type, i));
1089 /* Given *ARGP, a value of type (pointer to a)* structure/union,
1090 extract the component named NAME from the ultimate target structure/union
1091 and return it as a value with its appropriate type.
1092 ERR is used in the error message if *ARGP's type is wrong.
1094 C++: ARGS is a list of argument types to aid in the selection of
1095 an appropriate method. Also, handle derived types.
1097 STATIC_MEMFUNCP, if non-NULL, points to a caller-supplied location
1098 where the truthvalue of whether the function that was resolved was
1099 a static member function or not is stored.
1101 ERR is an error message to be printed in case the field is not found. */
1104 value_struct_elt (argp, args, name, static_memfuncp, err)
1105 register value *argp, *args;
1107 int *static_memfuncp;
1110 register struct type *t;
1113 COERCE_ARRAY (*argp);
1115 t = VALUE_TYPE (*argp);
1117 /* Follow pointers until we get to a non-pointer. */
1119 while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
1121 *argp = value_ind (*argp);
1122 /* Don't coerce fn pointer to fn and then back again! */
1123 if (TYPE_CODE (VALUE_TYPE (*argp)) != TYPE_CODE_FUNC)
1124 COERCE_ARRAY (*argp);
1125 t = VALUE_TYPE (*argp);
1128 if (TYPE_CODE (t) == TYPE_CODE_MEMBER)
1129 error ("not implemented: member type in value_struct_elt");
1131 if (TYPE_CODE (t) != TYPE_CODE_STRUCT
1132 && TYPE_CODE (t) != TYPE_CODE_UNION)
1133 error ("Attempt to extract a component of a value that is not a %s.", err);
1135 /* Assume it's not, unless we see that it is. */
1136 if (static_memfuncp)
1137 *static_memfuncp =0;
1141 /* if there are no arguments ...do this... */
1143 /* Try as a field first, because if we succeed, there
1144 is less work to be done. */
1145 v = search_struct_field (name, *argp, 0, t, 0);
1149 /* C++: If it was not found as a data field, then try to
1150 return it as a pointer to a method. */
1152 if (destructor_name_p (name, t))
1153 error ("Cannot get value of destructor");
1155 v = search_struct_method (name, *argp, args, 0, static_memfuncp, t);
1159 if (TYPE_NFN_FIELDS (t))
1160 error ("There is no member or method named %s.", name);
1162 error ("There is no member named %s.", name);
1167 if (destructor_name_p (name, t))
1171 /* destructors are a special case. */
1172 return (value)value_fn_field (*argp, 0,
1173 TYPE_FN_FIELDLIST_LENGTH (t, 0));
1177 error ("destructor should not have any argument");
1181 v = search_struct_method (name, *argp, args, 0, static_memfuncp, t);
1185 /* See if user tried to invoke data as function. If so,
1186 hand it back. If it's not callable (i.e., a pointer to function),
1187 gdb should give an error. */
1188 v = search_struct_field (name, *argp, 0, t, 0);
1192 error ("Structure has no component named %s.", name);
1196 /* C++: return 1 is NAME is a legitimate name for the destructor
1197 of type TYPE. If TYPE does not have a destructor, or
1198 if NAME is inappropriate for TYPE, an error is signaled. */
1200 destructor_name_p (name, type)
1204 /* destructors are a special case. */
1208 char *dname = type_name_no_tag (type);
1210 if (! TYPE_HAS_DESTRUCTOR (type))
1211 error ("type `%s' does not have destructor defined", dname);
1212 if (strcmp (dname, name+1))
1213 error ("name of destructor must equal name of class");
1220 /* Helper function for check_field: Given TYPE, a structure/union,
1221 return 1 if the component named NAME from the ultimate
1222 target structure/union is defined, otherwise, return 0. */
1225 check_field_in (type, name)
1226 register struct type *type;
1231 for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
1233 char *t_field_name = TYPE_FIELD_NAME (type, i);
1234 if (t_field_name && !strcmp (t_field_name, name))
1238 /* C++: If it was not found as a data field, then try to
1239 return it as a pointer to a method. */
1241 /* Destructors are a special case. */
1242 if (destructor_name_p (name, type))
1245 for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; --i)
1247 if (!strcmp (TYPE_FN_FIELDLIST_NAME (type, i), name))
1251 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1252 if (check_field_in (TYPE_BASECLASS (type, i), name))
1259 /* C++: Given ARG1, a value of type (pointer to a)* structure/union,
1260 return 1 if the component named NAME from the ultimate
1261 target structure/union is defined, otherwise, return 0. */
1264 check_field (arg1, name)
1265 register value arg1;
1268 register struct type *t;
1270 COERCE_ARRAY (arg1);
1272 t = VALUE_TYPE (arg1);
1274 /* Follow pointers until we get to a non-pointer. */
1276 while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
1277 t = TYPE_TARGET_TYPE (t);
1279 if (TYPE_CODE (t) == TYPE_CODE_MEMBER)
1280 error ("not implemented: member type in check_field");
1282 if (TYPE_CODE (t) != TYPE_CODE_STRUCT
1283 && TYPE_CODE (t) != TYPE_CODE_UNION)
1284 error ("Internal error: `this' is not an aggregate");
1286 return check_field_in (t, name);
1289 /* C++: Given an aggregate type DOMAIN, and a member name NAME,
1290 return the address of this member as a pointer to member
1291 type. If INTYPE is non-null, then it will be the type
1292 of the member we are looking for. This will help us resolve
1293 pointers to member functions. */
1296 value_struct_elt_for_address (domain, intype, name)
1297 struct type *domain, *intype;
1300 register struct type *t = domain;
1304 struct type *baseclass;
1306 if (TYPE_CODE (t) != TYPE_CODE_STRUCT
1307 && TYPE_CODE (t) != TYPE_CODE_UNION)
1308 error ("Internal error: non-aggregate type to value_struct_elt_for_address");
1314 for (i = TYPE_NFIELDS (t) - 1; i >= TYPE_N_BASECLASSES (t); i--)
1316 char *t_field_name = TYPE_FIELD_NAME (t, i);
1317 if (t_field_name && !strcmp (t_field_name, name))
1319 if (TYPE_FIELD_STATIC (t, i))
1321 char *phys_name = TYPE_FIELD_STATIC_PHYSNAME (t, i);
1322 struct symbol *sym =
1323 lookup_symbol (phys_name, 0, VAR_NAMESPACE, 0, NULL);
1324 if (! sym) error ("Internal error: could not find physical static variable named %s", phys_name);
1325 return value_from_longest (
1326 lookup_pointer_type (TYPE_FIELD_TYPE (t, i)),
1327 (LONGEST)SYMBOL_BLOCK_VALUE (sym));
1329 if (TYPE_FIELD_PACKED (t, i))
1330 error ("pointers to bitfield members not allowed");
1332 return value_from_longest (
1333 lookup_pointer_type (
1334 lookup_member_type (TYPE_FIELD_TYPE (t, i), baseclass)),
1335 (LONGEST) (TYPE_FIELD_BITPOS (t, i) >> 3));
1339 if (TYPE_N_BASECLASSES (t) == 0)
1342 t = TYPE_BASECLASS (t, 0);
1345 /* C++: If it was not found as a data field, then try to
1346 return it as a pointer to a method. */
1349 /* Destructors are a special case. */
1350 if (destructor_name_p (name, t))
1352 error ("pointers to destructors not implemented yet");
1355 /* Perform all necessary dereferencing. */
1356 while (intype && TYPE_CODE (intype) == TYPE_CODE_PTR)
1357 intype = TYPE_TARGET_TYPE (intype);
1361 for (i = TYPE_NFN_FIELDS (t) - 1; i >= 0; --i)
1363 if (!strcmp (TYPE_FN_FIELDLIST_NAME (t, i), name))
1365 int j = TYPE_FN_FIELDLIST_LENGTH (t, i);
1366 struct fn_field *f = TYPE_FN_FIELDLIST1 (t, i);
1368 if (intype == 0 && j > 1)
1369 error ("non-unique member `%s' requires type instantiation", name);
1373 if (TYPE_FN_FIELD_TYPE (f, j) == intype)
1376 error ("no member function matches that type instantiation");
1381 check_stub_method (t, i, j);
1382 if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
1384 return value_from_longest (
1385 lookup_pointer_type (
1386 lookup_member_type (TYPE_FN_FIELD_TYPE (f, j),
1388 (LONGEST) TYPE_FN_FIELD_VOFFSET (f, j));
1392 struct symbol *s = lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
1393 0, VAR_NAMESPACE, 0, NULL);
1394 v = locate_var_value (s, 0);
1395 VALUE_TYPE (v) = lookup_pointer_type (lookup_member_type (TYPE_FN_FIELD_TYPE (f, j), baseclass));
1401 if (TYPE_N_BASECLASSES (t) == 0)
1404 t = TYPE_BASECLASS (t, 0);
1409 /* Compare two argument lists and return the position in which they differ,
1412 STATICP is nonzero if the T1 argument list came from a
1413 static member function.
1415 For non-static member functions, we ignore the first argument,
1416 which is the type of the instance variable. This is because we want
1417 to handle calls with objects from derived classes. This is not
1418 entirely correct: we should actually check to make sure that a
1419 requested operation is type secure, shouldn't we? FIXME. */
1422 typecmp (staticp, t1, t2)
1431 if (staticp && t1 == 0)
1435 if (t1[0]->code == TYPE_CODE_VOID) return 0;
1436 if (t1[!staticp] == 0) return 0;
1437 for (i = !staticp; t1[i] && t1[i]->code != TYPE_CODE_VOID; i++)
1440 || t1[i]->code != t2[i]->type->code
1441 /* Too pessimistic: || t1[i]->target_type != t2[i]->type->target_type */
1445 if (!t1[i]) return 0;
1446 return t2[i] ? i+1 : 0;
1449 /* C++: return the value of the class instance variable, if one exists.
1450 Flag COMPLAIN signals an error if the request is made in an
1451 inappropriate context. */
1453 value_of_this (complain)
1456 extern FRAME selected_frame;
1457 struct symbol *func, *sym;
1460 static const char funny_this[] = "this";
1463 if (selected_frame == 0)
1465 error ("no frame selected");
1468 func = get_frame_function (selected_frame);
1472 error ("no `this' in nameless context");
1476 b = SYMBOL_BLOCK_VALUE (func);
1477 i = BLOCK_NSYMS (b);
1480 error ("no args, no `this'");
1483 /* Calling lookup_block_symbol is necessary to get the LOC_REGISTER
1484 symbol instead of the LOC_ARG one (if both exist). */
1485 sym = lookup_block_symbol (b, funny_this, VAR_NAMESPACE);
1489 error ("current stack frame not in method");
1494 this = read_var_value (sym, selected_frame);
1495 if (this == 0 && complain)
1496 error ("`this' argument at unknown address");