1 /* Perform non-arithmetic operations on values, for GDB.
2 Copyright 1986, 1987, 1989, 1991 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. */
31 /* Local functions. */
32 static value search_struct_field ();
34 /* Cast value ARG2 to type TYPE and return as a value.
35 More general than a C cast: accepts any two types of the same length,
36 and if ARG2 is an lvalue it can be cast into anything at all. */
37 /* In C++, casts may change pointer representations. */
40 value_cast (type, arg2)
44 register enum type_code code1;
45 register enum type_code code2;
48 /* Coerce arrays but not enums. Enums will work as-is
49 and coercing them would cause an infinite recursion. */
50 if (TYPE_CODE (VALUE_TYPE (arg2)) != TYPE_CODE_ENUM)
53 code1 = TYPE_CODE (type);
54 code2 = TYPE_CODE (VALUE_TYPE (arg2));
55 scalar = (code2 == TYPE_CODE_INT || code2 == TYPE_CODE_FLT
56 || code2 == TYPE_CODE_ENUM);
58 if (code1 == TYPE_CODE_FLT && scalar)
59 return value_from_double (type, value_as_double (arg2));
60 else if ((code1 == TYPE_CODE_INT || code1 == TYPE_CODE_ENUM)
61 && (scalar || code2 == TYPE_CODE_PTR))
62 return value_from_longest (type, value_as_long (arg2));
63 else if (TYPE_LENGTH (type) == TYPE_LENGTH (VALUE_TYPE (arg2)))
65 if (code1 == TYPE_CODE_PTR && code2 == TYPE_CODE_PTR)
67 /* Look in the type of the source to see if it contains the
68 type of the target as a superclass. If so, we'll need to
69 offset the pointer rather than just change its type. */
70 struct type *t1 = TYPE_TARGET_TYPE (type);
71 struct type *t2 = TYPE_TARGET_TYPE (VALUE_TYPE (arg2));
72 if (TYPE_CODE (t1) == TYPE_CODE_STRUCT
73 && TYPE_CODE (t2) == TYPE_CODE_STRUCT
74 && TYPE_NAME (t1) != 0) /* if name unknown, can't have supercl */
76 value v = search_struct_field (type_name_no_tag (t1),
77 value_ind (arg2), 0, t2, 1);
81 VALUE_TYPE (v) = type;
85 /* No superclass found, just fall through to change ptr type. */
87 VALUE_TYPE (arg2) = type;
90 else if (VALUE_LVAL (arg2) == lval_memory)
92 return value_at_lazy (type, VALUE_ADDRESS (arg2) + VALUE_OFFSET (arg2));
94 else if (code1 == TYPE_CODE_VOID)
96 return value_zero (builtin_type_void, not_lval);
100 error ("Invalid cast.");
105 /* Create a value of type TYPE that is zero, and return it. */
108 value_zero (type, lv)
112 register value val = allocate_value (type);
114 bzero (VALUE_CONTENTS (val), TYPE_LENGTH (type));
115 VALUE_LVAL (val) = lv;
120 /* Return a value with type TYPE located at ADDR.
122 Call value_at only if the data needs to be fetched immediately;
123 if we can be 'lazy' and defer the fetch, perhaps indefinately, call
124 value_at_lazy instead. value_at_lazy simply records the address of
125 the data and sets the lazy-evaluation-required flag. The lazy flag
126 is tested in the VALUE_CONTENTS macro, which is used if and when
127 the contents are actually required. */
130 value_at (type, addr)
134 register value val = allocate_value (type);
136 read_memory (addr, VALUE_CONTENTS_RAW (val), TYPE_LENGTH (type));
138 VALUE_LVAL (val) = lval_memory;
139 VALUE_ADDRESS (val) = addr;
144 /* Return a lazy value with type TYPE located at ADDR (cf. value_at). */
147 value_at_lazy (type, addr)
151 register value val = allocate_value (type);
153 VALUE_LVAL (val) = lval_memory;
154 VALUE_ADDRESS (val) = addr;
155 VALUE_LAZY (val) = 1;
160 /* Called only from the VALUE_CONTENTS macro, if the current data for
161 a variable needs to be loaded into VALUE_CONTENTS(VAL). Fetches the
162 data from the user's process, and clears the lazy flag to indicate
163 that the data in the buffer is valid.
165 If the value is zero-length, we avoid calling read_memory, which would
166 abort. We mark the value as fetched anyway -- all 0 bytes of it.
168 This function returns a value because it is used in the VALUE_CONTENTS
169 macro as part of an expression, where a void would not work. The
173 value_fetch_lazy (val)
176 CORE_ADDR addr = VALUE_ADDRESS (val) + VALUE_OFFSET (val);
178 if (TYPE_LENGTH (VALUE_TYPE (val)))
179 read_memory (addr, VALUE_CONTENTS_RAW (val),
180 TYPE_LENGTH (VALUE_TYPE (val)));
181 VALUE_LAZY (val) = 0;
186 /* Store the contents of FROMVAL into the location of TOVAL.
187 Return a new value with the location of TOVAL and contents of FROMVAL. */
190 value_assign (toval, fromval)
191 register value toval, fromval;
193 register struct type *type = VALUE_TYPE (toval);
195 char raw_buffer[MAX_REGISTER_RAW_SIZE];
196 char virtual_buffer[MAX_REGISTER_VIRTUAL_SIZE];
199 COERCE_ARRAY (fromval);
201 if (VALUE_LVAL (toval) != lval_internalvar)
202 fromval = value_cast (type, fromval);
204 /* If TOVAL is a special machine register requiring conversion
205 of program values to a special raw format,
206 convert FROMVAL's contents now, with result in `raw_buffer',
207 and set USE_BUFFER to the number of bytes to write. */
209 if (VALUE_REGNO (toval) >= 0
210 && REGISTER_CONVERTIBLE (VALUE_REGNO (toval)))
212 int regno = VALUE_REGNO (toval);
213 if (VALUE_TYPE (fromval) != REGISTER_VIRTUAL_TYPE (regno))
214 fromval = value_cast (REGISTER_VIRTUAL_TYPE (regno), fromval);
215 bcopy (VALUE_CONTENTS (fromval), virtual_buffer,
216 REGISTER_VIRTUAL_SIZE (regno));
217 target_convert_from_virtual (regno, virtual_buffer, raw_buffer);
218 use_buffer = REGISTER_RAW_SIZE (regno);
221 switch (VALUE_LVAL (toval))
223 case lval_internalvar:
224 set_internalvar (VALUE_INTERNALVAR (toval), fromval);
227 case lval_internalvar_component:
228 set_internalvar_component (VALUE_INTERNALVAR (toval),
229 VALUE_OFFSET (toval),
230 VALUE_BITPOS (toval),
231 VALUE_BITSIZE (toval),
236 if (VALUE_BITSIZE (toval))
238 int v; /* FIXME, this won't work for large bitfields */
239 read_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
241 modify_field (&v, (int) value_as_long (fromval),
242 VALUE_BITPOS (toval), VALUE_BITSIZE (toval));
243 write_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
244 (char *)&v, sizeof v);
247 write_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
248 raw_buffer, use_buffer);
250 write_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
251 VALUE_CONTENTS (fromval), TYPE_LENGTH (type));
255 if (VALUE_BITSIZE (toval))
259 read_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
261 modify_field (&v, (int) value_as_long (fromval),
262 VALUE_BITPOS (toval), VALUE_BITSIZE (toval));
263 write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
267 write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
268 raw_buffer, use_buffer);
270 write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
271 VALUE_CONTENTS (fromval), TYPE_LENGTH (type));
274 case lval_reg_frame_relative:
276 /* value is stored in a series of registers in the frame
277 specified by the structure. Copy that value out, modify
278 it, and copy it back in. */
279 int amount_to_copy = (VALUE_BITSIZE (toval) ? 1 : TYPE_LENGTH (type));
280 int reg_size = REGISTER_RAW_SIZE (VALUE_FRAME_REGNUM (toval));
281 int byte_offset = VALUE_OFFSET (toval) % reg_size;
282 int reg_offset = VALUE_OFFSET (toval) / reg_size;
284 char *buffer = (char *) alloca (amount_to_copy);
288 /* Figure out which frame this is in currently. */
289 for (frame = get_current_frame ();
290 frame && FRAME_FP (frame) != VALUE_FRAME (toval);
291 frame = get_prev_frame (frame))
295 error ("Value being assigned to is no longer active.");
297 amount_to_copy += (reg_size - amount_to_copy % reg_size);
300 for ((regno = VALUE_FRAME_REGNUM (toval) + reg_offset,
302 amount_copied < amount_to_copy;
303 amount_copied += reg_size, regno++)
305 get_saved_register (buffer + amount_copied,
306 (int *)NULL, (CORE_ADDR)NULL,
307 frame, regno, (enum lval_type *)NULL);
310 /* Modify what needs to be modified. */
311 if (VALUE_BITSIZE (toval))
312 modify_field (buffer + byte_offset,
313 (int) value_as_long (fromval),
314 VALUE_BITPOS (toval), VALUE_BITSIZE (toval));
316 bcopy (raw_buffer, buffer + byte_offset, use_buffer);
318 bcopy (VALUE_CONTENTS (fromval), buffer + byte_offset,
322 for ((regno = VALUE_FRAME_REGNUM (toval) + reg_offset,
324 amount_copied < amount_to_copy;
325 amount_copied += reg_size, regno++)
331 /* Just find out where to put it. */
332 get_saved_register ((char *)NULL,
333 &optim, &addr, frame, regno, &lval);
336 error ("Attempt to assign to a value that was optimized out.");
337 if (lval == lval_memory)
338 write_memory (addr, buffer + amount_copied, reg_size);
339 else if (lval == lval_register)
340 write_register_bytes (addr, buffer + amount_copied, reg_size);
342 error ("Attempt to assign to an unmodifiable value.");
349 error ("Left side of = operation is not an lvalue.");
352 /* Return a value just like TOVAL except with the contents of FROMVAL
353 (except in the case of the type if TOVAL is an internalvar). */
355 if (VALUE_LVAL (toval) == lval_internalvar
356 || VALUE_LVAL (toval) == lval_internalvar_component)
358 type = VALUE_TYPE (fromval);
361 val = allocate_value (type);
362 bcopy (toval, val, VALUE_CONTENTS_RAW (val) - (char *) val);
363 bcopy (VALUE_CONTENTS (fromval), VALUE_CONTENTS_RAW (val), TYPE_LENGTH (type));
364 VALUE_TYPE (val) = type;
369 /* Extend a value VAL to COUNT repetitions of its type. */
372 value_repeat (arg1, count)
378 if (VALUE_LVAL (arg1) != lval_memory)
379 error ("Only values in memory can be extended with '@'.");
381 error ("Invalid number %d of repetitions.", count);
383 val = allocate_repeat_value (VALUE_TYPE (arg1), count);
385 read_memory (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1),
386 VALUE_CONTENTS_RAW (val),
387 TYPE_LENGTH (VALUE_TYPE (val)) * count);
388 VALUE_LVAL (val) = lval_memory;
389 VALUE_ADDRESS (val) = VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1);
395 value_of_variable (var)
400 val = read_var_value (var, (FRAME) 0);
402 error ("Address of symbol \"%s\" is unknown.", SYMBOL_NAME (var));
406 /* Given a value which is an array, return a value which is
407 a pointer to its first (actually, zeroth) element.
408 FIXME, this should be subtracting the array's lower bound. */
411 value_coerce_array (arg1)
414 register struct type *type;
416 if (VALUE_LVAL (arg1) != lval_memory)
417 error ("Attempt to take address of value not located in memory.");
419 /* Get type of elements. */
420 if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_ARRAY)
421 type = TYPE_TARGET_TYPE (VALUE_TYPE (arg1));
423 /* A phony array made by value_repeat.
424 Its type is the type of the elements, not an array type. */
425 type = VALUE_TYPE (arg1);
427 return value_from_longest (lookup_pointer_type (type),
428 (LONGEST) (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
431 /* Given a value which is a function, return a value which is a pointer
435 value_coerce_function (arg1)
439 if (VALUE_LVAL (arg1) != lval_memory)
440 error ("Attempt to take address of value not located in memory.");
442 return value_from_longest (lookup_pointer_type (VALUE_TYPE (arg1)),
443 (LONGEST) (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
446 /* Return a pointer value for the object for which ARG1 is the contents. */
454 if (VALUE_REPEATED (arg1)
455 || TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_ARRAY)
456 return value_coerce_array (arg1);
457 if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_FUNC)
458 return value_coerce_function (arg1);
460 if (VALUE_LVAL (arg1) != lval_memory)
461 error ("Attempt to take address of value not located in memory.");
463 return value_from_longest (lookup_pointer_type (VALUE_TYPE (arg1)),
464 (LONGEST) (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
467 /* Given a value of a pointer type, apply the C unary * operator to it. */
475 if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_MEMBER)
476 error ("not implemented: member types in value_ind");
478 /* Allow * on an integer so we can cast it to whatever we want.
479 This returns an int, which seems like the most C-like thing
480 to do. "long long" variables are rare enough that
481 BUILTIN_TYPE_LONGEST would seem to be a mistake. */
482 if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_INT)
483 return value_at (builtin_type_int,
484 (CORE_ADDR) value_as_long (arg1));
485 else if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_PTR)
486 return value_at_lazy (TYPE_TARGET_TYPE (VALUE_TYPE (arg1)),
487 value_as_pointer (arg1));
488 error ("Attempt to take contents of a non-pointer value.");
489 return 0; /* For lint -- never reached */
492 /* Pushing small parts of stack frames. */
494 /* Push one word (the size of object that a register holds). */
497 push_word (sp, buffer)
499 REGISTER_TYPE buffer;
501 register int len = sizeof (REGISTER_TYPE);
503 SWAP_TARGET_AND_HOST (&buffer, len);
506 write_memory (sp, (char *)&buffer, len);
507 #else /* stack grows upward */
508 write_memory (sp, (char *)&buffer, len);
510 #endif /* stack grows upward */
515 /* Push LEN bytes with data at BUFFER. */
518 push_bytes (sp, buffer, len)
525 write_memory (sp, buffer, len);
526 #else /* stack grows upward */
527 write_memory (sp, buffer, len);
529 #endif /* stack grows upward */
534 /* Push onto the stack the specified value VALUE. */
538 register CORE_ADDR sp;
541 register int len = TYPE_LENGTH (VALUE_TYPE (arg));
545 write_memory (sp, VALUE_CONTENTS (arg), len);
546 #else /* stack grows upward */
547 write_memory (sp, VALUE_CONTENTS (arg), len);
549 #endif /* stack grows upward */
554 /* Perform the standard coercions that are specified
555 for arguments to be passed to C functions. */
558 value_arg_coerce (arg)
561 register struct type *type;
565 type = VALUE_TYPE (arg);
567 if (TYPE_CODE (type) == TYPE_CODE_INT
568 && TYPE_LENGTH (type) < sizeof (int))
569 return value_cast (builtin_type_int, arg);
571 if (type == builtin_type_float)
572 return value_cast (builtin_type_double, arg);
577 /* Push the value ARG, first coercing it as an argument
581 value_arg_push (sp, arg)
582 register CORE_ADDR sp;
585 return value_push (sp, value_arg_coerce (arg));
588 /* Determine a function's address and its return type from its value.
589 Calls error() if the function is not valid for calling. */
592 find_function_addr (function, retval_type)
594 struct type **retval_type;
596 register struct type *ftype = VALUE_TYPE (function);
597 register enum type_code code = TYPE_CODE (ftype);
598 struct type *value_type;
601 /* If it's a member function, just look at the function
604 /* Determine address to call. */
605 if (code == TYPE_CODE_FUNC || code == TYPE_CODE_METHOD)
607 funaddr = VALUE_ADDRESS (function);
608 value_type = TYPE_TARGET_TYPE (ftype);
610 else if (code == TYPE_CODE_PTR)
612 funaddr = value_as_pointer (function);
613 if (TYPE_CODE (TYPE_TARGET_TYPE (ftype)) == TYPE_CODE_FUNC
614 || TYPE_CODE (TYPE_TARGET_TYPE (ftype)) == TYPE_CODE_METHOD)
615 value_type = TYPE_TARGET_TYPE (TYPE_TARGET_TYPE (ftype));
617 value_type = builtin_type_int;
619 else if (code == TYPE_CODE_INT)
621 /* Handle the case of functions lacking debugging info.
622 Their values are characters since their addresses are char */
623 if (TYPE_LENGTH (ftype) == 1)
624 funaddr = value_as_pointer (value_addr (function));
626 /* Handle integer used as address of a function. */
627 funaddr = (CORE_ADDR) value_as_long (function);
629 value_type = builtin_type_int;
632 error ("Invalid data type for function to be called.");
634 *retval_type = value_type;
638 #if defined (CALL_DUMMY)
639 /* All this stuff with a dummy frame may seem unnecessarily complicated
640 (why not just save registers in GDB?). The purpose of pushing a dummy
641 frame which looks just like a real frame is so that if you call a
642 function and then hit a breakpoint (get a signal, etc), "backtrace"
643 will look right. Whether the backtrace needs to actually show the
644 stack at the time the inferior function was called is debatable, but
645 it certainly needs to not display garbage. So if you are contemplating
646 making dummy frames be different from normal frames, consider that. */
648 /* Perform a function call in the inferior.
649 ARGS is a vector of values of arguments (NARGS of them).
650 FUNCTION is a value, the function to be called.
651 Returns a value representing what the function returned.
652 May fail to return, if a breakpoint or signal is hit
653 during the execution of the function. */
656 call_function_by_hand (function, nargs, args)
661 register CORE_ADDR sp;
664 /* CALL_DUMMY is an array of words (REGISTER_TYPE), but each word
665 is in host byte order. It is switched to target byte order before calling
667 static REGISTER_TYPE dummy[] = CALL_DUMMY;
668 REGISTER_TYPE dummy1[sizeof dummy / sizeof (REGISTER_TYPE)];
670 struct type *value_type;
671 unsigned char struct_return;
672 CORE_ADDR struct_addr;
673 struct inferior_status inf_status;
674 struct cleanup *old_chain;
678 save_inferior_status (&inf_status, 1);
679 old_chain = make_cleanup (restore_inferior_status, &inf_status);
681 /* PUSH_DUMMY_FRAME is responsible for saving the inferior registers
682 (and POP_FRAME for restoring them). (At least on most machines)
683 they are saved on the stack in the inferior. */
686 old_sp = sp = read_register (SP_REGNUM);
688 #if 1 INNER_THAN 2 /* Stack grows down */
691 #else /* Stack grows up */
696 funaddr = find_function_addr (function, &value_type);
699 struct block *b = block_for_pc (funaddr);
700 /* If compiled without -g, assume GCC. */
701 using_gcc = b == NULL || BLOCK_GCC_COMPILED (b);
704 /* Are we returning a value using a structure return or a normal
707 struct_return = using_struct_return (function, funaddr, value_type,
710 /* Create a call sequence customized for this function
711 and the number of arguments for it. */
712 bcopy (dummy, dummy1, sizeof dummy);
713 for (i = 0; i < sizeof dummy / sizeof (REGISTER_TYPE); i++)
714 SWAP_TARGET_AND_HOST (&dummy1[i], sizeof (REGISTER_TYPE));
715 FIX_CALL_DUMMY (dummy1, start_sp, funaddr, nargs, args,
716 value_type, using_gcc);
718 #if CALL_DUMMY_LOCATION == ON_STACK
719 write_memory (start_sp, (char *)dummy1, sizeof dummy);
721 #else /* Not on stack. */
722 #if CALL_DUMMY_LOCATION == BEFORE_TEXT_END
723 /* Convex Unix prohibits executing in the stack segment. */
724 /* Hope there is empty room at the top of the text segment. */
726 extern CORE_ADDR text_end;
729 for (start_sp = text_end - sizeof dummy; start_sp < text_end; ++start_sp)
730 if (read_memory_integer (start_sp, 1) != 0)
731 error ("text segment full -- no place to put call");
734 start_sp = text_end - sizeof dummy;
735 write_memory (start_sp, (char *)dummy1, sizeof dummy);
737 #else /* After text_end. */
739 extern CORE_ADDR text_end;
743 errcode = target_write_memory (start_sp, (char *)dummy1, sizeof dummy);
745 error ("Cannot write text segment -- call_function failed");
747 #endif /* After text_end. */
748 #endif /* Not on stack. */
751 sp = old_sp; /* It really is used, for some ifdef's... */
755 /* If stack grows down, we must leave a hole at the top. */
759 /* Reserve space for the return structure to be written on the
760 stack, if necessary */
763 len += TYPE_LENGTH (value_type);
765 for (i = nargs - 1; i >= 0; i--)
766 len += TYPE_LENGTH (VALUE_TYPE (value_arg_coerce (args[i])));
767 #ifdef CALL_DUMMY_STACK_ADJUST
768 len += CALL_DUMMY_STACK_ADJUST;
771 sp -= STACK_ALIGN (len) - len;
773 sp += STACK_ALIGN (len) - len;
776 #endif /* STACK_ALIGN */
778 /* Reserve space for the return structure to be written on the
779 stack, if necessary */
784 sp -= TYPE_LENGTH (value_type);
788 sp += TYPE_LENGTH (value_type);
792 #if defined (REG_STRUCT_HAS_ADDR)
794 /* This is a machine like the sparc, where we need to pass a pointer
795 to the structure, not the structure itself. */
796 if (REG_STRUCT_HAS_ADDR (using_gcc))
797 for (i = nargs - 1; i >= 0; i--)
798 if (TYPE_CODE (VALUE_TYPE (args[i])) == TYPE_CODE_STRUCT)
801 #if !(1 INNER_THAN 2)
802 /* The stack grows up, so the address of the thing we push
803 is the stack pointer before we push it. */
806 /* Push the structure. */
807 sp = value_push (sp, args[i]);
809 /* The stack grows down, so the address of the thing we push
810 is the stack pointer after we push it. */
813 /* The value we're going to pass is the address of the thing
815 args[i] = value_from_longest (lookup_pointer_type (value_type),
819 #endif /* REG_STRUCT_HAS_ADDR. */
821 #ifdef PUSH_ARGUMENTS
822 PUSH_ARGUMENTS(nargs, args, sp, struct_return, struct_addr);
823 #else /* !PUSH_ARGUMENTS */
824 for (i = nargs - 1; i >= 0; i--)
825 sp = value_arg_push (sp, args[i]);
826 #endif /* !PUSH_ARGUMENTS */
828 #ifdef CALL_DUMMY_STACK_ADJUST
830 sp -= CALL_DUMMY_STACK_ADJUST;
832 sp += CALL_DUMMY_STACK_ADJUST;
834 #endif /* CALL_DUMMY_STACK_ADJUST */
836 /* Store the address at which the structure is supposed to be
837 written. Note that this (and the code which reserved the space
838 above) assumes that gcc was used to compile this function. Since
839 it doesn't cost us anything but space and if the function is pcc
840 it will ignore this value, we will make that assumption.
842 Also note that on some machines (like the sparc) pcc uses a
843 convention like gcc's. */
846 STORE_STRUCT_RETURN (struct_addr, sp);
848 /* Write the stack pointer. This is here because the statements above
849 might fool with it. On SPARC, this write also stores the register
850 window into the right place in the new stack frame, which otherwise
851 wouldn't happen. (See write_inferior_registers in sparc-xdep.c.) */
852 write_register (SP_REGNUM, sp);
854 /* Figure out the value returned by the function. */
856 char retbuf[REGISTER_BYTES];
858 /* Execute the stack dummy routine, calling FUNCTION.
859 When it is done, discard the empty frame
860 after storing the contents of all regs into retbuf. */
861 run_stack_dummy (start_sp + CALL_DUMMY_START_OFFSET, retbuf);
863 do_cleanups (old_chain);
865 return value_being_returned (value_type, retbuf, struct_return);
868 #else /* no CALL_DUMMY. */
870 call_function_by_hand (function, nargs, args)
875 error ("Cannot invoke functions on this machine.");
877 #endif /* no CALL_DUMMY. */
879 /* Create a value for a string constant:
880 Call the function malloc in the inferior to get space for it,
881 then copy the data into that space
882 and then return the address with type char *.
883 PTR points to the string constant data; LEN is number of characters. */
886 value_string (ptr, len)
891 register struct symbol *sym;
893 register char *copy = (char *) alloca (len + 1);
895 register char *o = copy, *ibeg = ptr;
898 /* Copy the string into COPY, processing escapes.
899 We could not conveniently process them in the parser
900 because the string there wants to be a substring of the input. */
902 while (i - ibeg < len)
907 c = parse_escape (&i);
915 /* Get the length of the string after escapes are processed. */
919 /* Find the address of malloc in the inferior. */
921 sym = lookup_symbol ("malloc", 0, VAR_NAMESPACE, 0, NULL);
924 if (SYMBOL_CLASS (sym) != LOC_BLOCK)
925 error ("\"malloc\" exists in this program but is not a function.");
926 val = value_of_variable (sym);
931 j = lookup_misc_func ("malloc");
933 val = value_from_longest (
934 lookup_pointer_type (lookup_function_type (
935 lookup_pointer_type (builtin_type_char))),
936 (LONGEST) misc_function_vector[j].address);
938 error ("String constants require the program to have a function \"malloc\".");
941 blocklen = value_from_longest (builtin_type_int, (LONGEST) (len + 1));
942 val = target_call_function (val, 1, &blocklen);
943 if (value_zerop (val))
944 error ("No memory available for string constant.");
945 write_memory (value_as_pointer (val), copy, len + 1);
946 VALUE_TYPE (val) = lookup_pointer_type (builtin_type_char);
950 /* Helper function used by value_struct_elt to recurse through baseclasses.
951 Look for a field NAME in ARG1. Adjust the address of ARG1 by OFFSET bytes,
952 and treat the result as having type TYPE.
953 If found, return value, else return NULL.
955 If LOOKING_FOR_BASECLASS, then instead of looking for struct fields,
956 look for a baseclass named NAME. */
959 search_struct_field (name, arg1, offset, type, looking_for_baseclass)
963 register struct type *type;
964 int looking_for_baseclass;
968 check_stub_type (type);
970 if (! looking_for_baseclass)
971 for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
973 char *t_field_name = TYPE_FIELD_NAME (type, i);
975 if (t_field_name && !strcmp (t_field_name, name))
977 value v = (TYPE_FIELD_STATIC (type, i)
978 ? value_static_field (type, name, i)
979 : value_primitive_field (arg1, offset, i, type));
981 error("there is no field named %s", name);
986 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
989 /* If we are looking for baseclasses, this is what we get when we
991 int found_baseclass = (looking_for_baseclass
992 && !strcmp (name, TYPE_BASECLASS_NAME (type, i)));
994 if (BASETYPE_VIA_VIRTUAL (type, i))
997 baseclass_addr (type, i, VALUE_CONTENTS (arg1) + offset,
1000 error ("virtual baseclass botch");
1001 if (found_baseclass)
1003 v = search_struct_field (name, v2, 0, TYPE_BASECLASS (type, i),
1004 looking_for_baseclass);
1008 if (found_baseclass)
1009 v = value_primitive_field (arg1, offset, i, type);
1011 v = search_struct_field (name, arg1,
1012 offset + TYPE_BASECLASS_BITPOS (type, i) / 8,
1013 TYPE_BASECLASS (type, i),
1014 looking_for_baseclass);
1020 /* Helper function used by value_struct_elt to recurse through baseclasses.
1021 Look for a field NAME in ARG1. Adjust the address of ARG1 by OFFSET bytes,
1022 and treat the result as having type TYPE.
1023 If found, return value, else return NULL. */
1026 search_struct_method (name, arg1, args, offset, static_memfuncp, type)
1028 register value arg1, *args;
1029 int offset, *static_memfuncp;
1030 register struct type *type;
1034 check_stub_type (type);
1035 for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
1037 char *t_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
1038 if (t_field_name && !strcmp (t_field_name, name))
1040 int j = TYPE_FN_FIELDLIST_LENGTH (type, i) - 1;
1041 struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
1043 if (j > 0 && args == 0)
1044 error ("cannot resolve overloaded method `%s'", name);
1047 if (TYPE_FLAGS (TYPE_FN_FIELD_TYPE (f, j)) & TYPE_FLAG_STUB)
1048 check_stub_method (type, i, j);
1049 if (!typecmp (TYPE_FN_FIELD_STATIC_P (f, j),
1050 TYPE_FN_FIELD_ARGS (f, j), args))
1052 if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
1053 return (value)value_virtual_fn_field (arg1, f, j, type);
1054 if (TYPE_FN_FIELD_STATIC_P (f, j) && static_memfuncp)
1055 *static_memfuncp = 1;
1056 return (value)value_fn_field (f, j);
1063 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1067 if (BASETYPE_VIA_VIRTUAL (type, i))
1070 baseclass_addr (type, i, VALUE_CONTENTS (arg1) + offset,
1073 error ("virtual baseclass botch");
1074 v = search_struct_method (name, v2, args, 0,
1075 static_memfuncp, TYPE_BASECLASS (type, i));
1080 v = search_struct_method (name, arg1, args,
1081 TYPE_BASECLASS_BITPOS (type, i) / 8,
1082 static_memfuncp, TYPE_BASECLASS (type, i));
1088 /* Given *ARGP, a value of type (pointer to a)* structure/union,
1089 extract the component named NAME from the ultimate target structure/union
1090 and return it as a value with its appropriate type.
1091 ERR is used in the error message if *ARGP's type is wrong.
1093 C++: ARGS is a list of argument types to aid in the selection of
1094 an appropriate method. Also, handle derived types.
1096 STATIC_MEMFUNCP, if non-NULL, points to a caller-supplied location
1097 where the truthvalue of whether the function that was resolved was
1098 a static member function or not is stored.
1100 ERR is an error message to be printed in case the field is not found. */
1103 value_struct_elt (argp, args, name, static_memfuncp, err)
1104 register value *argp, *args;
1106 int *static_memfuncp;
1109 register struct type *t;
1112 COERCE_ARRAY (*argp);
1114 t = VALUE_TYPE (*argp);
1116 /* Follow pointers until we get to a non-pointer. */
1118 while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
1120 *argp = value_ind (*argp);
1121 /* Don't coerce fn pointer to fn and then back again! */
1122 if (TYPE_CODE (VALUE_TYPE (*argp)) != TYPE_CODE_FUNC)
1123 COERCE_ARRAY (*argp);
1124 t = VALUE_TYPE (*argp);
1127 if (TYPE_CODE (t) == TYPE_CODE_MEMBER)
1128 error ("not implemented: member type in value_struct_elt");
1130 if (TYPE_CODE (t) != TYPE_CODE_STRUCT
1131 && TYPE_CODE (t) != TYPE_CODE_UNION)
1132 error ("Attempt to extract a component of a value that is not a %s.", err);
1134 /* Assume it's not, unless we see that it is. */
1135 if (static_memfuncp)
1136 *static_memfuncp =0;
1140 /* if there are no arguments ...do this... */
1142 /* Try as a field first, because if we succeed, there
1143 is less work to be done. */
1144 v = search_struct_field (name, *argp, 0, t, 0);
1148 /* C++: If it was not found as a data field, then try to
1149 return it as a pointer to a method. */
1151 if (destructor_name_p (name, t))
1152 error ("Cannot get value of destructor");
1154 v = search_struct_method (name, *argp, args, 0, static_memfuncp, t);
1158 if (TYPE_NFN_FIELDS (t))
1159 error ("There is no member or method named %s.", name);
1161 error ("There is no member named %s.", name);
1166 if (destructor_name_p (name, t))
1170 /* destructors are a special case. */
1171 return (value)value_fn_field (TYPE_FN_FIELDLIST1 (t, 0),
1172 TYPE_FN_FIELDLIST_LENGTH (t, 0));
1176 error ("destructor should not have any argument");
1180 v = search_struct_method (name, *argp, args, 0, static_memfuncp, t);
1184 /* See if user tried to invoke data as function. If so,
1185 hand it back. If it's not callable (i.e., a pointer to function),
1186 gdb should give an error. */
1187 v = search_struct_field (name, *argp, 0, t, 0);
1191 error ("Structure has no component named %s.", name);
1195 /* C++: return 1 is NAME is a legitimate name for the destructor
1196 of type TYPE. If TYPE does not have a destructor, or
1197 if NAME is inappropriate for TYPE, an error is signaled. */
1199 destructor_name_p (name, type)
1203 /* destructors are a special case. */
1207 char *dname = type_name_no_tag (type);
1208 if (strcmp (dname, name+1))
1209 error ("name of destructor must equal name of class");
1216 /* Helper function for check_field: Given TYPE, a structure/union,
1217 return 1 if the component named NAME from the ultimate
1218 target structure/union is defined, otherwise, return 0. */
1221 check_field_in (type, name)
1222 register struct type *type;
1227 for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
1229 char *t_field_name = TYPE_FIELD_NAME (type, i);
1230 if (t_field_name && !strcmp (t_field_name, name))
1234 /* C++: If it was not found as a data field, then try to
1235 return it as a pointer to a method. */
1237 /* Destructors are a special case. */
1238 if (destructor_name_p (name, type))
1241 for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; --i)
1243 if (!strcmp (TYPE_FN_FIELDLIST_NAME (type, i), name))
1247 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1248 if (check_field_in (TYPE_BASECLASS (type, i), name))
1255 /* C++: Given ARG1, a value of type (pointer to a)* structure/union,
1256 return 1 if the component named NAME from the ultimate
1257 target structure/union is defined, otherwise, return 0. */
1260 check_field (arg1, name)
1261 register value arg1;
1264 register struct type *t;
1266 COERCE_ARRAY (arg1);
1268 t = VALUE_TYPE (arg1);
1270 /* Follow pointers until we get to a non-pointer. */
1272 while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
1273 t = TYPE_TARGET_TYPE (t);
1275 if (TYPE_CODE (t) == TYPE_CODE_MEMBER)
1276 error ("not implemented: member type in check_field");
1278 if (TYPE_CODE (t) != TYPE_CODE_STRUCT
1279 && TYPE_CODE (t) != TYPE_CODE_UNION)
1280 error ("Internal error: `this' is not an aggregate");
1282 return check_field_in (t, name);
1285 /* C++: Given an aggregate type DOMAIN, and a member name NAME,
1286 return the address of this member as a pointer to member
1287 type. If INTYPE is non-null, then it will be the type
1288 of the member we are looking for. This will help us resolve
1289 pointers to member functions. */
1292 value_struct_elt_for_address (domain, intype, name)
1293 struct type *domain, *intype;
1296 register struct type *t = domain;
1300 struct type *baseclass;
1302 if (TYPE_CODE (t) != TYPE_CODE_STRUCT
1303 && TYPE_CODE (t) != TYPE_CODE_UNION)
1304 error ("Internal error: non-aggregate type to value_struct_elt_for_address");
1310 for (i = TYPE_NFIELDS (t) - 1; i >= TYPE_N_BASECLASSES (t); i--)
1312 char *t_field_name = TYPE_FIELD_NAME (t, i);
1313 if (t_field_name && !strcmp (t_field_name, name))
1315 if (TYPE_FIELD_STATIC (t, i))
1317 char *phys_name = TYPE_FIELD_STATIC_PHYSNAME (t, i);
1318 struct symbol *sym =
1319 lookup_symbol (phys_name, 0, VAR_NAMESPACE, 0, NULL);
1320 if (! sym) error ("Internal error: could not find physical static variable named %s", phys_name);
1321 return value_from_longest (
1322 lookup_pointer_type (TYPE_FIELD_TYPE (t, i)),
1323 (LONGEST)SYMBOL_BLOCK_VALUE (sym));
1325 if (TYPE_FIELD_PACKED (t, i))
1326 error ("pointers to bitfield members not allowed");
1328 return value_from_longest (
1329 lookup_pointer_type (
1330 lookup_member_type (TYPE_FIELD_TYPE (t, i), baseclass)),
1331 (LONGEST) (TYPE_FIELD_BITPOS (t, i) >> 3));
1335 if (TYPE_N_BASECLASSES (t) == 0)
1338 t = TYPE_BASECLASS (t, 0);
1341 /* C++: If it was not found as a data field, then try to
1342 return it as a pointer to a method. */
1345 /* Destructors are a special case. */
1346 if (destructor_name_p (name, t))
1348 error ("pointers to destructors not implemented yet");
1351 /* Perform all necessary dereferencing. */
1352 while (intype && TYPE_CODE (intype) == TYPE_CODE_PTR)
1353 intype = TYPE_TARGET_TYPE (intype);
1357 for (i = TYPE_NFN_FIELDS (t) - 1; i >= 0; --i)
1359 if (!strcmp (TYPE_FN_FIELDLIST_NAME (t, i), name))
1361 int j = TYPE_FN_FIELDLIST_LENGTH (t, i);
1362 struct fn_field *f = TYPE_FN_FIELDLIST1 (t, i);
1364 if (intype == 0 && j > 1)
1365 error ("non-unique member `%s' requires type instantiation", name);
1369 if (TYPE_FN_FIELD_TYPE (f, j) == intype)
1372 error ("no member function matches that type instantiation");
1377 check_stub_method (t, i, j);
1378 if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
1380 return value_from_longest (
1381 lookup_pointer_type (
1382 lookup_member_type (TYPE_FN_FIELD_TYPE (f, j),
1384 (LONGEST) TYPE_FN_FIELD_VOFFSET (f, j));
1388 struct symbol *s = lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
1389 0, VAR_NAMESPACE, 0, NULL);
1390 v = locate_var_value (s, 0);
1391 VALUE_TYPE (v) = lookup_pointer_type (lookup_member_type (TYPE_FN_FIELD_TYPE (f, j), baseclass));
1397 if (TYPE_N_BASECLASSES (t) == 0)
1400 t = TYPE_BASECLASS (t, 0);
1405 /* Compare two argument lists and return the position in which they differ,
1408 STATICP is nonzero if the T1 argument list came from a
1409 static member function.
1411 For non-static member functions, we ignore the first argument,
1412 which is the type of the instance variable. This is because we want
1413 to handle calls with objects from derived classes. This is not
1414 entirely correct: we should actually check to make sure that a
1415 requested operation is type secure, shouldn't we? FIXME. */
1418 typecmp (staticp, t1, t2)
1427 if (staticp && t1 == 0)
1431 if (t1[0]->code == TYPE_CODE_VOID) return 0;
1432 if (t1[!staticp] == 0) return 0;
1433 for (i = !staticp; t1[i] && t1[i]->code != TYPE_CODE_VOID; i++)
1436 || t1[i]->code != t2[i]->type->code
1437 /* Too pessimistic: || t1[i]->target_type != t2[i]->type->target_type */
1441 if (!t1[i]) return 0;
1442 return t2[i] ? i+1 : 0;
1445 /* C++: return the value of the class instance variable, if one exists.
1446 Flag COMPLAIN signals an error if the request is made in an
1447 inappropriate context. */
1449 value_of_this (complain)
1452 extern FRAME selected_frame;
1453 struct symbol *func, *sym;
1456 static const char funny_this[] = "this";
1459 if (selected_frame == 0)
1461 error ("no frame selected");
1464 func = get_frame_function (selected_frame);
1468 error ("no `this' in nameless context");
1472 b = SYMBOL_BLOCK_VALUE (func);
1473 i = BLOCK_NSYMS (b);
1476 error ("no args, no `this'");
1479 /* Calling lookup_block_symbol is necessary to get the LOC_REGISTER
1480 symbol instead of the LOC_ARG one (if both exist). */
1481 sym = lookup_block_symbol (b, funny_this, VAR_NAMESPACE);
1485 error ("current stack frame not in method");
1490 this = read_var_value (sym, selected_frame);
1491 if (this == 0 && complain)
1492 error ("`this' argument at unknown address");