Fix things pointed up by Fred Fish's test suite; see ChangeLog.
[binutils-gdb.git] / gdb / valops.c
1 /* Perform non-arithmetic operations on values, for GDB.
2 Copyright 1986, 1987, 1989, 1991 Free Software Foundation, Inc.
3
4 This file is part of GDB.
5
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.
10
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.
15
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. */
19
20 #include <stdio.h>
21 #include "defs.h"
22 #include "symtab.h"
23 #include "value.h"
24 #include "frame.h"
25 #include "inferior.h"
26 #include "gdbcore.h"
27 #include "target.h"
28
29 #include <errno.h>
30
31 /* Local functions. */
32 static value search_struct_field ();
33 \f
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. */
38
39 value
40 value_cast (type, arg2)
41 struct type *type;
42 register value arg2;
43 {
44 register enum type_code code1;
45 register enum type_code code2;
46 register int scalar;
47
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)
51 COERCE_ARRAY (arg2);
52
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);
57
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)))
64 {
65 if (code1 == TYPE_CODE_PTR && code2 == TYPE_CODE_PTR)
66 {
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 */
75 {
76 value v = search_struct_field (type_name_no_tag (t1),
77 value_ind (arg2), 0, t2, 1);
78 if (v)
79 {
80 v = value_addr (v);
81 VALUE_TYPE (v) = type;
82 return v;
83 }
84 }
85 /* No superclass found, just fall through to change ptr type. */
86 }
87 VALUE_TYPE (arg2) = type;
88 return arg2;
89 }
90 else if (VALUE_LVAL (arg2) == lval_memory)
91 {
92 return value_at_lazy (type, VALUE_ADDRESS (arg2) + VALUE_OFFSET (arg2));
93 }
94 else if (code1 == TYPE_CODE_VOID)
95 {
96 return value_zero (builtin_type_void, not_lval);
97 }
98 else
99 {
100 error ("Invalid cast.");
101 return 0;
102 }
103 }
104
105 /* Create a value of type TYPE that is zero, and return it. */
106
107 value
108 value_zero (type, lv)
109 struct type *type;
110 enum lval_type lv;
111 {
112 register value val = allocate_value (type);
113
114 bzero (VALUE_CONTENTS (val), TYPE_LENGTH (type));
115 VALUE_LVAL (val) = lv;
116
117 return val;
118 }
119
120 /* Return a value with type TYPE located at ADDR.
121
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. */
128
129 value
130 value_at (type, addr)
131 struct type *type;
132 CORE_ADDR addr;
133 {
134 register value val = allocate_value (type);
135
136 read_memory (addr, VALUE_CONTENTS_RAW (val), TYPE_LENGTH (type));
137
138 VALUE_LVAL (val) = lval_memory;
139 VALUE_ADDRESS (val) = addr;
140
141 return val;
142 }
143
144 /* Return a lazy value with type TYPE located at ADDR (cf. value_at). */
145
146 value
147 value_at_lazy (type, addr)
148 struct type *type;
149 CORE_ADDR addr;
150 {
151 register value val = allocate_value (type);
152
153 VALUE_LVAL (val) = lval_memory;
154 VALUE_ADDRESS (val) = addr;
155 VALUE_LAZY (val) = 1;
156
157 return val;
158 }
159
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.
164
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.
167
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
170 value is ignored. */
171
172 int
173 value_fetch_lazy (val)
174 register value val;
175 {
176 CORE_ADDR addr = VALUE_ADDRESS (val) + VALUE_OFFSET (val);
177
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;
182 return 0;
183 }
184
185
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. */
188
189 value
190 value_assign (toval, fromval)
191 register value toval, fromval;
192 {
193 register struct type *type = VALUE_TYPE (toval);
194 register value val;
195 char raw_buffer[MAX_REGISTER_RAW_SIZE];
196 char virtual_buffer[MAX_REGISTER_VIRTUAL_SIZE];
197 int use_buffer = 0;
198
199 COERCE_ARRAY (fromval);
200
201 if (VALUE_LVAL (toval) != lval_internalvar)
202 fromval = value_cast (type, fromval);
203
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. */
208
209 if (VALUE_REGNO (toval) >= 0
210 && REGISTER_CONVERTIBLE (VALUE_REGNO (toval)))
211 {
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);
219 }
220
221 switch (VALUE_LVAL (toval))
222 {
223 case lval_internalvar:
224 set_internalvar (VALUE_INTERNALVAR (toval), fromval);
225 break;
226
227 case lval_internalvar_component:
228 set_internalvar_component (VALUE_INTERNALVAR (toval),
229 VALUE_OFFSET (toval),
230 VALUE_BITPOS (toval),
231 VALUE_BITSIZE (toval),
232 fromval);
233 break;
234
235 case lval_memory:
236 if (VALUE_BITSIZE (toval))
237 {
238 int v; /* FIXME, this won't work for large bitfields */
239 read_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
240 &v, sizeof v);
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);
245 }
246 else if (use_buffer)
247 write_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
248 raw_buffer, use_buffer);
249 else
250 write_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
251 VALUE_CONTENTS (fromval), TYPE_LENGTH (type));
252 break;
253
254 case lval_register:
255 if (VALUE_BITSIZE (toval))
256 {
257 int v;
258
259 read_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
260 &v, sizeof v);
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),
264 &v, sizeof v);
265 }
266 else if (use_buffer)
267 write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
268 raw_buffer, use_buffer);
269 else
270 write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
271 VALUE_CONTENTS (fromval), TYPE_LENGTH (type));
272 break;
273
274 case lval_reg_frame_relative:
275 {
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;
283 int amount_copied;
284 char *buffer = (char *) alloca (amount_to_copy);
285 int regno;
286 FRAME frame;
287
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))
292 ;
293
294 if (!frame)
295 error ("Value being assigned to is no longer active.");
296
297 amount_to_copy += (reg_size - amount_to_copy % reg_size);
298
299 /* Copy it out. */
300 for ((regno = VALUE_FRAME_REGNUM (toval) + reg_offset,
301 amount_copied = 0);
302 amount_copied < amount_to_copy;
303 amount_copied += reg_size, regno++)
304 {
305 get_saved_register (buffer + amount_copied,
306 (int *)NULL, (CORE_ADDR)NULL,
307 frame, regno, (enum lval_type *)NULL);
308 }
309
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));
315 else if (use_buffer)
316 bcopy (raw_buffer, buffer + byte_offset, use_buffer);
317 else
318 bcopy (VALUE_CONTENTS (fromval), buffer + byte_offset,
319 TYPE_LENGTH (type));
320
321 /* Copy it back. */
322 for ((regno = VALUE_FRAME_REGNUM (toval) + reg_offset,
323 amount_copied = 0);
324 amount_copied < amount_to_copy;
325 amount_copied += reg_size, regno++)
326 {
327 enum lval_type lval;
328 CORE_ADDR addr;
329 int optim;
330
331 /* Just find out where to put it. */
332 get_saved_register ((char *)NULL,
333 &optim, &addr, frame, regno, &lval);
334
335 if (optim)
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);
341 else
342 error ("Attempt to assign to an unmodifiable value.");
343 }
344 }
345 break;
346
347
348 default:
349 error ("Left side of = operation is not an lvalue.");
350 }
351
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). */
354
355 if (VALUE_LVAL (toval) == lval_internalvar
356 || VALUE_LVAL (toval) == lval_internalvar_component)
357 {
358 type = VALUE_TYPE (fromval);
359 }
360
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;
365
366 return val;
367 }
368
369 /* Extend a value VAL to COUNT repetitions of its type. */
370
371 value
372 value_repeat (arg1, count)
373 value arg1;
374 int count;
375 {
376 register value val;
377
378 if (VALUE_LVAL (arg1) != lval_memory)
379 error ("Only values in memory can be extended with '@'.");
380 if (count < 1)
381 error ("Invalid number %d of repetitions.", count);
382
383 val = allocate_repeat_value (VALUE_TYPE (arg1), count);
384
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);
390
391 return val;
392 }
393
394 value
395 value_of_variable (var)
396 struct symbol *var;
397 {
398 value val;
399
400 val = read_var_value (var, (FRAME) 0);
401 if (val == 0)
402 error ("Address of symbol \"%s\" is unknown.", SYMBOL_NAME (var));
403 return val;
404 }
405
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. */
409
410 value
411 value_coerce_array (arg1)
412 value arg1;
413 {
414 register struct type *type;
415
416 if (VALUE_LVAL (arg1) != lval_memory)
417 error ("Attempt to take address of value not located in memory.");
418
419 /* Get type of elements. */
420 if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_ARRAY)
421 type = TYPE_TARGET_TYPE (VALUE_TYPE (arg1));
422 else
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);
426
427 return value_from_longest (lookup_pointer_type (type),
428 (LONGEST) (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
429 }
430
431 /* Given a value which is a function, return a value which is a pointer
432 to it. */
433
434 value
435 value_coerce_function (arg1)
436 value arg1;
437 {
438
439 if (VALUE_LVAL (arg1) != lval_memory)
440 error ("Attempt to take address of value not located in memory.");
441
442 return value_from_longest (lookup_pointer_type (VALUE_TYPE (arg1)),
443 (LONGEST) (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
444 }
445
446 /* Return a pointer value for the object for which ARG1 is the contents. */
447
448 value
449 value_addr (arg1)
450 value arg1;
451 {
452
453 COERCE_REF(arg1);
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);
459
460 if (VALUE_LVAL (arg1) != lval_memory)
461 error ("Attempt to take address of value not located in memory.");
462
463 return value_from_longest (lookup_pointer_type (VALUE_TYPE (arg1)),
464 (LONGEST) (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
465 }
466
467 /* Given a value of a pointer type, apply the C unary * operator to it. */
468
469 value
470 value_ind (arg1)
471 value arg1;
472 {
473 COERCE_ARRAY (arg1);
474
475 if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_MEMBER)
476 error ("not implemented: member types in value_ind");
477
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 */
490 }
491 \f
492 /* Pushing small parts of stack frames. */
493
494 /* Push one word (the size of object that a register holds). */
495
496 CORE_ADDR
497 push_word (sp, buffer)
498 CORE_ADDR sp;
499 REGISTER_TYPE buffer;
500 {
501 register int len = sizeof (REGISTER_TYPE);
502
503 SWAP_TARGET_AND_HOST (&buffer, len);
504 #if 1 INNER_THAN 2
505 sp -= len;
506 write_memory (sp, (char *)&buffer, len);
507 #else /* stack grows upward */
508 write_memory (sp, (char *)&buffer, len);
509 sp += len;
510 #endif /* stack grows upward */
511
512 return sp;
513 }
514
515 /* Push LEN bytes with data at BUFFER. */
516
517 CORE_ADDR
518 push_bytes (sp, buffer, len)
519 CORE_ADDR sp;
520 char *buffer;
521 int len;
522 {
523 #if 1 INNER_THAN 2
524 sp -= len;
525 write_memory (sp, buffer, len);
526 #else /* stack grows upward */
527 write_memory (sp, buffer, len);
528 sp += len;
529 #endif /* stack grows upward */
530
531 return sp;
532 }
533
534 /* Push onto the stack the specified value VALUE. */
535
536 CORE_ADDR
537 value_push (sp, arg)
538 register CORE_ADDR sp;
539 value arg;
540 {
541 register int len = TYPE_LENGTH (VALUE_TYPE (arg));
542
543 #if 1 INNER_THAN 2
544 sp -= len;
545 write_memory (sp, VALUE_CONTENTS (arg), len);
546 #else /* stack grows upward */
547 write_memory (sp, VALUE_CONTENTS (arg), len);
548 sp += len;
549 #endif /* stack grows upward */
550
551 return sp;
552 }
553
554 /* Perform the standard coercions that are specified
555 for arguments to be passed to C functions. */
556
557 value
558 value_arg_coerce (arg)
559 value arg;
560 {
561 register struct type *type;
562
563 COERCE_ENUM (arg);
564
565 type = VALUE_TYPE (arg);
566
567 if (TYPE_CODE (type) == TYPE_CODE_INT
568 && TYPE_LENGTH (type) < TYPE_LENGTH (builtin_type_int))
569 return value_cast (builtin_type_int, arg);
570
571 if (TYPE_CODE (type) == TYPE_CODE_FLT
572 && TYPE_LENGTH (type) < TYPE_LENGTH (builtin_type_double))
573 return value_cast (builtin_type_double, arg);
574
575 return arg;
576 }
577
578 /* Push the value ARG, first coercing it as an argument
579 to a C function. */
580
581 CORE_ADDR
582 value_arg_push (sp, arg)
583 register CORE_ADDR sp;
584 value arg;
585 {
586 return value_push (sp, value_arg_coerce (arg));
587 }
588
589 /* Determine a function's address and its return type from its value.
590 Calls error() if the function is not valid for calling. */
591
592 CORE_ADDR
593 find_function_addr (function, retval_type)
594 value function;
595 struct type **retval_type;
596 {
597 register struct type *ftype = VALUE_TYPE (function);
598 register enum type_code code = TYPE_CODE (ftype);
599 struct type *value_type;
600 CORE_ADDR funaddr;
601
602 /* If it's a member function, just look at the function
603 part of it. */
604
605 /* Determine address to call. */
606 if (code == TYPE_CODE_FUNC || code == TYPE_CODE_METHOD)
607 {
608 funaddr = VALUE_ADDRESS (function);
609 value_type = TYPE_TARGET_TYPE (ftype);
610 }
611 else if (code == TYPE_CODE_PTR)
612 {
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));
617 else
618 value_type = builtin_type_int;
619 }
620 else if (code == TYPE_CODE_INT)
621 {
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));
626 else
627 /* Handle integer used as address of a function. */
628 funaddr = (CORE_ADDR) value_as_long (function);
629
630 value_type = builtin_type_int;
631 }
632 else
633 error ("Invalid data type for function to be called.");
634
635 *retval_type = value_type;
636 return funaddr;
637 }
638
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. */
648
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. */
655
656 value
657 call_function_by_hand (function, nargs, args)
658 value function;
659 int nargs;
660 value *args;
661 {
662 register CORE_ADDR sp;
663 register int i;
664 CORE_ADDR start_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
667 FIX_CALL_DUMMY. */
668 static REGISTER_TYPE dummy[] = CALL_DUMMY;
669 REGISTER_TYPE dummy1[sizeof dummy / sizeof (REGISTER_TYPE)];
670 CORE_ADDR old_sp;
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;
676 CORE_ADDR funaddr;
677 int using_gcc;
678
679 save_inferior_status (&inf_status, 1);
680 old_chain = make_cleanup (restore_inferior_status, &inf_status);
681
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. */
685 PUSH_DUMMY_FRAME;
686
687 old_sp = sp = read_register (SP_REGNUM);
688
689 #if 1 INNER_THAN 2 /* Stack grows down */
690 sp -= sizeof dummy;
691 start_sp = sp;
692 #else /* Stack grows up */
693 start_sp = sp;
694 sp += sizeof dummy;
695 #endif
696
697 funaddr = find_function_addr (function, &value_type);
698
699 {
700 struct block *b = block_for_pc (funaddr);
701 /* If compiled without -g, assume GCC. */
702 using_gcc = b == NULL || BLOCK_GCC_COMPILED (b);
703 }
704
705 /* Are we returning a value using a structure return or a normal
706 value return? */
707
708 struct_return = using_struct_return (function, funaddr, value_type,
709 using_gcc);
710
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);
718
719 #if CALL_DUMMY_LOCATION == ON_STACK
720 write_memory (start_sp, (char *)dummy1, sizeof dummy);
721
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. */
726 {
727 extern CORE_ADDR text_end;
728 static checked = 0;
729 if (!checked)
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");
733 checked = 1;
734 sp = old_sp;
735 start_sp = text_end - sizeof dummy;
736 write_memory (start_sp, (char *)dummy1, sizeof dummy);
737 }
738 #else /* After text_end. */
739 {
740 extern CORE_ADDR text_end;
741 int errcode;
742 sp = old_sp;
743 start_sp = text_end;
744 errcode = target_write_memory (start_sp, (char *)dummy1, sizeof dummy);
745 if (errcode != 0)
746 error ("Cannot write text segment -- call_function failed");
747 }
748 #endif /* After text_end. */
749 #endif /* Not on stack. */
750
751 #ifdef lint
752 sp = old_sp; /* It really is used, for some ifdef's... */
753 #endif
754
755 #ifdef STACK_ALIGN
756 /* If stack grows down, we must leave a hole at the top. */
757 {
758 int len = 0;
759
760 /* Reserve space for the return structure to be written on the
761 stack, if necessary */
762
763 if (struct_return)
764 len += TYPE_LENGTH (value_type);
765
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;
770 #endif
771 #if 1 INNER_THAN 2
772 sp -= STACK_ALIGN (len) - len;
773 #else
774 sp += STACK_ALIGN (len) - len;
775 #endif
776 }
777 #endif /* STACK_ALIGN */
778
779 /* Reserve space for the return structure to be written on the
780 stack, if necessary */
781
782 if (struct_return)
783 {
784 #if 1 INNER_THAN 2
785 sp -= TYPE_LENGTH (value_type);
786 struct_addr = sp;
787 #else
788 struct_addr = sp;
789 sp += TYPE_LENGTH (value_type);
790 #endif
791 }
792
793 #if defined (REG_STRUCT_HAS_ADDR)
794 {
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)
800 {
801 CORE_ADDR addr;
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. */
805 addr = sp;
806 #endif
807 /* Push the structure. */
808 sp = value_push (sp, args[i]);
809 #if 1 INNER_THAN 2
810 /* The stack grows down, so the address of the thing we push
811 is the stack pointer after we push it. */
812 addr = sp;
813 #endif
814 /* The value we're going to pass is the address of the thing
815 we just pushed. */
816 args[i] = value_from_longest (lookup_pointer_type (value_type),
817 (LONGEST) addr);
818 }
819 }
820 #endif /* REG_STRUCT_HAS_ADDR. */
821
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 */
828
829 #ifdef CALL_DUMMY_STACK_ADJUST
830 #if 1 INNER_THAN 2
831 sp -= CALL_DUMMY_STACK_ADJUST;
832 #else
833 sp += CALL_DUMMY_STACK_ADJUST;
834 #endif
835 #endif /* CALL_DUMMY_STACK_ADJUST */
836
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.
842
843 Also note that on some machines (like the sparc) pcc uses a
844 convention like gcc's. */
845
846 if (struct_return)
847 STORE_STRUCT_RETURN (struct_addr, sp);
848
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);
854
855 /* Figure out the value returned by the function. */
856 {
857 char retbuf[REGISTER_BYTES];
858
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);
863
864 do_cleanups (old_chain);
865
866 return value_being_returned (value_type, retbuf, struct_return);
867 }
868 }
869 #else /* no CALL_DUMMY. */
870 value
871 call_function_by_hand (function, nargs, args)
872 value function;
873 int nargs;
874 value *args;
875 {
876 error ("Cannot invoke functions on this machine.");
877 }
878 #endif /* no CALL_DUMMY. */
879 \f
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. */
885
886 value
887 value_string (ptr, len)
888 char *ptr;
889 int len;
890 {
891 register value val;
892 register struct symbol *sym;
893 value blocklen;
894 register char *copy = (char *) alloca (len + 1);
895 char *i = ptr;
896 register char *o = copy, *ibeg = ptr;
897 register int c;
898
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. */
902
903 while (i - ibeg < len)
904 {
905 c = *i++;
906 if (c == '\\')
907 {
908 c = parse_escape (&i);
909 if (c == -1)
910 continue;
911 }
912 *o++ = c;
913 }
914 *o = 0;
915
916 /* Get the length of the string after escapes are processed. */
917
918 len = o - copy;
919
920 /* Find the address of malloc in the inferior. */
921
922 sym = lookup_symbol ("malloc", 0, VAR_NAMESPACE, 0, NULL);
923 if (sym != 0)
924 {
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);
928 }
929 else
930 {
931 register int j;
932 j = lookup_misc_func ("malloc");
933 if (j >= 0)
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);
938 else
939 error ("String constants require the program to have a function \"malloc\".");
940 }
941
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);
948 return val;
949 }
950 \f
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 search in it assuming it has (class) type TYPE.
954 If found, return value, else return NULL.
955
956 If LOOKING_FOR_BASECLASS, then instead of looking for struct fields,
957 look for a baseclass named NAME. */
958
959 static value
960 search_struct_field (name, arg1, offset, type, looking_for_baseclass)
961 char *name;
962 register value arg1;
963 int offset;
964 register struct type *type;
965 int looking_for_baseclass;
966 {
967 int i;
968
969 check_stub_type (type);
970
971 if (! looking_for_baseclass)
972 for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
973 {
974 char *t_field_name = TYPE_FIELD_NAME (type, i);
975
976 if (t_field_name && !strcmp (t_field_name, name))
977 {
978 value v = (TYPE_FIELD_STATIC (type, i)
979 ? value_static_field (type, name, i)
980 : value_primitive_field (arg1, offset, i, type));
981 if (v == 0)
982 error("there is no field named %s", name);
983 return v;
984 }
985 }
986
987 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
988 {
989 value v;
990 /* If we are looking for baseclasses, this is what we get when we
991 hit them. */
992 int found_baseclass = (looking_for_baseclass
993 && !strcmp (name, TYPE_BASECLASS_NAME (type, i)));
994
995 if (BASETYPE_VIA_VIRTUAL (type, i))
996 {
997 value v2;
998 baseclass_addr (type, i, VALUE_CONTENTS (arg1) + offset,
999 &v2, (int *)NULL);
1000 if (v2 == 0)
1001 error ("virtual baseclass botch");
1002 if (found_baseclass)
1003 return v2;
1004 v = search_struct_field (name, v2, 0, TYPE_BASECLASS (type, i),
1005 looking_for_baseclass);
1006 if (v) return v;
1007 else continue;
1008 }
1009 if (found_baseclass)
1010 v = value_primitive_field (arg1, offset, i, type);
1011 else
1012 v = search_struct_field (name, arg1,
1013 offset + TYPE_BASECLASS_BITPOS (type, i) / 8,
1014 TYPE_BASECLASS (type, i),
1015 looking_for_baseclass);
1016 if (v) return v;
1017 }
1018 return NULL;
1019 }
1020
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 search in it assuming it has (class) type TYPE.
1024 If found, return value, else return NULL. */
1025
1026 static value
1027 search_struct_method (name, arg1, args, offset, static_memfuncp, type)
1028 char *name;
1029 register value arg1, *args;
1030 int offset, *static_memfuncp;
1031 register struct type *type;
1032 {
1033 int i;
1034
1035 check_stub_type (type);
1036 for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
1037 {
1038 char *t_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
1039 if (t_field_name && !strcmp (t_field_name, name))
1040 {
1041 int j = TYPE_FN_FIELDLIST_LENGTH (type, i) - 1;
1042 struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
1043
1044 if (j > 0 && args == 0)
1045 error ("cannot resolve overloaded method `%s'", name);
1046 while (j >= 0)
1047 {
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))
1052 {
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 (f, j);
1058 }
1059 j--;
1060 }
1061 }
1062 }
1063
1064 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1065 {
1066 value v;
1067
1068 if (BASETYPE_VIA_VIRTUAL (type, i))
1069 {
1070 value v2;
1071 baseclass_addr (type, i, VALUE_CONTENTS (arg1) + offset,
1072 &v2, (int *)NULL);
1073 if (v2 == 0)
1074 error ("virtual baseclass botch");
1075 v = search_struct_method (name, v2, args, 0,
1076 static_memfuncp, TYPE_BASECLASS (type, i));
1077 if (v) return v;
1078 else continue;
1079 }
1080
1081 v = search_struct_method (name, arg1, args,
1082 TYPE_BASECLASS_BITPOS (type, i) / 8,
1083 static_memfuncp, TYPE_BASECLASS (type, i));
1084 if (v) return v;
1085 }
1086 return NULL;
1087 }
1088
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.
1093
1094 C++: ARGS is a list of argument types to aid in the selection of
1095 an appropriate method. Also, handle derived types.
1096
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.
1100
1101 ERR is an error message to be printed in case the field is not found. */
1102
1103 value
1104 value_struct_elt (argp, args, name, static_memfuncp, err)
1105 register value *argp, *args;
1106 char *name;
1107 int *static_memfuncp;
1108 char *err;
1109 {
1110 register struct type *t;
1111 value v;
1112
1113 COERCE_ARRAY (*argp);
1114
1115 t = VALUE_TYPE (*argp);
1116
1117 /* Follow pointers until we get to a non-pointer. */
1118
1119 while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
1120 {
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);
1126 }
1127
1128 if (TYPE_CODE (t) == TYPE_CODE_MEMBER)
1129 error ("not implemented: member type in value_struct_elt");
1130
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);
1134
1135 /* Assume it's not, unless we see that it is. */
1136 if (static_memfuncp)
1137 *static_memfuncp =0;
1138
1139 if (!args)
1140 {
1141 /* if there are no arguments ...do this... */
1142
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);
1146 if (v)
1147 return v;
1148
1149 /* C++: If it was not found as a data field, then try to
1150 return it as a pointer to a method. */
1151
1152 if (destructor_name_p (name, t))
1153 error ("Cannot get value of destructor");
1154
1155 v = search_struct_method (name, *argp, args, 0, static_memfuncp, t);
1156
1157 if (v == 0)
1158 {
1159 if (TYPE_NFN_FIELDS (t))
1160 error ("There is no member or method named %s.", name);
1161 else
1162 error ("There is no member named %s.", name);
1163 }
1164 return v;
1165 }
1166
1167 if (destructor_name_p (name, t))
1168 {
1169 if (!args[1])
1170 {
1171 /* destructors are a special case. */
1172 return (value)value_fn_field (TYPE_FN_FIELDLIST1 (t, 0),
1173 TYPE_FN_FIELDLIST_LENGTH (t, 0));
1174 }
1175 else
1176 {
1177 error ("destructor should not have any argument");
1178 }
1179 }
1180 else
1181 v = search_struct_method (name, *argp, args, 0, static_memfuncp, t);
1182
1183 if (v == 0)
1184 {
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);
1189 }
1190
1191 if (!v)
1192 error ("Structure has no component named %s.", name);
1193 return v;
1194 }
1195
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. */
1199 int
1200 destructor_name_p (name, type)
1201 char *name;
1202 struct type *type;
1203 {
1204 /* destructors are a special case. */
1205
1206 if (name[0] == '~')
1207 {
1208 char *dname = type_name_no_tag (type);
1209 if (strcmp (dname, name+1))
1210 error ("name of destructor must equal name of class");
1211 else
1212 return 1;
1213 }
1214 return 0;
1215 }
1216
1217 /* Helper function for check_field: Given TYPE, a structure/union,
1218 return 1 if the component named NAME from the ultimate
1219 target structure/union is defined, otherwise, return 0. */
1220
1221 static int
1222 check_field_in (type, name)
1223 register struct type *type;
1224 char *name;
1225 {
1226 register int i;
1227
1228 for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
1229 {
1230 char *t_field_name = TYPE_FIELD_NAME (type, i);
1231 if (t_field_name && !strcmp (t_field_name, name))
1232 return 1;
1233 }
1234
1235 /* C++: If it was not found as a data field, then try to
1236 return it as a pointer to a method. */
1237
1238 /* Destructors are a special case. */
1239 if (destructor_name_p (name, type))
1240 return 1;
1241
1242 for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; --i)
1243 {
1244 if (!strcmp (TYPE_FN_FIELDLIST_NAME (type, i), name))
1245 return 1;
1246 }
1247
1248 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1249 if (check_field_in (TYPE_BASECLASS (type, i), name))
1250 return 1;
1251
1252 return 0;
1253 }
1254
1255
1256 /* C++: Given ARG1, a value of type (pointer to a)* structure/union,
1257 return 1 if the component named NAME from the ultimate
1258 target structure/union is defined, otherwise, return 0. */
1259
1260 int
1261 check_field (arg1, name)
1262 register value arg1;
1263 char *name;
1264 {
1265 register struct type *t;
1266
1267 COERCE_ARRAY (arg1);
1268
1269 t = VALUE_TYPE (arg1);
1270
1271 /* Follow pointers until we get to a non-pointer. */
1272
1273 while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
1274 t = TYPE_TARGET_TYPE (t);
1275
1276 if (TYPE_CODE (t) == TYPE_CODE_MEMBER)
1277 error ("not implemented: member type in check_field");
1278
1279 if ( TYPE_CODE (t) != TYPE_CODE_STRUCT
1280 && TYPE_CODE (t) != TYPE_CODE_UNION)
1281 error ("Internal error: `this' is not an aggregate");
1282
1283 return check_field_in (t, name);
1284 }
1285
1286 /* C++: Given an aggregate type DOMAIN, and a member name NAME,
1287 return the address of this member as a "pointer to member"
1288 type. If INTYPE is non-null, then it will be the type
1289 of the member we are looking for. This will help us resolve
1290 "pointers to member functions". This function is only used
1291 to resolve user expressions of the form "&class::member". */
1292
1293 value
1294 value_struct_elt_for_address (domain, intype, name)
1295 struct type *domain, *intype;
1296 char *name;
1297 {
1298 register struct type *t = domain;
1299 register int i;
1300 value v;
1301
1302 struct type *baseclass;
1303
1304 if ( TYPE_CODE (t) != TYPE_CODE_STRUCT
1305 && TYPE_CODE (t) != TYPE_CODE_UNION)
1306 error ("Internal error: non-aggregate type to value_struct_elt_for_address");
1307
1308 baseclass = t;
1309
1310 while (t)
1311 {
1312 for (i = TYPE_NFIELDS (t) - 1; i >= TYPE_N_BASECLASSES (t); i--)
1313 {
1314 char *t_field_name = TYPE_FIELD_NAME (t, i);
1315
1316 if (t_field_name && !strcmp (t_field_name, name))
1317 {
1318 if (TYPE_FIELD_STATIC (t, i))
1319 {
1320 char *phys_name = TYPE_FIELD_STATIC_PHYSNAME (t, i);
1321 struct symbol *sym =
1322 lookup_symbol (phys_name, 0, VAR_NAMESPACE, 0, NULL);
1323 if (! sym)
1324 error (
1325 "Internal error: could not find physical static variable named %s",
1326 phys_name);
1327 return value_from_longest (
1328 lookup_pointer_type (TYPE_FIELD_TYPE (t, i)),
1329 (LONGEST)SYMBOL_BLOCK_VALUE (sym));
1330 }
1331 if (TYPE_FIELD_PACKED (t, i))
1332 error ("pointers to bitfield members not allowed");
1333
1334 return value_from_longest (
1335 lookup_pointer_type (
1336 lookup_member_type (TYPE_FIELD_TYPE (t, i), baseclass)),
1337 (LONGEST) (TYPE_FIELD_BITPOS (t, i) >> 3));
1338 }
1339 }
1340
1341 if (TYPE_N_BASECLASSES (t) == 0)
1342 break;
1343
1344 t = TYPE_BASECLASS (t, 0);
1345 }
1346
1347 /* C++: If it was not found as a data field, then try to
1348 return it as a pointer to a method. */
1349 t = baseclass;
1350
1351 /* Destructors are a special case. */
1352 if (destructor_name_p (name, t))
1353 {
1354 error ("member pointers to destructors not implemented yet");
1355 }
1356
1357 /* Perform all necessary dereferencing. */
1358 while (intype && TYPE_CODE (intype) == TYPE_CODE_PTR)
1359 intype = TYPE_TARGET_TYPE (intype);
1360
1361 while (t)
1362 {
1363 for (i = TYPE_NFN_FIELDS (t) - 1; i >= 0; --i)
1364 {
1365 if (!strcmp (TYPE_FN_FIELDLIST_NAME (t, i), name))
1366 {
1367 int j = TYPE_FN_FIELDLIST_LENGTH (t, i);
1368 struct fn_field *f = TYPE_FN_FIELDLIST1 (t, i);
1369
1370 if (intype == 0 && j > 1)
1371 error ("non-unique member `%s' requires type instantiation", name);
1372 if (intype)
1373 {
1374 while (j--)
1375 if (TYPE_FN_FIELD_TYPE (f, j) == intype)
1376 break;
1377 if (j < 0)
1378 error ("no member function matches that type instantiation");
1379 }
1380 else
1381 j = 0;
1382
1383 if (TYPE_FLAGS (TYPE_FN_FIELD_TYPE (f, j)) & TYPE_FLAG_STUB)
1384 check_stub_method (t, i, j);
1385 if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
1386 {
1387 return value_from_longest (
1388 lookup_pointer_type (
1389 lookup_member_type (TYPE_FN_FIELD_TYPE (f, j),
1390 baseclass)),
1391 (LONGEST) TYPE_FN_FIELD_VOFFSET (f, j));
1392 }
1393 else
1394 {
1395 struct symbol *s = lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
1396 0, VAR_NAMESPACE, 0, NULL);
1397 v = locate_var_value (s, 0);
1398 VALUE_TYPE (v) = lookup_pointer_type (
1399 lookup_member_type (TYPE_FN_FIELD_TYPE (f, j),
1400 baseclass));
1401 return v;
1402 }
1403 }
1404 }
1405
1406 if (TYPE_N_BASECLASSES (t) == 0)
1407 break;
1408
1409 t = TYPE_BASECLASS (t, 0);
1410 }
1411 return 0;
1412 }
1413
1414 /* Compare two argument lists and return the position in which they differ,
1415 or zero if equal.
1416
1417 STATICP is nonzero if the T1 argument list came from a
1418 static member function.
1419
1420 For non-static member functions, we ignore the first argument,
1421 which is the type of the instance variable. This is because we want
1422 to handle calls with objects from derived classes. This is not
1423 entirely correct: we should actually check to make sure that a
1424 requested operation is type secure, shouldn't we? FIXME. */
1425
1426 int
1427 typecmp (staticp, t1, t2)
1428 int staticp;
1429 struct type *t1[];
1430 value t2[];
1431 {
1432 int i;
1433
1434 if (t2 == 0)
1435 return 1;
1436 if (staticp && t1 == 0)
1437 return t2[1] != 0;
1438 if (t1 == 0)
1439 return 1;
1440 if (t1[0]->code == TYPE_CODE_VOID) return 0;
1441 if (t1[!staticp] == 0) return 0;
1442 for (i = !staticp; t1[i] && t1[i]->code != TYPE_CODE_VOID; i++)
1443 {
1444 if (! t2[i]
1445 || t1[i]->code != t2[i]->type->code
1446 /* Too pessimistic: || t1[i]->target_type != t2[i]->type->target_type */
1447 )
1448 return i+1;
1449 }
1450 if (!t1[i]) return 0;
1451 return t2[i] ? i+1 : 0;
1452 }
1453
1454 /* C++: return the value of the class instance variable, if one exists.
1455 Flag COMPLAIN signals an error if the request is made in an
1456 inappropriate context. */
1457 value
1458 value_of_this (complain)
1459 int complain;
1460 {
1461 extern FRAME selected_frame;
1462 struct symbol *func, *sym;
1463 struct block *b;
1464 int i;
1465 static const char funny_this[] = "this";
1466 value this;
1467
1468 if (selected_frame == 0)
1469 if (complain)
1470 error ("no frame selected");
1471 else return 0;
1472
1473 func = get_frame_function (selected_frame);
1474 if (!func)
1475 {
1476 if (complain)
1477 error ("no `this' in nameless context");
1478 else return 0;
1479 }
1480
1481 b = SYMBOL_BLOCK_VALUE (func);
1482 i = BLOCK_NSYMS (b);
1483 if (i <= 0)
1484 if (complain)
1485 error ("no args, no `this'");
1486 else return 0;
1487
1488 /* Calling lookup_block_symbol is necessary to get the LOC_REGISTER
1489 symbol instead of the LOC_ARG one (if both exist). */
1490 sym = lookup_block_symbol (b, funny_this, VAR_NAMESPACE);
1491 if (sym == NULL)
1492 {
1493 if (complain)
1494 error ("current stack frame not in method");
1495 else
1496 return NULL;
1497 }
1498
1499 this = read_var_value (sym, selected_frame);
1500 if (this == 0 && complain)
1501 error ("`this' argument at unknown address");
1502 return this;
1503 }