Remove nonexistent GO32 "native" support.
[deliverable/binutils-gdb.git] / gdb / valops.c
1 /* Perform non-arithmetic operations on values, for GDB.
2 Copyright 1986, 1987, 1989, 1991, 1992 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 "defs.h"
21 #include "symtab.h"
22 #include "gdbtypes.h"
23 #include "value.h"
24 #include "frame.h"
25 #include "inferior.h"
26 #include "gdbcore.h"
27 #include "target.h"
28 #include "demangle.h"
29
30 #include <errno.h>
31
32 /* Local functions. */
33
34 static CORE_ADDR
35 find_function_addr PARAMS ((value, struct type **));
36
37 static CORE_ADDR
38 value_push PARAMS ((CORE_ADDR, value));
39
40 static CORE_ADDR
41 value_arg_push PARAMS ((CORE_ADDR, value));
42
43 static value
44 search_struct_field PARAMS ((char *, value, int, struct type *, int));
45
46 static value
47 search_struct_method PARAMS ((char *, value *, value *, int, int *,
48 struct type *));
49
50 static int
51 check_field_in PARAMS ((struct type *, const char *));
52
53 \f
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. */
58
59 value
60 value_cast (type, arg2)
61 struct type *type;
62 register value arg2;
63 {
64 register enum type_code code1;
65 register enum type_code code2;
66 register int scalar;
67
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)
71 COERCE_ARRAY (arg2);
72
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);
77
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)))
84 {
85 if (code1 == TYPE_CODE_PTR && code2 == TYPE_CODE_PTR)
86 {
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 */
95 {
96 value v = search_struct_field (type_name_no_tag (t1),
97 value_ind (arg2), 0, t2, 1);
98 if (v)
99 {
100 v = value_addr (v);
101 VALUE_TYPE (v) = type;
102 return v;
103 }
104 }
105 /* No superclass found, just fall through to change ptr type. */
106 }
107 VALUE_TYPE (arg2) = type;
108 return arg2;
109 }
110 else if (VALUE_LVAL (arg2) == lval_memory)
111 {
112 return value_at_lazy (type, VALUE_ADDRESS (arg2) + VALUE_OFFSET (arg2));
113 }
114 else if (code1 == TYPE_CODE_VOID)
115 {
116 return value_zero (builtin_type_void, not_lval);
117 }
118 else
119 {
120 error ("Invalid cast.");
121 return 0;
122 }
123 }
124
125 /* Create a value of type TYPE that is zero, and return it. */
126
127 value
128 value_zero (type, lv)
129 struct type *type;
130 enum lval_type lv;
131 {
132 register value val = allocate_value (type);
133
134 memset (VALUE_CONTENTS (val), 0, TYPE_LENGTH (type));
135 VALUE_LVAL (val) = lv;
136
137 return val;
138 }
139
140 /* Return a value with type TYPE located at ADDR.
141
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. */
148
149 value
150 value_at (type, addr)
151 struct type *type;
152 CORE_ADDR addr;
153 {
154 register value val = allocate_value (type);
155
156 read_memory (addr, VALUE_CONTENTS_RAW (val), TYPE_LENGTH (type));
157
158 VALUE_LVAL (val) = lval_memory;
159 VALUE_ADDRESS (val) = addr;
160
161 return val;
162 }
163
164 /* Return a lazy value with type TYPE located at ADDR (cf. value_at). */
165
166 value
167 value_at_lazy (type, addr)
168 struct type *type;
169 CORE_ADDR addr;
170 {
171 register value val = allocate_value (type);
172
173 VALUE_LVAL (val) = lval_memory;
174 VALUE_ADDRESS (val) = addr;
175 VALUE_LAZY (val) = 1;
176
177 return val;
178 }
179
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.
184
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.
187
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
190 value is ignored. */
191
192 int
193 value_fetch_lazy (val)
194 register value val;
195 {
196 CORE_ADDR addr = VALUE_ADDRESS (val) + VALUE_OFFSET (val);
197
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;
202 return 0;
203 }
204
205
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. */
208
209 value
210 value_assign (toval, fromval)
211 register value toval, fromval;
212 {
213 register struct type *type = VALUE_TYPE (toval);
214 register value val;
215 char raw_buffer[MAX_REGISTER_RAW_SIZE];
216 char virtual_buffer[MAX_REGISTER_VIRTUAL_SIZE];
217 int use_buffer = 0;
218
219 COERCE_ARRAY (fromval);
220 COERCE_REF (toval);
221
222 if (VALUE_LVAL (toval) != lval_internalvar)
223 fromval = value_cast (type, fromval);
224
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. */
229
230 if (VALUE_REGNO (toval) >= 0
231 && REGISTER_CONVERTIBLE (VALUE_REGNO (toval)))
232 {
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);
240 }
241
242 switch (VALUE_LVAL (toval))
243 {
244 case lval_internalvar:
245 set_internalvar (VALUE_INTERNALVAR (toval), fromval);
246 break;
247
248 case lval_internalvar_component:
249 set_internalvar_component (VALUE_INTERNALVAR (toval),
250 VALUE_OFFSET (toval),
251 VALUE_BITPOS (toval),
252 VALUE_BITSIZE (toval),
253 fromval);
254 break;
255
256 case lval_memory:
257 if (VALUE_BITSIZE (toval))
258 {
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);
266 }
267 else if (use_buffer)
268 write_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
269 raw_buffer, use_buffer);
270 else
271 write_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
272 VALUE_CONTENTS (fromval), TYPE_LENGTH (type));
273 break;
274
275 case lval_register:
276 if (VALUE_BITSIZE (toval))
277 {
278 int v;
279
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);
286 }
287 else if (use_buffer)
288 write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
289 raw_buffer, use_buffer);
290 else
291 write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
292 VALUE_CONTENTS (fromval), TYPE_LENGTH (type));
293 break;
294
295 case lval_reg_frame_relative:
296 {
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;
304 int amount_copied;
305 char *buffer = (char *) alloca (amount_to_copy);
306 int regno;
307 FRAME frame;
308
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))
313 ;
314
315 if (!frame)
316 error ("Value being assigned to is no longer active.");
317
318 amount_to_copy += (reg_size - amount_to_copy % reg_size);
319
320 /* Copy it out. */
321 for ((regno = VALUE_FRAME_REGNUM (toval) + reg_offset,
322 amount_copied = 0);
323 amount_copied < amount_to_copy;
324 amount_copied += reg_size, regno++)
325 {
326 get_saved_register (buffer + amount_copied,
327 (int *)NULL, (CORE_ADDR *)NULL,
328 frame, regno, (enum lval_type *)NULL);
329 }
330
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));
336 else if (use_buffer)
337 memcpy (buffer + byte_offset, raw_buffer, use_buffer);
338 else
339 memcpy (buffer + byte_offset, VALUE_CONTENTS (fromval),
340 TYPE_LENGTH (type));
341
342 /* Copy it back. */
343 for ((regno = VALUE_FRAME_REGNUM (toval) + reg_offset,
344 amount_copied = 0);
345 amount_copied < amount_to_copy;
346 amount_copied += reg_size, regno++)
347 {
348 enum lval_type lval;
349 CORE_ADDR addr;
350 int optim;
351
352 /* Just find out where to put it. */
353 get_saved_register ((char *)NULL,
354 &optim, &addr, frame, regno, &lval);
355
356 if (optim)
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);
362 else
363 error ("Attempt to assign to an unmodifiable value.");
364 }
365 }
366 break;
367
368
369 default:
370 error ("Left side of = operation is not an lvalue.");
371 }
372
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). */
375
376 if (VALUE_LVAL (toval) == lval_internalvar
377 || VALUE_LVAL (toval) == lval_internalvar_component)
378 {
379 type = VALUE_TYPE (fromval);
380 }
381
382 val = allocate_value (type);
383 memcpy (val, toval, VALUE_CONTENTS_RAW (val) - (char *) val);
384 memcpy (VALUE_CONTENTS_RAW (val), VALUE_CONTENTS (fromval),
385 TYPE_LENGTH (type));
386 VALUE_TYPE (val) = type;
387
388 return val;
389 }
390
391 /* Extend a value VAL to COUNT repetitions of its type. */
392
393 value
394 value_repeat (arg1, count)
395 value arg1;
396 int count;
397 {
398 register value val;
399
400 if (VALUE_LVAL (arg1) != lval_memory)
401 error ("Only values in memory can be extended with '@'.");
402 if (count < 1)
403 error ("Invalid number %d of repetitions.", count);
404
405 val = allocate_repeat_value (VALUE_TYPE (arg1), count);
406
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);
412
413 return val;
414 }
415
416 value
417 value_of_variable (var)
418 struct symbol *var;
419 {
420 value val;
421
422 val = read_var_value (var, (FRAME) 0);
423 if (val == 0)
424 error ("Address of symbol \"%s\" is unknown.", SYMBOL_SOURCE_NAME (var));
425 return val;
426 }
427
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. */
431
432 value
433 value_coerce_array (arg1)
434 value arg1;
435 {
436 register struct type *type;
437
438 if (VALUE_LVAL (arg1) != lval_memory)
439 error ("Attempt to take address of value not located in memory.");
440
441 /* Get type of elements. */
442 if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_ARRAY)
443 type = TYPE_TARGET_TYPE (VALUE_TYPE (arg1));
444 else
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);
448
449 return value_from_longest (lookup_pointer_type (type),
450 (LONGEST) (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
451 }
452
453 /* Given a value which is a function, return a value which is a pointer
454 to it. */
455
456 value
457 value_coerce_function (arg1)
458 value arg1;
459 {
460
461 if (VALUE_LVAL (arg1) != lval_memory)
462 error ("Attempt to take address of value not located in memory.");
463
464 return value_from_longest (lookup_pointer_type (VALUE_TYPE (arg1)),
465 (LONGEST) (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
466 }
467
468 /* Return a pointer value for the object for which ARG1 is the contents. */
469
470 value
471 value_addr (arg1)
472 value arg1;
473 {
474 struct type *type = VALUE_TYPE (arg1);
475 if (TYPE_CODE (type) == TYPE_CODE_REF)
476 {
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));
482 return arg2;
483 }
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);
489
490 if (VALUE_LVAL (arg1) != lval_memory)
491 error ("Attempt to take address of value not located in memory.");
492
493 return value_from_longest (lookup_pointer_type (type),
494 (LONGEST) (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
495 }
496
497 /* Given a value of a pointer type, apply the C unary * operator to it. */
498
499 value
500 value_ind (arg1)
501 value arg1;
502 {
503 COERCE_ARRAY (arg1);
504
505 if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_MEMBER)
506 error ("not implemented: member types in value_ind");
507
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 */
520 }
521 \f
522 /* Pushing small parts of stack frames. */
523
524 /* Push one word (the size of object that a register holds). */
525
526 CORE_ADDR
527 push_word (sp, buffer)
528 CORE_ADDR sp;
529 REGISTER_TYPE buffer;
530 {
531 register int len = sizeof (REGISTER_TYPE);
532
533 SWAP_TARGET_AND_HOST (&buffer, len);
534 #if 1 INNER_THAN 2
535 sp -= len;
536 write_memory (sp, (char *)&buffer, len);
537 #else /* stack grows upward */
538 write_memory (sp, (char *)&buffer, len);
539 sp += len;
540 #endif /* stack grows upward */
541
542 return sp;
543 }
544
545 /* Push LEN bytes with data at BUFFER. */
546
547 CORE_ADDR
548 push_bytes (sp, buffer, len)
549 CORE_ADDR sp;
550 char *buffer;
551 int len;
552 {
553 #if 1 INNER_THAN 2
554 sp -= len;
555 write_memory (sp, buffer, len);
556 #else /* stack grows upward */
557 write_memory (sp, buffer, len);
558 sp += len;
559 #endif /* stack grows upward */
560
561 return sp;
562 }
563
564 /* Push onto the stack the specified value VALUE. */
565
566 static CORE_ADDR
567 value_push (sp, arg)
568 register CORE_ADDR sp;
569 value arg;
570 {
571 register int len = TYPE_LENGTH (VALUE_TYPE (arg));
572
573 #if 1 INNER_THAN 2
574 sp -= len;
575 write_memory (sp, VALUE_CONTENTS (arg), len);
576 #else /* stack grows upward */
577 write_memory (sp, VALUE_CONTENTS (arg), len);
578 sp += len;
579 #endif /* stack grows upward */
580
581 return sp;
582 }
583
584 /* Perform the standard coercions that are specified
585 for arguments to be passed to C functions. */
586
587 value
588 value_arg_coerce (arg)
589 value arg;
590 {
591 register struct type *type;
592
593 COERCE_ENUM (arg);
594
595 type = VALUE_TYPE (arg);
596
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);
600
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);
604
605 return arg;
606 }
607
608 /* Push the value ARG, first coercing it as an argument
609 to a C function. */
610
611 static CORE_ADDR
612 value_arg_push (sp, arg)
613 register CORE_ADDR sp;
614 value arg;
615 {
616 return value_push (sp, value_arg_coerce (arg));
617 }
618
619 /* Determine a function's address and its return type from its value.
620 Calls error() if the function is not valid for calling. */
621
622 static CORE_ADDR
623 find_function_addr (function, retval_type)
624 value function;
625 struct type **retval_type;
626 {
627 register struct type *ftype = VALUE_TYPE (function);
628 register enum type_code code = TYPE_CODE (ftype);
629 struct type *value_type;
630 CORE_ADDR funaddr;
631
632 /* If it's a member function, just look at the function
633 part of it. */
634
635 /* Determine address to call. */
636 if (code == TYPE_CODE_FUNC || code == TYPE_CODE_METHOD)
637 {
638 funaddr = VALUE_ADDRESS (function);
639 value_type = TYPE_TARGET_TYPE (ftype);
640 }
641 else if (code == TYPE_CODE_PTR)
642 {
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));
647 else
648 value_type = builtin_type_int;
649 }
650 else if (code == TYPE_CODE_INT)
651 {
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));
656 else
657 /* Handle integer used as address of a function. */
658 funaddr = (CORE_ADDR) value_as_long (function);
659
660 value_type = builtin_type_int;
661 }
662 else
663 error ("Invalid data type for function to be called.");
664
665 *retval_type = value_type;
666 return funaddr;
667 }
668
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. */
678
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. */
685
686 value
687 call_function_by_hand (function, nargs, args)
688 value function;
689 int nargs;
690 value *args;
691 {
692 register CORE_ADDR sp;
693 register int i;
694 CORE_ADDR start_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
697 FIX_CALL_DUMMY. */
698 static REGISTER_TYPE dummy[] = CALL_DUMMY;
699 REGISTER_TYPE dummy1[sizeof dummy / sizeof (REGISTER_TYPE)];
700 CORE_ADDR old_sp;
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;
706 CORE_ADDR funaddr;
707 int using_gcc;
708 CORE_ADDR real_pc;
709
710 if (!target_has_execution)
711 noprocess();
712
713 save_inferior_status (&inf_status, 1);
714 old_chain = make_cleanup (restore_inferior_status, &inf_status);
715
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. */
719 PUSH_DUMMY_FRAME;
720
721 old_sp = sp = read_register (SP_REGNUM);
722
723 #if 1 INNER_THAN 2 /* Stack grows down */
724 sp -= sizeof dummy;
725 start_sp = sp;
726 #else /* Stack grows up */
727 start_sp = sp;
728 sp += sizeof dummy;
729 #endif
730
731 funaddr = find_function_addr (function, &value_type);
732
733 {
734 struct block *b = block_for_pc (funaddr);
735 /* If compiled without -g, assume GCC. */
736 using_gcc = b == NULL || BLOCK_GCC_COMPILED (b);
737 }
738
739 /* Are we returning a value using a structure return or a normal
740 value return? */
741
742 struct_return = using_struct_return (function, funaddr, value_type,
743 using_gcc);
744
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));
750
751 #ifdef GDB_TARGET_IS_HPPA
752 FIX_CALL_DUMMY (dummy1, start_sp, real_pc, funaddr, nargs, args,
753 value_type, using_gcc);
754 #else
755 FIX_CALL_DUMMY (dummy1, start_sp, funaddr, nargs, args,
756 value_type, using_gcc);
757 real_pc = start_sp;
758 #endif
759
760 #if CALL_DUMMY_LOCATION == ON_STACK
761 write_memory (start_sp, (char *)dummy1, sizeof dummy);
762
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. */
767 {
768 extern CORE_ADDR text_end;
769 static checked = 0;
770 if (!checked)
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");
774 checked = 1;
775 sp = old_sp;
776 start_sp = text_end - sizeof dummy;
777 write_memory (start_sp, (char *)dummy1, sizeof dummy);
778 }
779 #else /* After text_end. */
780 {
781 extern CORE_ADDR text_end;
782 int errcode;
783 sp = old_sp;
784 start_sp = text_end;
785 errcode = target_write_memory (start_sp, (char *)dummy1, sizeof dummy);
786 if (errcode != 0)
787 error ("Cannot write text segment -- call_function failed");
788 }
789 #endif /* After text_end. */
790 #endif /* Not on stack. */
791
792 #ifdef lint
793 sp = old_sp; /* It really is used, for some ifdef's... */
794 #endif
795
796 #ifdef STACK_ALIGN
797 /* If stack grows down, we must leave a hole at the top. */
798 {
799 int len = 0;
800
801 /* Reserve space for the return structure to be written on the
802 stack, if necessary */
803
804 if (struct_return)
805 len += TYPE_LENGTH (value_type);
806
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;
811 #endif
812 #if 1 INNER_THAN 2
813 sp -= STACK_ALIGN (len) - len;
814 #else
815 sp += STACK_ALIGN (len) - len;
816 #endif
817 }
818 #endif /* STACK_ALIGN */
819
820 /* Reserve space for the return structure to be written on the
821 stack, if necessary */
822
823 if (struct_return)
824 {
825 #if 1 INNER_THAN 2
826 sp -= TYPE_LENGTH (value_type);
827 struct_addr = sp;
828 #else
829 struct_addr = sp;
830 sp += TYPE_LENGTH (value_type);
831 #endif
832 }
833
834 #if defined (REG_STRUCT_HAS_ADDR)
835 {
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)
841 {
842 CORE_ADDR addr;
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. */
846 addr = sp;
847 #endif
848 /* Push the structure. */
849 sp = value_push (sp, args[i]);
850 #if 1 INNER_THAN 2
851 /* The stack grows down, so the address of the thing we push
852 is the stack pointer after we push it. */
853 addr = sp;
854 #endif
855 /* The value we're going to pass is the address of the thing
856 we just pushed. */
857 args[i] = value_from_longest (lookup_pointer_type (value_type),
858 (LONGEST) addr);
859 }
860 }
861 #endif /* REG_STRUCT_HAS_ADDR. */
862
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 */
869
870 #ifdef CALL_DUMMY_STACK_ADJUST
871 #if 1 INNER_THAN 2
872 sp -= CALL_DUMMY_STACK_ADJUST;
873 #else
874 sp += CALL_DUMMY_STACK_ADJUST;
875 #endif
876 #endif /* CALL_DUMMY_STACK_ADJUST */
877
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.
883
884 Also note that on some machines (like the sparc) pcc uses a
885 convention like gcc's. */
886
887 if (struct_return)
888 STORE_STRUCT_RETURN (struct_addr, sp);
889
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);
895
896 /* Figure out the value returned by the function. */
897 {
898 char retbuf[REGISTER_BYTES];
899
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);
904
905 do_cleanups (old_chain);
906
907 return value_being_returned (value_type, retbuf, struct_return);
908 }
909 }
910 #else /* no CALL_DUMMY. */
911 value
912 call_function_by_hand (function, nargs, args)
913 value function;
914 int nargs;
915 value *args;
916 {
917 error ("Cannot invoke functions on this machine.");
918 }
919 #endif /* no CALL_DUMMY. */
920 \f
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. */
927
928 value
929 value_string (ptr, len)
930 char *ptr;
931 int len;
932 {
933 register value val;
934 register struct symbol *sym;
935 value blocklen;
936
937 /* Find the address of malloc in the inferior. */
938
939 sym = lookup_symbol ("malloc", 0, VAR_NAMESPACE, 0, NULL);
940 if (sym != NULL)
941 {
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);
945 }
946 else
947 {
948 struct minimal_symbol *msymbol;
949 msymbol = lookup_minimal_symbol ("malloc", (struct objfile *) NULL);
950 if (msymbol != NULL)
951 val =
952 value_from_longest (lookup_pointer_type (lookup_function_type (
953 lookup_pointer_type (builtin_type_char))),
954 (LONGEST) SYMBOL_VALUE_ADDRESS (msymbol));
955 else
956 error ("String constants require the program to have a function \"malloc\".");
957 }
958
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);
965 return val;
966 }
967 \f
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.
972
973 If LOOKING_FOR_BASECLASS, then instead of looking for struct fields,
974 look for a baseclass named NAME. */
975
976 static value
977 search_struct_field (name, arg1, offset, type, looking_for_baseclass)
978 char *name;
979 register value arg1;
980 int offset;
981 register struct type *type;
982 int looking_for_baseclass;
983 {
984 int i;
985
986 check_stub_type (type);
987
988 if (! looking_for_baseclass)
989 for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
990 {
991 char *t_field_name = TYPE_FIELD_NAME (type, i);
992
993 if (t_field_name && STREQ (t_field_name, name))
994 {
995 value v;
996 if (TYPE_FIELD_STATIC (type, i))
997 {
998 char *phys_name = TYPE_FIELD_STATIC_PHYSNAME (type, i);
999 struct symbol *sym =
1000 lookup_symbol (phys_name, 0, VAR_NAMESPACE, 0, NULL);
1001 if (sym == NULL)
1002 error ("Internal error: could not find physical static variable named %s",
1003 phys_name);
1004 v = value_at (TYPE_FIELD_TYPE (type, i),
1005 (CORE_ADDR)SYMBOL_BLOCK_VALUE (sym));
1006 }
1007 else
1008 v = value_primitive_field (arg1, offset, i, type);
1009 if (v == 0)
1010 error("there is no field named %s", name);
1011 return v;
1012 }
1013 }
1014
1015 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1016 {
1017 value v;
1018 /* If we are looking for baseclasses, this is what we get when we
1019 hit them. */
1020 int found_baseclass = (looking_for_baseclass
1021 && STREQ (name, TYPE_BASECLASS_NAME (type, i)));
1022
1023 if (BASETYPE_VIA_VIRTUAL (type, i))
1024 {
1025 value v2;
1026 /* Fix to use baseclass_offset instead. FIXME */
1027 baseclass_addr (type, i, VALUE_CONTENTS (arg1) + offset,
1028 &v2, (int *)NULL);
1029 if (v2 == 0)
1030 error ("virtual baseclass botch");
1031 if (found_baseclass)
1032 return v2;
1033 v = search_struct_field (name, v2, 0, TYPE_BASECLASS (type, i),
1034 looking_for_baseclass);
1035 }
1036 else if (found_baseclass)
1037 v = value_primitive_field (arg1, offset, i, type);
1038 else
1039 v = search_struct_field (name, arg1,
1040 offset + TYPE_BASECLASS_BITPOS (type, i) / 8,
1041 TYPE_BASECLASS (type, i),
1042 looking_for_baseclass);
1043 if (v) return v;
1044 }
1045 return NULL;
1046 }
1047
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. */
1052
1053 static value
1054 search_struct_method (name, arg1p, args, offset, static_memfuncp, type)
1055 char *name;
1056 register value *arg1p, *args;
1057 int offset, *static_memfuncp;
1058 register struct type *type;
1059 {
1060 int i;
1061
1062 check_stub_type (type);
1063 for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
1064 {
1065 char *t_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
1066 if (t_field_name && STREQ (t_field_name, name))
1067 {
1068 int j = TYPE_FN_FIELDLIST_LENGTH (type, i) - 1;
1069 struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
1070
1071 if (j > 0 && args == 0)
1072 error ("cannot resolve overloaded method `%s'", name);
1073 while (j >= 0)
1074 {
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))
1079 {
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);
1085 }
1086 j--;
1087 }
1088 }
1089 }
1090
1091 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1092 {
1093 value v;
1094 int base_offset;
1095
1096 if (BASETYPE_VIA_VIRTUAL (type, i))
1097 {
1098 base_offset = baseclass_offset (type, i, *arg1p, offset);
1099 if (base_offset == -1)
1100 error ("virtual baseclass botch");
1101 }
1102 else
1103 {
1104 base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
1105 }
1106 v = search_struct_method (name, arg1p, args, base_offset + offset,
1107 static_memfuncp, TYPE_BASECLASS (type, i));
1108 if (v)
1109 {
1110 /* FIXME-bothner: Why is this commented out? Why is it here? */
1111 /* *arg1p = arg1_tmp;*/
1112 return v;
1113 }
1114 }
1115 return NULL;
1116 }
1117
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.
1122
1123 C++: ARGS is a list of argument types to aid in the selection of
1124 an appropriate method. Also, handle derived types.
1125
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.
1129
1130 ERR is an error message to be printed in case the field is not found. */
1131
1132 value
1133 value_struct_elt (argp, args, name, static_memfuncp, err)
1134 register value *argp, *args;
1135 char *name;
1136 int *static_memfuncp;
1137 char *err;
1138 {
1139 register struct type *t;
1140 value v;
1141
1142 COERCE_ARRAY (*argp);
1143
1144 t = VALUE_TYPE (*argp);
1145
1146 /* Follow pointers until we get to a non-pointer. */
1147
1148 while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
1149 {
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);
1155 }
1156
1157 if (TYPE_CODE (t) == TYPE_CODE_MEMBER)
1158 error ("not implemented: member type in value_struct_elt");
1159
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);
1163
1164 /* Assume it's not, unless we see that it is. */
1165 if (static_memfuncp)
1166 *static_memfuncp =0;
1167
1168 if (!args)
1169 {
1170 /* if there are no arguments ...do this... */
1171
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);
1175 if (v)
1176 return v;
1177
1178 /* C++: If it was not found as a data field, then try to
1179 return it as a pointer to a method. */
1180
1181 if (destructor_name_p (name, t))
1182 error ("Cannot get value of destructor");
1183
1184 v = search_struct_method (name, argp, args, 0, static_memfuncp, t);
1185
1186 if (v == 0)
1187 {
1188 if (TYPE_NFN_FIELDS (t))
1189 error ("There is no member or method named %s.", name);
1190 else
1191 error ("There is no member named %s.", name);
1192 }
1193 return v;
1194 }
1195
1196 if (destructor_name_p (name, t))
1197 {
1198 if (!args[1])
1199 {
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),
1203 0, 0);
1204 }
1205 else
1206 {
1207 error ("destructor should not have any argument");
1208 }
1209 }
1210 else
1211 v = search_struct_method (name, argp, args, 0, static_memfuncp, t);
1212
1213 if (v == 0)
1214 {
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);
1219 }
1220
1221 if (!v)
1222 error ("Structure has no component named %s.", name);
1223 return v;
1224 }
1225
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. */
1229 int
1230 destructor_name_p (name, type)
1231 const char *name;
1232 const struct type *type;
1233 {
1234 /* destructors are a special case. */
1235
1236 if (name[0] == '~')
1237 {
1238 char *dname = type_name_no_tag (type);
1239 if (!STREQ (dname, name+1))
1240 error ("name of destructor must equal name of class");
1241 else
1242 return 1;
1243 }
1244 return 0;
1245 }
1246
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. */
1250
1251 static int
1252 check_field_in (type, name)
1253 register struct type *type;
1254 const char *name;
1255 {
1256 register int i;
1257
1258 for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
1259 {
1260 char *t_field_name = TYPE_FIELD_NAME (type, i);
1261 if (t_field_name && STREQ (t_field_name, name))
1262 return 1;
1263 }
1264
1265 /* C++: If it was not found as a data field, then try to
1266 return it as a pointer to a method. */
1267
1268 /* Destructors are a special case. */
1269 if (destructor_name_p (name, type))
1270 return 1;
1271
1272 for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; --i)
1273 {
1274 if (STREQ (TYPE_FN_FIELDLIST_NAME (type, i), name))
1275 return 1;
1276 }
1277
1278 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1279 if (check_field_in (TYPE_BASECLASS (type, i), name))
1280 return 1;
1281
1282 return 0;
1283 }
1284
1285
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. */
1289
1290 int
1291 check_field (arg1, name)
1292 register value arg1;
1293 const char *name;
1294 {
1295 register struct type *t;
1296
1297 COERCE_ARRAY (arg1);
1298
1299 t = VALUE_TYPE (arg1);
1300
1301 /* Follow pointers until we get to a non-pointer. */
1302
1303 while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
1304 t = TYPE_TARGET_TYPE (t);
1305
1306 if (TYPE_CODE (t) == TYPE_CODE_MEMBER)
1307 error ("not implemented: member type in check_field");
1308
1309 if ( TYPE_CODE (t) != TYPE_CODE_STRUCT
1310 && TYPE_CODE (t) != TYPE_CODE_UNION)
1311 error ("Internal error: `this' is not an aggregate");
1312
1313 return check_field_in (t, name);
1314 }
1315
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". */
1322
1323 value
1324 value_struct_elt_for_reference (domain, offset, curtype, name, intype)
1325 struct type *domain, *curtype, *intype;
1326 int offset;
1327 char *name;
1328 {
1329 register struct type *t = curtype;
1330 register int i;
1331 value v;
1332
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");
1336
1337 for (i = TYPE_NFIELDS (t) - 1; i >= TYPE_N_BASECLASSES (t); i--)
1338 {
1339 char *t_field_name = TYPE_FIELD_NAME (t, i);
1340
1341 if (t_field_name && STREQ (t_field_name, name))
1342 {
1343 if (TYPE_FIELD_STATIC (t, i))
1344 {
1345 char *phys_name = TYPE_FIELD_STATIC_PHYSNAME (t, i);
1346 struct symbol *sym =
1347 lookup_symbol (phys_name, 0, VAR_NAMESPACE, 0, NULL);
1348 if (sym == NULL)
1349 error ("Internal error: could not find physical static variable named %s",
1350 phys_name);
1351 return value_at (SYMBOL_TYPE (sym),
1352 (CORE_ADDR)SYMBOL_BLOCK_VALUE (sym));
1353 }
1354 if (TYPE_FIELD_PACKED (t, i))
1355 error ("pointers to bitfield members not allowed");
1356
1357 return value_from_longest
1358 (lookup_reference_type (lookup_member_type (TYPE_FIELD_TYPE (t, i),
1359 domain)),
1360 offset + (LONGEST) (TYPE_FIELD_BITPOS (t, i) >> 3));
1361 }
1362 }
1363
1364 /* C++: If it was not found as a data field, then try to
1365 return it as a pointer to a method. */
1366
1367 /* Destructors are a special case. */
1368 if (destructor_name_p (name, t))
1369 {
1370 error ("member pointers to destructors not implemented yet");
1371 }
1372
1373 /* Perform all necessary dereferencing. */
1374 while (intype && TYPE_CODE (intype) == TYPE_CODE_PTR)
1375 intype = TYPE_TARGET_TYPE (intype);
1376
1377 for (i = TYPE_NFN_FIELDS (t) - 1; i >= 0; --i)
1378 {
1379 if (STREQ (TYPE_FN_FIELDLIST_NAME (t, i), name))
1380 {
1381 int j = TYPE_FN_FIELDLIST_LENGTH (t, i);
1382 struct fn_field *f = TYPE_FN_FIELDLIST1 (t, i);
1383
1384 if (intype == 0 && j > 1)
1385 error ("non-unique member `%s' requires type instantiation", name);
1386 if (intype)
1387 {
1388 while (j--)
1389 if (TYPE_FN_FIELD_TYPE (f, j) == intype)
1390 break;
1391 if (j < 0)
1392 error ("no member function matches that type instantiation");
1393 }
1394 else
1395 j = 0;
1396
1397 if (TYPE_FN_FIELD_STUB (f, j))
1398 check_stub_method (t, i, j);
1399 if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
1400 {
1401 return value_from_longest
1402 (lookup_reference_type
1403 (lookup_member_type (TYPE_FN_FIELD_TYPE (f, j),
1404 domain)),
1405 (LONGEST) METHOD_PTR_FROM_VOFFSET
1406 (TYPE_FN_FIELD_VOFFSET (f, j)));
1407 }
1408 else
1409 {
1410 struct symbol *s = lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
1411 0, VAR_NAMESPACE, 0, NULL);
1412 if (s == NULL)
1413 {
1414 v = 0;
1415 }
1416 else
1417 {
1418 v = read_var_value (s, 0);
1419 #if 0
1420 VALUE_TYPE (v) = lookup_reference_type
1421 (lookup_member_type (TYPE_FN_FIELD_TYPE (f, j),
1422 domain));
1423 #endif
1424 }
1425 return v;
1426 }
1427 }
1428 }
1429 for (i = TYPE_N_BASECLASSES (t) - 1; i >= 0; i--)
1430 {
1431 value v;
1432 int base_offset;
1433
1434 if (BASETYPE_VIA_VIRTUAL (t, i))
1435 base_offset = 0;
1436 else
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),
1441 name,
1442 intype);
1443 if (v)
1444 return v;
1445 }
1446 return 0;
1447 }
1448
1449 /* Compare two argument lists and return the position in which they differ,
1450 or zero if equal.
1451
1452 STATICP is nonzero if the T1 argument list came from a
1453 static member function.
1454
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. */
1460
1461 int
1462 typecmp (staticp, t1, t2)
1463 int staticp;
1464 struct type *t1[];
1465 value t2[];
1466 {
1467 int i;
1468
1469 if (t2 == 0)
1470 return 1;
1471 if (staticp && t1 == 0)
1472 return t2[1] != 0;
1473 if (t1 == 0)
1474 return 1;
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++)
1478 {
1479 if (! t2[i]
1480 || t1[i]->code != t2[i]->type->code
1481 /* Too pessimistic: || t1[i]->target_type != t2[i]->type->target_type */
1482 )
1483 return i+1;
1484 }
1485 if (!t1[i]) return 0;
1486 return t2[i] ? i+1 : 0;
1487 }
1488
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. */
1492 value
1493 value_of_this (complain)
1494 int complain;
1495 {
1496 extern FRAME selected_frame;
1497 struct symbol *func, *sym;
1498 struct block *b;
1499 int i;
1500 static const char funny_this[] = "this";
1501 value this;
1502
1503 if (selected_frame == 0)
1504 if (complain)
1505 error ("no frame selected");
1506 else return 0;
1507
1508 func = get_frame_function (selected_frame);
1509 if (!func)
1510 {
1511 if (complain)
1512 error ("no `this' in nameless context");
1513 else return 0;
1514 }
1515
1516 b = SYMBOL_BLOCK_VALUE (func);
1517 i = BLOCK_NSYMS (b);
1518 if (i <= 0)
1519 if (complain)
1520 error ("no args, no `this'");
1521 else return 0;
1522
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);
1526 if (sym == NULL)
1527 {
1528 if (complain)
1529 error ("current stack frame not in method");
1530 else
1531 return NULL;
1532 }
1533
1534 this = read_var_value (sym, selected_frame);
1535 if (this == 0 && complain)
1536 error ("`this' argument at unknown address");
1537 return this;
1538 }
This page took 0.06093 seconds and 4 git commands to generate.