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 /* Cast value ARG2 to type TYPE and return as a value.
55 More general than a C cast: accepts any two types of the same length,
56 and if ARG2 is an lvalue it can be cast into anything at all. */
57 /* In C++, casts may change pointer representations. */
60 value_cast (type, arg2)
64 register enum type_code code1;
65 register enum type_code code2;
68 /* Coerce arrays but not enums. Enums will work as-is
69 and coercing them would cause an infinite recursion. */
70 if (TYPE_CODE (VALUE_TYPE (arg2)) != TYPE_CODE_ENUM)
73 code1 = TYPE_CODE (type);
74 code2 = TYPE_CODE (VALUE_TYPE (arg2));
75 scalar = (code2 == TYPE_CODE_INT || code2 == TYPE_CODE_FLT
76 || code2 == TYPE_CODE_ENUM);
78 if (code1 == TYPE_CODE_FLT && scalar)
79 return value_from_double (type, value_as_double (arg2));
80 else if ((code1 == TYPE_CODE_INT || code1 == TYPE_CODE_ENUM)
81 && (scalar || code2 == TYPE_CODE_PTR))
82 return value_from_longest (type, value_as_long (arg2));
83 else if (TYPE_LENGTH (type) == TYPE_LENGTH (VALUE_TYPE (arg2)))
85 if (code1 == TYPE_CODE_PTR && code2 == TYPE_CODE_PTR)
87 /* Look in the type of the source to see if it contains the
88 type of the target as a superclass. If so, we'll need to
89 offset the pointer rather than just change its type. */
90 struct type *t1 = TYPE_TARGET_TYPE (type);
91 struct type *t2 = TYPE_TARGET_TYPE (VALUE_TYPE (arg2));
92 if ( TYPE_CODE (t1) == TYPE_CODE_STRUCT
93 && TYPE_CODE (t2) == TYPE_CODE_STRUCT
94 && TYPE_NAME (t1) != 0) /* if name unknown, can't have supercl */
96 value v = search_struct_field (type_name_no_tag (t1),
97 value_ind (arg2), 0, t2, 1);
101 VALUE_TYPE (v) = type;
105 /* No superclass found, just fall through to change ptr type. */
107 VALUE_TYPE (arg2) = type;
110 else if (VALUE_LVAL (arg2) == lval_memory)
112 return value_at_lazy (type, VALUE_ADDRESS (arg2) + VALUE_OFFSET (arg2));
114 else if (code1 == TYPE_CODE_VOID)
116 return value_zero (builtin_type_void, not_lval);
120 error ("Invalid cast.");
125 /* Create a value of type TYPE that is zero, and return it. */
128 value_zero (type, lv)
132 register value val = allocate_value (type);
134 memset (VALUE_CONTENTS (val), 0, TYPE_LENGTH (type));
135 VALUE_LVAL (val) = lv;
140 /* Return a value with type TYPE located at ADDR.
142 Call value_at only if the data needs to be fetched immediately;
143 if we can be 'lazy' and defer the fetch, perhaps indefinately, call
144 value_at_lazy instead. value_at_lazy simply records the address of
145 the data and sets the lazy-evaluation-required flag. The lazy flag
146 is tested in the VALUE_CONTENTS macro, which is used if and when
147 the contents are actually required. */
150 value_at (type, addr)
154 register value val = allocate_value (type);
156 read_memory (addr, VALUE_CONTENTS_RAW (val), TYPE_LENGTH (type));
158 VALUE_LVAL (val) = lval_memory;
159 VALUE_ADDRESS (val) = addr;
164 /* Return a lazy value with type TYPE located at ADDR (cf. value_at). */
167 value_at_lazy (type, addr)
171 register value val = allocate_value (type);
173 VALUE_LVAL (val) = lval_memory;
174 VALUE_ADDRESS (val) = addr;
175 VALUE_LAZY (val) = 1;
180 /* Called only from the VALUE_CONTENTS macro, if the current data for
181 a variable needs to be loaded into VALUE_CONTENTS(VAL). Fetches the
182 data from the user's process, and clears the lazy flag to indicate
183 that the data in the buffer is valid.
185 If the value is zero-length, we avoid calling read_memory, which would
186 abort. We mark the value as fetched anyway -- all 0 bytes of it.
188 This function returns a value because it is used in the VALUE_CONTENTS
189 macro as part of an expression, where a void would not work. The
193 value_fetch_lazy (val)
196 CORE_ADDR addr = VALUE_ADDRESS (val) + VALUE_OFFSET (val);
198 if (TYPE_LENGTH (VALUE_TYPE (val)))
199 read_memory (addr, VALUE_CONTENTS_RAW (val),
200 TYPE_LENGTH (VALUE_TYPE (val)));
201 VALUE_LAZY (val) = 0;
206 /* Store the contents of FROMVAL into the location of TOVAL.
207 Return a new value with the location of TOVAL and contents of FROMVAL. */
210 value_assign (toval, fromval)
211 register value toval, fromval;
213 register struct type *type = VALUE_TYPE (toval);
215 char raw_buffer[MAX_REGISTER_RAW_SIZE];
216 char virtual_buffer[MAX_REGISTER_VIRTUAL_SIZE];
219 COERCE_ARRAY (fromval);
222 if (VALUE_LVAL (toval) != lval_internalvar)
223 fromval = value_cast (type, fromval);
225 /* If TOVAL is a special machine register requiring conversion
226 of program values to a special raw format,
227 convert FROMVAL's contents now, with result in `raw_buffer',
228 and set USE_BUFFER to the number of bytes to write. */
230 if (VALUE_REGNO (toval) >= 0
231 && REGISTER_CONVERTIBLE (VALUE_REGNO (toval)))
233 int regno = VALUE_REGNO (toval);
234 if (VALUE_TYPE (fromval) != REGISTER_VIRTUAL_TYPE (regno))
235 fromval = value_cast (REGISTER_VIRTUAL_TYPE (regno), fromval);
236 memcpy (virtual_buffer, VALUE_CONTENTS (fromval),
237 REGISTER_VIRTUAL_SIZE (regno));
238 REGISTER_CONVERT_TO_RAW (regno, virtual_buffer, raw_buffer);
239 use_buffer = REGISTER_RAW_SIZE (regno);
242 switch (VALUE_LVAL (toval))
244 case lval_internalvar:
245 set_internalvar (VALUE_INTERNALVAR (toval), fromval);
248 case lval_internalvar_component:
249 set_internalvar_component (VALUE_INTERNALVAR (toval),
250 VALUE_OFFSET (toval),
251 VALUE_BITPOS (toval),
252 VALUE_BITSIZE (toval),
257 if (VALUE_BITSIZE (toval))
259 int v; /* FIXME, this won't work for large bitfields */
260 read_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
261 (char *) &v, sizeof v);
262 modify_field ((char *) &v, (int) value_as_long (fromval),
263 VALUE_BITPOS (toval), VALUE_BITSIZE (toval));
264 write_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
265 (char *)&v, sizeof v);
268 write_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
269 raw_buffer, use_buffer);
271 write_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
272 VALUE_CONTENTS (fromval), TYPE_LENGTH (type));
276 if (VALUE_BITSIZE (toval))
280 read_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
281 (char *) &v, sizeof v);
282 modify_field ((char *) &v, (int) value_as_long (fromval),
283 VALUE_BITPOS (toval), VALUE_BITSIZE (toval));
284 write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
285 (char *) &v, sizeof v);
288 write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
289 raw_buffer, use_buffer);
291 write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
292 VALUE_CONTENTS (fromval), TYPE_LENGTH (type));
295 case lval_reg_frame_relative:
297 /* value is stored in a series of registers in the frame
298 specified by the structure. Copy that value out, modify
299 it, and copy it back in. */
300 int amount_to_copy = (VALUE_BITSIZE (toval) ? 1 : TYPE_LENGTH (type));
301 int reg_size = REGISTER_RAW_SIZE (VALUE_FRAME_REGNUM (toval));
302 int byte_offset = VALUE_OFFSET (toval) % reg_size;
303 int reg_offset = VALUE_OFFSET (toval) / reg_size;
305 char *buffer = (char *) alloca (amount_to_copy);
309 /* Figure out which frame this is in currently. */
310 for (frame = get_current_frame ();
311 frame && FRAME_FP (frame) != VALUE_FRAME (toval);
312 frame = get_prev_frame (frame))
316 error ("Value being assigned to is no longer active.");
318 amount_to_copy += (reg_size - amount_to_copy % reg_size);
321 for ((regno = VALUE_FRAME_REGNUM (toval) + reg_offset,
323 amount_copied < amount_to_copy;
324 amount_copied += reg_size, regno++)
326 get_saved_register (buffer + amount_copied,
327 (int *)NULL, (CORE_ADDR *)NULL,
328 frame, regno, (enum lval_type *)NULL);
331 /* Modify what needs to be modified. */
332 if (VALUE_BITSIZE (toval))
333 modify_field (buffer + byte_offset,
334 (int) value_as_long (fromval),
335 VALUE_BITPOS (toval), VALUE_BITSIZE (toval));
337 memcpy (buffer + byte_offset, raw_buffer, use_buffer);
339 memcpy (buffer + byte_offset, VALUE_CONTENTS (fromval),
343 for ((regno = VALUE_FRAME_REGNUM (toval) + reg_offset,
345 amount_copied < amount_to_copy;
346 amount_copied += reg_size, regno++)
352 /* Just find out where to put it. */
353 get_saved_register ((char *)NULL,
354 &optim, &addr, frame, regno, &lval);
357 error ("Attempt to assign to a value that was optimized out.");
358 if (lval == lval_memory)
359 write_memory (addr, buffer + amount_copied, reg_size);
360 else if (lval == lval_register)
361 write_register_bytes (addr, buffer + amount_copied, reg_size);
363 error ("Attempt to assign to an unmodifiable value.");
370 error ("Left side of = operation is not an lvalue.");
373 /* Return a value just like TOVAL except with the contents of FROMVAL
374 (except in the case of the type if TOVAL is an internalvar). */
376 if (VALUE_LVAL (toval) == lval_internalvar
377 || VALUE_LVAL (toval) == lval_internalvar_component)
379 type = VALUE_TYPE (fromval);
382 val = allocate_value (type);
383 memcpy (val, toval, VALUE_CONTENTS_RAW (val) - (char *) val);
384 memcpy (VALUE_CONTENTS_RAW (val), VALUE_CONTENTS (fromval),
386 VALUE_TYPE (val) = type;
391 /* Extend a value VAL to COUNT repetitions of its type. */
394 value_repeat (arg1, count)
400 if (VALUE_LVAL (arg1) != lval_memory)
401 error ("Only values in memory can be extended with '@'.");
403 error ("Invalid number %d of repetitions.", count);
405 val = allocate_repeat_value (VALUE_TYPE (arg1), count);
407 read_memory (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1),
408 VALUE_CONTENTS_RAW (val),
409 TYPE_LENGTH (VALUE_TYPE (val)) * count);
410 VALUE_LVAL (val) = lval_memory;
411 VALUE_ADDRESS (val) = VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1);
417 value_of_variable (var)
422 val = read_var_value (var, (FRAME) 0);
424 error ("Address of symbol \"%s\" is unknown.", SYMBOL_SOURCE_NAME (var));
428 /* Given a value which is an array, return a value which is
429 a pointer to its first (actually, zeroth) element.
430 FIXME, this should be subtracting the array's lower bound. */
433 value_coerce_array (arg1)
436 register struct type *type;
438 if (VALUE_LVAL (arg1) != lval_memory)
439 error ("Attempt to take address of value not located in memory.");
441 /* Get type of elements. */
442 if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_ARRAY)
443 type = TYPE_TARGET_TYPE (VALUE_TYPE (arg1));
445 /* A phony array made by value_repeat.
446 Its type is the type of the elements, not an array type. */
447 type = VALUE_TYPE (arg1);
449 return value_from_longest (lookup_pointer_type (type),
450 (LONGEST) (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
453 /* Given a value which is a function, return a value which is a pointer
457 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 /* Return a pointer value for the object for which ARG1 is the contents. */
474 struct type *type = VALUE_TYPE (arg1);
475 if (TYPE_CODE (type) == TYPE_CODE_REF)
477 /* Copy the value, but change the type from (T&) to (T*).
478 We keep the same location information, which is efficient,
479 and allows &(&X) to get the location containing the reference. */
480 value arg2 = value_copy (arg1);
481 VALUE_TYPE (arg2) = lookup_pointer_type (TYPE_TARGET_TYPE (type));
484 if (VALUE_REPEATED (arg1)
485 || TYPE_CODE (type) == TYPE_CODE_ARRAY)
486 return value_coerce_array (arg1);
487 if (TYPE_CODE (type) == TYPE_CODE_FUNC)
488 return value_coerce_function (arg1);
490 if (VALUE_LVAL (arg1) != lval_memory)
491 error ("Attempt to take address of value not located in memory.");
493 return value_from_longest (lookup_pointer_type (type),
494 (LONGEST) (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
497 /* Given a value of a pointer type, apply the C unary * operator to it. */
505 if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_MEMBER)
506 error ("not implemented: member types in value_ind");
508 /* Allow * on an integer so we can cast it to whatever we want.
509 This returns an int, which seems like the most C-like thing
510 to do. "long long" variables are rare enough that
511 BUILTIN_TYPE_LONGEST would seem to be a mistake. */
512 if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_INT)
513 return value_at (builtin_type_int,
514 (CORE_ADDR) value_as_long (arg1));
515 else if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_PTR)
516 return value_at_lazy (TYPE_TARGET_TYPE (VALUE_TYPE (arg1)),
517 value_as_pointer (arg1));
518 error ("Attempt to take contents of a non-pointer value.");
519 return 0; /* For lint -- never reached */
522 /* Pushing small parts of stack frames. */
524 /* Push one word (the size of object that a register holds). */
527 push_word (sp, buffer)
529 REGISTER_TYPE buffer;
531 register int len = sizeof (REGISTER_TYPE);
533 SWAP_TARGET_AND_HOST (&buffer, len);
536 write_memory (sp, (char *)&buffer, len);
537 #else /* stack grows upward */
538 write_memory (sp, (char *)&buffer, len);
540 #endif /* stack grows upward */
545 /* Push LEN bytes with data at BUFFER. */
548 push_bytes (sp, buffer, len)
555 write_memory (sp, buffer, len);
556 #else /* stack grows upward */
557 write_memory (sp, buffer, len);
559 #endif /* stack grows upward */
564 /* Push onto the stack the specified value VALUE. */
568 register CORE_ADDR sp;
571 register int len = TYPE_LENGTH (VALUE_TYPE (arg));
575 write_memory (sp, VALUE_CONTENTS (arg), len);
576 #else /* stack grows upward */
577 write_memory (sp, VALUE_CONTENTS (arg), len);
579 #endif /* stack grows upward */
584 /* Perform the standard coercions that are specified
585 for arguments to be passed to C functions. */
588 value_arg_coerce (arg)
591 register struct type *type;
595 type = VALUE_TYPE (arg);
597 if (TYPE_CODE (type) == TYPE_CODE_INT
598 && TYPE_LENGTH (type) < TYPE_LENGTH (builtin_type_int))
599 return value_cast (builtin_type_int, arg);
601 if (TYPE_CODE (type) == TYPE_CODE_FLT
602 && TYPE_LENGTH (type) < TYPE_LENGTH (builtin_type_double))
603 return value_cast (builtin_type_double, arg);
608 /* Push the value ARG, first coercing it as an argument
612 value_arg_push (sp, arg)
613 register CORE_ADDR sp;
616 return value_push (sp, value_arg_coerce (arg));
619 /* Determine a function's address and its return type from its value.
620 Calls error() if the function is not valid for calling. */
623 find_function_addr (function, retval_type)
625 struct type **retval_type;
627 register struct type *ftype = VALUE_TYPE (function);
628 register enum type_code code = TYPE_CODE (ftype);
629 struct type *value_type;
632 /* If it's a member function, just look at the function
635 /* Determine address to call. */
636 if (code == TYPE_CODE_FUNC || code == TYPE_CODE_METHOD)
638 funaddr = VALUE_ADDRESS (function);
639 value_type = TYPE_TARGET_TYPE (ftype);
641 else if (code == TYPE_CODE_PTR)
643 funaddr = value_as_pointer (function);
644 if (TYPE_CODE (TYPE_TARGET_TYPE (ftype)) == TYPE_CODE_FUNC
645 || TYPE_CODE (TYPE_TARGET_TYPE (ftype)) == TYPE_CODE_METHOD)
646 value_type = TYPE_TARGET_TYPE (TYPE_TARGET_TYPE (ftype));
648 value_type = builtin_type_int;
650 else if (code == TYPE_CODE_INT)
652 /* Handle the case of functions lacking debugging info.
653 Their values are characters since their addresses are char */
654 if (TYPE_LENGTH (ftype) == 1)
655 funaddr = value_as_pointer (value_addr (function));
657 /* Handle integer used as address of a function. */
658 funaddr = (CORE_ADDR) value_as_long (function);
660 value_type = builtin_type_int;
663 error ("Invalid data type for function to be called.");
665 *retval_type = value_type;
669 #if defined (CALL_DUMMY)
670 /* All this stuff with a dummy frame may seem unnecessarily complicated
671 (why not just save registers in GDB?). The purpose of pushing a dummy
672 frame which looks just like a real frame is so that if you call a
673 function and then hit a breakpoint (get a signal, etc), "backtrace"
674 will look right. Whether the backtrace needs to actually show the
675 stack at the time the inferior function was called is debatable, but
676 it certainly needs to not display garbage. So if you are contemplating
677 making dummy frames be different from normal frames, consider that. */
679 /* Perform a function call in the inferior.
680 ARGS is a vector of values of arguments (NARGS of them).
681 FUNCTION is a value, the function to be called.
682 Returns a value representing what the function returned.
683 May fail to return, if a breakpoint or signal is hit
684 during the execution of the function. */
687 call_function_by_hand (function, nargs, args)
692 register CORE_ADDR sp;
695 /* CALL_DUMMY is an array of words (REGISTER_TYPE), but each word
696 is in host byte order. It is switched to target byte order before calling
698 static REGISTER_TYPE dummy[] = CALL_DUMMY;
699 REGISTER_TYPE dummy1[sizeof dummy / sizeof (REGISTER_TYPE)];
701 struct type *value_type;
702 unsigned char struct_return;
703 CORE_ADDR struct_addr;
704 struct inferior_status inf_status;
705 struct cleanup *old_chain;
710 if (!target_has_execution)
713 save_inferior_status (&inf_status, 1);
714 old_chain = make_cleanup (restore_inferior_status, &inf_status);
716 /* PUSH_DUMMY_FRAME is responsible for saving the inferior registers
717 (and POP_FRAME for restoring them). (At least on most machines)
718 they are saved on the stack in the inferior. */
721 old_sp = sp = read_register (SP_REGNUM);
723 #if 1 INNER_THAN 2 /* Stack grows down */
726 #else /* Stack grows up */
731 funaddr = find_function_addr (function, &value_type);
734 struct block *b = block_for_pc (funaddr);
735 /* If compiled without -g, assume GCC. */
736 using_gcc = b == NULL || BLOCK_GCC_COMPILED (b);
739 /* Are we returning a value using a structure return or a normal
742 struct_return = using_struct_return (function, funaddr, value_type,
745 /* Create a call sequence customized for this function
746 and the number of arguments for it. */
747 memcpy (dummy1, dummy, sizeof dummy);
748 for (i = 0; i < sizeof dummy / sizeof (REGISTER_TYPE); i++)
749 SWAP_TARGET_AND_HOST (&dummy1[i], sizeof (REGISTER_TYPE));
751 #ifdef GDB_TARGET_IS_HPPA
752 FIX_CALL_DUMMY (dummy1, start_sp, real_pc, funaddr, nargs, args,
753 value_type, using_gcc);
755 FIX_CALL_DUMMY (dummy1, start_sp, funaddr, nargs, args,
756 value_type, using_gcc);
760 #if CALL_DUMMY_LOCATION == ON_STACK
761 write_memory (start_sp, (char *)dummy1, sizeof dummy);
763 #else /* Not on stack. */
764 #if CALL_DUMMY_LOCATION == BEFORE_TEXT_END
765 /* Convex Unix prohibits executing in the stack segment. */
766 /* Hope there is empty room at the top of the text segment. */
768 extern CORE_ADDR text_end;
771 for (start_sp = text_end - sizeof dummy; start_sp < text_end; ++start_sp)
772 if (read_memory_integer (start_sp, 1) != 0)
773 error ("text segment full -- no place to put call");
776 start_sp = text_end - sizeof dummy;
777 write_memory (start_sp, (char *)dummy1, sizeof dummy);
779 #else /* After text_end. */
781 extern CORE_ADDR text_end;
785 errcode = target_write_memory (start_sp, (char *)dummy1, sizeof dummy);
787 error ("Cannot write text segment -- call_function failed");
789 #endif /* After text_end. */
790 #endif /* Not on stack. */
793 sp = old_sp; /* It really is used, for some ifdef's... */
797 /* If stack grows down, we must leave a hole at the top. */
801 /* Reserve space for the return structure to be written on the
802 stack, if necessary */
805 len += TYPE_LENGTH (value_type);
807 for (i = nargs - 1; i >= 0; i--)
808 len += TYPE_LENGTH (VALUE_TYPE (value_arg_coerce (args[i])));
809 #ifdef CALL_DUMMY_STACK_ADJUST
810 len += CALL_DUMMY_STACK_ADJUST;
813 sp -= STACK_ALIGN (len) - len;
815 sp += STACK_ALIGN (len) - len;
818 #endif /* STACK_ALIGN */
820 /* Reserve space for the return structure to be written on the
821 stack, if necessary */
826 sp -= TYPE_LENGTH (value_type);
830 sp += TYPE_LENGTH (value_type);
834 #if defined (REG_STRUCT_HAS_ADDR)
836 /* This is a machine like the sparc, where we need to pass a pointer
837 to the structure, not the structure itself. */
838 if (REG_STRUCT_HAS_ADDR (using_gcc))
839 for (i = nargs - 1; i >= 0; i--)
840 if (TYPE_CODE (VALUE_TYPE (args[i])) == TYPE_CODE_STRUCT)
843 #if !(1 INNER_THAN 2)
844 /* The stack grows up, so the address of the thing we push
845 is the stack pointer before we push it. */
848 /* Push the structure. */
849 sp = value_push (sp, args[i]);
851 /* The stack grows down, so the address of the thing we push
852 is the stack pointer after we push it. */
855 /* The value we're going to pass is the address of the thing
857 args[i] = value_from_longest (lookup_pointer_type (value_type),
861 #endif /* REG_STRUCT_HAS_ADDR. */
863 #ifdef PUSH_ARGUMENTS
864 PUSH_ARGUMENTS(nargs, args, sp, struct_return, struct_addr);
865 #else /* !PUSH_ARGUMENTS */
866 for (i = nargs - 1; i >= 0; i--)
867 sp = value_arg_push (sp, args[i]);
868 #endif /* !PUSH_ARGUMENTS */
870 #ifdef CALL_DUMMY_STACK_ADJUST
872 sp -= CALL_DUMMY_STACK_ADJUST;
874 sp += CALL_DUMMY_STACK_ADJUST;
876 #endif /* CALL_DUMMY_STACK_ADJUST */
878 /* Store the address at which the structure is supposed to be
879 written. Note that this (and the code which reserved the space
880 above) assumes that gcc was used to compile this function. Since
881 it doesn't cost us anything but space and if the function is pcc
882 it will ignore this value, we will make that assumption.
884 Also note that on some machines (like the sparc) pcc uses a
885 convention like gcc's. */
888 STORE_STRUCT_RETURN (struct_addr, sp);
890 /* Write the stack pointer. This is here because the statements above
891 might fool with it. On SPARC, this write also stores the register
892 window into the right place in the new stack frame, which otherwise
893 wouldn't happen. (See write_inferior_registers in sparc-xdep.c.) */
894 write_register (SP_REGNUM, sp);
896 /* Figure out the value returned by the function. */
898 char retbuf[REGISTER_BYTES];
900 /* Execute the stack dummy routine, calling FUNCTION.
901 When it is done, discard the empty frame
902 after storing the contents of all regs into retbuf. */
903 run_stack_dummy (real_pc + CALL_DUMMY_START_OFFSET, retbuf);
905 do_cleanups (old_chain);
907 return value_being_returned (value_type, retbuf, struct_return);
910 #else /* no CALL_DUMMY. */
912 call_function_by_hand (function, nargs, args)
917 error ("Cannot invoke functions on this machine.");
919 #endif /* no CALL_DUMMY. */
921 /* Create a value for a string constant:
922 Call the function malloc in the inferior to get space for it,
923 then copy the data into that space
924 and then return the address with type char *.
925 PTR points to the string constant data; LEN is number of characters.
926 Note that the string may contain embedded null bytes. */
929 value_string (ptr, len)
934 register struct symbol *sym;
937 /* Find the address of malloc in the inferior. */
939 sym = lookup_symbol ("malloc", 0, VAR_NAMESPACE, 0, NULL);
942 if (SYMBOL_CLASS (sym) != LOC_BLOCK)
943 error ("\"malloc\" exists in this program but is not a function.");
944 val = value_of_variable (sym);
948 struct minimal_symbol *msymbol;
949 msymbol = lookup_minimal_symbol ("malloc", (struct objfile *) NULL);
952 value_from_longest (lookup_pointer_type (lookup_function_type (
953 lookup_pointer_type (builtin_type_char))),
954 (LONGEST) SYMBOL_VALUE_ADDRESS (msymbol));
956 error ("String constants require the program to have a function \"malloc\".");
959 blocklen = value_from_longest (builtin_type_int, (LONGEST) (len + 1));
960 val = call_function_by_hand (val, 1, &blocklen);
961 if (value_logical_not (val))
962 error ("No memory available for string constant.");
963 write_memory (value_as_pointer (val), ptr, len + 1);
964 VALUE_TYPE (val) = lookup_pointer_type (builtin_type_char);
968 /* Helper function used by value_struct_elt to recurse through baseclasses.
969 Look for a field NAME in ARG1. Adjust the address of ARG1 by OFFSET bytes,
970 and search in it assuming it has (class) type TYPE.
971 If found, return value, else return NULL.
973 If LOOKING_FOR_BASECLASS, then instead of looking for struct fields,
974 look for a baseclass named NAME. */
977 search_struct_field (name, arg1, offset, type, looking_for_baseclass)
981 register struct type *type;
982 int looking_for_baseclass;
986 check_stub_type (type);
988 if (! looking_for_baseclass)
989 for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
991 char *t_field_name = TYPE_FIELD_NAME (type, i);
993 if (t_field_name && STREQ (t_field_name, name))
996 if (TYPE_FIELD_STATIC (type, i))
998 char *phys_name = TYPE_FIELD_STATIC_PHYSNAME (type, i);
1000 lookup_symbol (phys_name, 0, VAR_NAMESPACE, 0, NULL);
1002 error ("Internal error: could not find physical static variable named %s",
1004 v = value_at (TYPE_FIELD_TYPE (type, i),
1005 (CORE_ADDR)SYMBOL_BLOCK_VALUE (sym));
1008 v = value_primitive_field (arg1, offset, i, type);
1010 error("there is no field named %s", name);
1015 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1018 /* If we are looking for baseclasses, this is what we get when we
1020 int found_baseclass = (looking_for_baseclass
1021 && STREQ (name, TYPE_BASECLASS_NAME (type, i)));
1023 if (BASETYPE_VIA_VIRTUAL (type, i))
1026 /* Fix to use baseclass_offset instead. FIXME */
1027 baseclass_addr (type, i, VALUE_CONTENTS (arg1) + offset,
1030 error ("virtual baseclass botch");
1031 if (found_baseclass)
1033 v = search_struct_field (name, v2, 0, TYPE_BASECLASS (type, i),
1034 looking_for_baseclass);
1036 else if (found_baseclass)
1037 v = value_primitive_field (arg1, offset, i, type);
1039 v = search_struct_field (name, arg1,
1040 offset + TYPE_BASECLASS_BITPOS (type, i) / 8,
1041 TYPE_BASECLASS (type, i),
1042 looking_for_baseclass);
1048 /* Helper function used by value_struct_elt to recurse through baseclasses.
1049 Look for a field NAME in ARG1. Adjust the address of ARG1 by OFFSET bytes,
1050 and search in it assuming it has (class) type TYPE.
1051 If found, return value, else return NULL. */
1054 search_struct_method (name, arg1p, args, offset, static_memfuncp, type)
1056 register value *arg1p, *args;
1057 int offset, *static_memfuncp;
1058 register struct type *type;
1062 check_stub_type (type);
1063 for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
1065 char *t_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
1066 if (t_field_name && STREQ (t_field_name, name))
1068 int j = TYPE_FN_FIELDLIST_LENGTH (type, i) - 1;
1069 struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
1071 if (j > 0 && args == 0)
1072 error ("cannot resolve overloaded method `%s'", name);
1075 if (TYPE_FN_FIELD_STUB (f, j))
1076 check_stub_method (type, i, j);
1077 if (!typecmp (TYPE_FN_FIELD_STATIC_P (f, j),
1078 TYPE_FN_FIELD_ARGS (f, j), args))
1080 if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
1081 return (value)value_virtual_fn_field (arg1p, f, j, type, offset);
1082 if (TYPE_FN_FIELD_STATIC_P (f, j) && static_memfuncp)
1083 *static_memfuncp = 1;
1084 return (value)value_fn_field (arg1p, f, j, type, offset);
1091 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1096 if (BASETYPE_VIA_VIRTUAL (type, i))
1098 base_offset = baseclass_offset (type, i, *arg1p, offset);
1099 if (base_offset == -1)
1100 error ("virtual baseclass botch");
1104 base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
1106 v = search_struct_method (name, arg1p, args, base_offset + offset,
1107 static_memfuncp, TYPE_BASECLASS (type, i));
1110 /* FIXME-bothner: Why is this commented out? Why is it here? */
1111 /* *arg1p = arg1_tmp;*/
1118 /* Given *ARGP, a value of type (pointer to a)* structure/union,
1119 extract the component named NAME from the ultimate target structure/union
1120 and return it as a value with its appropriate type.
1121 ERR is used in the error message if *ARGP's type is wrong.
1123 C++: ARGS is a list of argument types to aid in the selection of
1124 an appropriate method. Also, handle derived types.
1126 STATIC_MEMFUNCP, if non-NULL, points to a caller-supplied location
1127 where the truthvalue of whether the function that was resolved was
1128 a static member function or not is stored.
1130 ERR is an error message to be printed in case the field is not found. */
1133 value_struct_elt (argp, args, name, static_memfuncp, err)
1134 register value *argp, *args;
1136 int *static_memfuncp;
1139 register struct type *t;
1142 COERCE_ARRAY (*argp);
1144 t = VALUE_TYPE (*argp);
1146 /* Follow pointers until we get to a non-pointer. */
1148 while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
1150 *argp = value_ind (*argp);
1151 /* Don't coerce fn pointer to fn and then back again! */
1152 if (TYPE_CODE (VALUE_TYPE (*argp)) != TYPE_CODE_FUNC)
1153 COERCE_ARRAY (*argp);
1154 t = VALUE_TYPE (*argp);
1157 if (TYPE_CODE (t) == TYPE_CODE_MEMBER)
1158 error ("not implemented: member type in value_struct_elt");
1160 if ( TYPE_CODE (t) != TYPE_CODE_STRUCT
1161 && TYPE_CODE (t) != TYPE_CODE_UNION)
1162 error ("Attempt to extract a component of a value that is not a %s.", err);
1164 /* Assume it's not, unless we see that it is. */
1165 if (static_memfuncp)
1166 *static_memfuncp =0;
1170 /* if there are no arguments ...do this... */
1172 /* Try as a field first, because if we succeed, there
1173 is less work to be done. */
1174 v = search_struct_field (name, *argp, 0, t, 0);
1178 /* C++: If it was not found as a data field, then try to
1179 return it as a pointer to a method. */
1181 if (destructor_name_p (name, t))
1182 error ("Cannot get value of destructor");
1184 v = search_struct_method (name, argp, args, 0, static_memfuncp, t);
1188 if (TYPE_NFN_FIELDS (t))
1189 error ("There is no member or method named %s.", name);
1191 error ("There is no member named %s.", name);
1196 if (destructor_name_p (name, t))
1200 /* destructors are a special case. */
1201 return (value)value_fn_field (NULL, TYPE_FN_FIELDLIST1 (t, 0),
1202 TYPE_FN_FIELDLIST_LENGTH (t, 0),
1207 error ("destructor should not have any argument");
1211 v = search_struct_method (name, argp, args, 0, static_memfuncp, t);
1215 /* See if user tried to invoke data as function. If so,
1216 hand it back. If it's not callable (i.e., a pointer to function),
1217 gdb should give an error. */
1218 v = search_struct_field (name, *argp, 0, t, 0);
1222 error ("Structure has no component named %s.", name);
1226 /* C++: return 1 is NAME is a legitimate name for the destructor
1227 of type TYPE. If TYPE does not have a destructor, or
1228 if NAME is inappropriate for TYPE, an error is signaled. */
1230 destructor_name_p (name, type)
1232 const struct type *type;
1234 /* destructors are a special case. */
1238 char *dname = type_name_no_tag (type);
1239 if (!STREQ (dname, name+1))
1240 error ("name of destructor must equal name of class");
1247 /* Helper function for check_field: Given TYPE, a structure/union,
1248 return 1 if the component named NAME from the ultimate
1249 target structure/union is defined, otherwise, return 0. */
1252 check_field_in (type, name)
1253 register struct type *type;
1258 for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
1260 char *t_field_name = TYPE_FIELD_NAME (type, i);
1261 if (t_field_name && STREQ (t_field_name, name))
1265 /* C++: If it was not found as a data field, then try to
1266 return it as a pointer to a method. */
1268 /* Destructors are a special case. */
1269 if (destructor_name_p (name, type))
1272 for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; --i)
1274 if (STREQ (TYPE_FN_FIELDLIST_NAME (type, i), name))
1278 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1279 if (check_field_in (TYPE_BASECLASS (type, i), name))
1286 /* C++: Given ARG1, a value of type (pointer to a)* structure/union,
1287 return 1 if the component named NAME from the ultimate
1288 target structure/union is defined, otherwise, return 0. */
1291 check_field (arg1, name)
1292 register value arg1;
1295 register struct type *t;
1297 COERCE_ARRAY (arg1);
1299 t = VALUE_TYPE (arg1);
1301 /* Follow pointers until we get to a non-pointer. */
1303 while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
1304 t = TYPE_TARGET_TYPE (t);
1306 if (TYPE_CODE (t) == TYPE_CODE_MEMBER)
1307 error ("not implemented: member type in check_field");
1309 if ( TYPE_CODE (t) != TYPE_CODE_STRUCT
1310 && TYPE_CODE (t) != TYPE_CODE_UNION)
1311 error ("Internal error: `this' is not an aggregate");
1313 return check_field_in (t, name);
1316 /* C++: Given an aggregate type CURTYPE, and a member name NAME,
1317 return the address of this member as a "pointer to member"
1318 type. If INTYPE is non-null, then it will be the type
1319 of the member we are looking for. This will help us resolve
1320 "pointers to member functions". This function is used
1321 to resolve user expressions of the form "DOMAIN::NAME". */
1324 value_struct_elt_for_reference (domain, offset, curtype, name, intype)
1325 struct type *domain, *curtype, *intype;
1329 register struct type *t = curtype;
1333 if ( TYPE_CODE (t) != TYPE_CODE_STRUCT
1334 && TYPE_CODE (t) != TYPE_CODE_UNION)
1335 error ("Internal error: non-aggregate type to value_struct_elt_for_reference");
1337 for (i = TYPE_NFIELDS (t) - 1; i >= TYPE_N_BASECLASSES (t); i--)
1339 char *t_field_name = TYPE_FIELD_NAME (t, i);
1341 if (t_field_name && STREQ (t_field_name, name))
1343 if (TYPE_FIELD_STATIC (t, i))
1345 char *phys_name = TYPE_FIELD_STATIC_PHYSNAME (t, i);
1346 struct symbol *sym =
1347 lookup_symbol (phys_name, 0, VAR_NAMESPACE, 0, NULL);
1349 error ("Internal error: could not find physical static variable named %s",
1351 return value_at (SYMBOL_TYPE (sym),
1352 (CORE_ADDR)SYMBOL_BLOCK_VALUE (sym));
1354 if (TYPE_FIELD_PACKED (t, i))
1355 error ("pointers to bitfield members not allowed");
1357 return value_from_longest
1358 (lookup_reference_type (lookup_member_type (TYPE_FIELD_TYPE (t, i),
1360 offset + (LONGEST) (TYPE_FIELD_BITPOS (t, i) >> 3));
1364 /* C++: If it was not found as a data field, then try to
1365 return it as a pointer to a method. */
1367 /* Destructors are a special case. */
1368 if (destructor_name_p (name, t))
1370 error ("member pointers to destructors not implemented yet");
1373 /* Perform all necessary dereferencing. */
1374 while (intype && TYPE_CODE (intype) == TYPE_CODE_PTR)
1375 intype = TYPE_TARGET_TYPE (intype);
1377 for (i = TYPE_NFN_FIELDS (t) - 1; i >= 0; --i)
1379 if (STREQ (TYPE_FN_FIELDLIST_NAME (t, i), name))
1381 int j = TYPE_FN_FIELDLIST_LENGTH (t, i);
1382 struct fn_field *f = TYPE_FN_FIELDLIST1 (t, i);
1384 if (intype == 0 && j > 1)
1385 error ("non-unique member `%s' requires type instantiation", name);
1389 if (TYPE_FN_FIELD_TYPE (f, j) == intype)
1392 error ("no member function matches that type instantiation");
1397 if (TYPE_FN_FIELD_STUB (f, j))
1398 check_stub_method (t, i, j);
1399 if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
1401 return value_from_longest
1402 (lookup_reference_type
1403 (lookup_member_type (TYPE_FN_FIELD_TYPE (f, j),
1405 (LONGEST) METHOD_PTR_FROM_VOFFSET
1406 (TYPE_FN_FIELD_VOFFSET (f, j)));
1410 struct symbol *s = lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
1411 0, VAR_NAMESPACE, 0, NULL);
1418 v = read_var_value (s, 0);
1420 VALUE_TYPE (v) = lookup_reference_type
1421 (lookup_member_type (TYPE_FN_FIELD_TYPE (f, j),
1429 for (i = TYPE_N_BASECLASSES (t) - 1; i >= 0; i--)
1434 if (BASETYPE_VIA_VIRTUAL (t, i))
1437 base_offset = TYPE_BASECLASS_BITPOS (t, i) / 8;
1438 v = value_struct_elt_for_reference (domain,
1439 offset + base_offset,
1440 TYPE_BASECLASS (t, i),
1449 /* Compare two argument lists and return the position in which they differ,
1452 STATICP is nonzero if the T1 argument list came from a
1453 static member function.
1455 For non-static member functions, we ignore the first argument,
1456 which is the type of the instance variable. This is because we want
1457 to handle calls with objects from derived classes. This is not
1458 entirely correct: we should actually check to make sure that a
1459 requested operation is type secure, shouldn't we? FIXME. */
1462 typecmp (staticp, t1, t2)
1471 if (staticp && t1 == 0)
1475 if (t1[0]->code == TYPE_CODE_VOID) return 0;
1476 if (t1[!staticp] == 0) return 0;
1477 for (i = !staticp; t1[i] && t1[i]->code != TYPE_CODE_VOID; i++)
1480 || t1[i]->code != t2[i]->type->code
1481 /* Too pessimistic: || t1[i]->target_type != t2[i]->type->target_type */
1485 if (!t1[i]) return 0;
1486 return t2[i] ? i+1 : 0;
1489 /* C++: return the value of the class instance variable, if one exists.
1490 Flag COMPLAIN signals an error if the request is made in an
1491 inappropriate context. */
1493 value_of_this (complain)
1496 extern FRAME selected_frame;
1497 struct symbol *func, *sym;
1500 static const char funny_this[] = "this";
1503 if (selected_frame == 0)
1505 error ("no frame selected");
1508 func = get_frame_function (selected_frame);
1512 error ("no `this' in nameless context");
1516 b = SYMBOL_BLOCK_VALUE (func);
1517 i = BLOCK_NSYMS (b);
1520 error ("no args, no `this'");
1523 /* Calling lookup_block_symbol is necessary to get the LOC_REGISTER
1524 symbol instead of the LOC_ARG one (if both exist). */
1525 sym = lookup_block_symbol (b, funny_this, VAR_NAMESPACE);
1529 error ("current stack frame not in method");
1534 this = read_var_value (sym, selected_frame);
1535 if (this == 0 && complain)
1536 error ("`this' argument at unknown address");