* valops.c (value_arg_coerce): Now takes param_type argument.
[binutils-gdb.git] / gdb / valops.c
1 /* Perform non-arithmetic operations on values, for GDB.
2 Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1994
3 Free Software Foundation, Inc.
4
5 This file is part of GDB.
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
20
21 #include "defs.h"
22 #include "symtab.h"
23 #include "gdbtypes.h"
24 #include "value.h"
25 #include "frame.h"
26 #include "inferior.h"
27 #include "gdbcore.h"
28 #include "target.h"
29 #include "demangle.h"
30 #include "language.h"
31
32 #include <errno.h>
33 #include <string.h>
34
35 /* Local functions. */
36
37 static int typecmp PARAMS ((int staticp, struct type *t1[], value_ptr t2[]));
38
39 static CORE_ADDR find_function_addr PARAMS ((value_ptr, struct type **));
40
41 static CORE_ADDR value_push PARAMS ((CORE_ADDR, value_ptr));
42
43 static value_ptr search_struct_field PARAMS ((char *, value_ptr, int,
44 struct type *, int));
45
46 static value_ptr search_struct_method PARAMS ((char *, value_ptr *,
47 value_ptr *,
48 int, int *, struct type *));
49
50 static int check_field_in PARAMS ((struct type *, const char *));
51
52 static CORE_ADDR allocate_space_in_inferior PARAMS ((int));
53
54 static value_ptr cast_into_complex PARAMS ((struct type *, value_ptr));
55
56 #define VALUE_SUBSTRING_START(VAL) VALUE_FRAME(VAL)
57
58 \f
59 /* Allocate NBYTES of space in the inferior using the inferior's malloc
60 and return a value that is a pointer to the allocated space. */
61
62 static CORE_ADDR
63 allocate_space_in_inferior (len)
64 int len;
65 {
66 register value_ptr val;
67 register struct symbol *sym;
68 struct minimal_symbol *msymbol;
69 struct type *type;
70 value_ptr blocklen;
71 LONGEST maddr;
72
73 /* Find the address of malloc in the inferior. */
74
75 sym = lookup_symbol ("malloc", 0, VAR_NAMESPACE, 0, NULL);
76 if (sym != NULL)
77 {
78 if (SYMBOL_CLASS (sym) != LOC_BLOCK)
79 {
80 error ("\"malloc\" exists in this program but is not a function.");
81 }
82 val = value_of_variable (sym, NULL);
83 }
84 else
85 {
86 msymbol = lookup_minimal_symbol ("malloc", NULL, NULL);
87 if (msymbol != NULL)
88 {
89 type = lookup_pointer_type (builtin_type_char);
90 type = lookup_function_type (type);
91 type = lookup_pointer_type (type);
92 maddr = (LONGEST) SYMBOL_VALUE_ADDRESS (msymbol);
93 val = value_from_longest (type, maddr);
94 }
95 else
96 {
97 error ("evaluation of this expression requires the program to have a function \"malloc\".");
98 }
99 }
100
101 blocklen = value_from_longest (builtin_type_int, (LONGEST) len);
102 val = call_function_by_hand (val, 1, &blocklen);
103 if (value_logical_not (val))
104 {
105 error ("No memory available to program.");
106 }
107 return (value_as_long (val));
108 }
109
110 /* Cast value ARG2 to type TYPE and return as a value.
111 More general than a C cast: accepts any two types of the same length,
112 and if ARG2 is an lvalue it can be cast into anything at all. */
113 /* In C++, casts may change pointer or object representations. */
114
115 value_ptr
116 value_cast (type, arg2)
117 struct type *type;
118 register value_ptr arg2;
119 {
120 register enum type_code code1;
121 register enum type_code code2;
122 register int scalar;
123
124 if (VALUE_TYPE (arg2) == type)
125 return arg2;
126
127 /* Coerce arrays but not enums. Enums will work as-is
128 and coercing them would cause an infinite recursion. */
129 if (TYPE_CODE (VALUE_TYPE (arg2)) != TYPE_CODE_ENUM)
130 COERCE_ARRAY (arg2);
131
132 COERCE_VARYING_ARRAY (arg2);
133
134 code1 = TYPE_CODE (type);
135 code2 = TYPE_CODE (VALUE_TYPE (arg2));
136
137 if (code1 == TYPE_CODE_COMPLEX)
138 return cast_into_complex (type, arg2);
139 if (code1 == TYPE_CODE_BOOL)
140 code1 = TYPE_CODE_INT;
141 if (code2 == TYPE_CODE_BOOL)
142 code2 = TYPE_CODE_INT;
143
144 scalar = (code2 == TYPE_CODE_INT || code2 == TYPE_CODE_FLT
145 || code2 == TYPE_CODE_ENUM || code2 == TYPE_CODE_RANGE);
146
147 if ( code1 == TYPE_CODE_STRUCT
148 && code2 == TYPE_CODE_STRUCT
149 && TYPE_NAME (type) != 0)
150 {
151 /* Look in the type of the source to see if it contains the
152 type of the target as a superclass. If so, we'll need to
153 offset the object in addition to changing its type. */
154 value_ptr v = search_struct_field (type_name_no_tag (type),
155 arg2, 0, VALUE_TYPE (arg2), 1);
156 if (v)
157 {
158 VALUE_TYPE (v) = type;
159 return v;
160 }
161 }
162 if (code1 == TYPE_CODE_FLT && scalar)
163 return value_from_double (type, value_as_double (arg2));
164 else if ((code1 == TYPE_CODE_INT || code1 == TYPE_CODE_ENUM
165 || code1 == TYPE_CODE_RANGE)
166 && (scalar || code2 == TYPE_CODE_PTR))
167 return value_from_longest (type, value_as_long (arg2));
168 else if (TYPE_LENGTH (type) == TYPE_LENGTH (VALUE_TYPE (arg2)))
169 {
170 if (code1 == TYPE_CODE_PTR && code2 == TYPE_CODE_PTR)
171 {
172 /* Look in the type of the source to see if it contains the
173 type of the target as a superclass. If so, we'll need to
174 offset the pointer rather than just change its type. */
175 struct type *t1 = TYPE_TARGET_TYPE (type);
176 struct type *t2 = TYPE_TARGET_TYPE (VALUE_TYPE (arg2));
177 if ( TYPE_CODE (t1) == TYPE_CODE_STRUCT
178 && TYPE_CODE (t2) == TYPE_CODE_STRUCT
179 && TYPE_NAME (t1) != 0) /* if name unknown, can't have supercl */
180 {
181 value_ptr v = search_struct_field (type_name_no_tag (t1),
182 value_ind (arg2), 0, t2, 1);
183 if (v)
184 {
185 v = value_addr (v);
186 VALUE_TYPE (v) = type;
187 return v;
188 }
189 }
190 /* No superclass found, just fall through to change ptr type. */
191 }
192 VALUE_TYPE (arg2) = type;
193 return arg2;
194 }
195 else if (chill_varying_type (type))
196 {
197 struct type *range1, *range2, *eltype1, *eltype2;
198 value_ptr val;
199 int count1, count2;
200 char *valaddr, *valaddr_data;
201 if (code2 == TYPE_CODE_BITSTRING)
202 error ("not implemented: converting bitstring to varying type");
203 if ((code2 != TYPE_CODE_ARRAY && code2 != TYPE_CODE_STRING)
204 || (eltype1 = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, 1)),
205 eltype2 = TYPE_TARGET_TYPE (VALUE_TYPE (arg2)),
206 (TYPE_LENGTH (eltype1) != TYPE_LENGTH (eltype2)
207 /* || TYPE_CODE (eltype1) != TYPE_CODE (eltype2) */ )))
208 error ("Invalid conversion to varying type");
209 range1 = TYPE_FIELD_TYPE (TYPE_FIELD_TYPE (type, 1), 0);
210 range2 = TYPE_FIELD_TYPE (VALUE_TYPE (arg2), 0);
211 count1 = TYPE_HIGH_BOUND (range1) - TYPE_LOW_BOUND (range1) + 1;
212 count2 = TYPE_HIGH_BOUND (range2) - TYPE_LOW_BOUND (range2) + 1;
213 if (count2 > count1)
214 error ("target varying type is too small");
215 val = allocate_value (type);
216 valaddr = VALUE_CONTENTS_RAW (val);
217 valaddr_data = valaddr + TYPE_FIELD_BITPOS (type, 1) / 8;
218 /* Set val's __var_length field to count2. */
219 store_signed_integer (valaddr, TYPE_LENGTH (TYPE_FIELD_TYPE (type, 0)),
220 count2);
221 /* Set the __var_data field to count2 elements copied from arg2. */
222 memcpy (valaddr_data, VALUE_CONTENTS (arg2),
223 count2 * TYPE_LENGTH (eltype2));
224 /* Zero the rest of the __var_data field of val. */
225 memset (valaddr_data + count2 * TYPE_LENGTH (eltype2), '\0',
226 (count1 - count2) * TYPE_LENGTH (eltype2));
227 return val;
228 }
229 else if (VALUE_LVAL (arg2) == lval_memory)
230 {
231 return value_at_lazy (type, VALUE_ADDRESS (arg2) + VALUE_OFFSET (arg2));
232 }
233 else if (code1 == TYPE_CODE_VOID)
234 {
235 return value_zero (builtin_type_void, not_lval);
236 }
237 else
238 {
239 error ("Invalid cast.");
240 return 0;
241 }
242 }
243
244 /* Create a value of type TYPE that is zero, and return it. */
245
246 value_ptr
247 value_zero (type, lv)
248 struct type *type;
249 enum lval_type lv;
250 {
251 register value_ptr val = allocate_value (type);
252
253 memset (VALUE_CONTENTS (val), 0, TYPE_LENGTH (type));
254 VALUE_LVAL (val) = lv;
255
256 return val;
257 }
258
259 /* Return a value with type TYPE located at ADDR.
260
261 Call value_at only if the data needs to be fetched immediately;
262 if we can be 'lazy' and defer the fetch, perhaps indefinately, call
263 value_at_lazy instead. value_at_lazy simply records the address of
264 the data and sets the lazy-evaluation-required flag. The lazy flag
265 is tested in the VALUE_CONTENTS macro, which is used if and when
266 the contents are actually required. */
267
268 value_ptr
269 value_at (type, addr)
270 struct type *type;
271 CORE_ADDR addr;
272 {
273 register value_ptr val;
274
275 if (TYPE_CODE (type) == TYPE_CODE_VOID)
276 error ("Attempt to dereference a generic pointer.");
277
278 val = allocate_value (type);
279
280 read_memory (addr, VALUE_CONTENTS_RAW (val), TYPE_LENGTH (type));
281
282 VALUE_LVAL (val) = lval_memory;
283 VALUE_ADDRESS (val) = addr;
284
285 return val;
286 }
287
288 /* Return a lazy value with type TYPE located at ADDR (cf. value_at). */
289
290 value_ptr
291 value_at_lazy (type, addr)
292 struct type *type;
293 CORE_ADDR addr;
294 {
295 register value_ptr val;
296
297 if (TYPE_CODE (type) == TYPE_CODE_VOID)
298 error ("Attempt to dereference a generic pointer.");
299
300 val = allocate_value (type);
301
302 VALUE_LVAL (val) = lval_memory;
303 VALUE_ADDRESS (val) = addr;
304 VALUE_LAZY (val) = 1;
305
306 return val;
307 }
308
309 /* Called only from the VALUE_CONTENTS macro, if the current data for
310 a variable needs to be loaded into VALUE_CONTENTS(VAL). Fetches the
311 data from the user's process, and clears the lazy flag to indicate
312 that the data in the buffer is valid.
313
314 If the value is zero-length, we avoid calling read_memory, which would
315 abort. We mark the value as fetched anyway -- all 0 bytes of it.
316
317 This function returns a value because it is used in the VALUE_CONTENTS
318 macro as part of an expression, where a void would not work. The
319 value is ignored. */
320
321 int
322 value_fetch_lazy (val)
323 register value_ptr val;
324 {
325 CORE_ADDR addr = VALUE_ADDRESS (val) + VALUE_OFFSET (val);
326
327 if (TYPE_LENGTH (VALUE_TYPE (val)))
328 read_memory (addr, VALUE_CONTENTS_RAW (val),
329 TYPE_LENGTH (VALUE_TYPE (val)));
330 VALUE_LAZY (val) = 0;
331 return 0;
332 }
333
334
335 /* Store the contents of FROMVAL into the location of TOVAL.
336 Return a new value with the location of TOVAL and contents of FROMVAL. */
337
338 value_ptr
339 value_assign (toval, fromval)
340 register value_ptr toval, fromval;
341 {
342 register struct type *type;
343 register value_ptr val;
344 char raw_buffer[MAX_REGISTER_RAW_SIZE];
345 int use_buffer = 0;
346
347 if (!toval->modifiable)
348 error ("Left operand of assignment is not a modifiable lvalue.");
349
350 COERCE_ARRAY (fromval);
351 COERCE_REF (toval);
352
353 type = VALUE_TYPE (toval);
354 if (VALUE_LVAL (toval) != lval_internalvar)
355 fromval = value_cast (type, fromval);
356
357 /* If TOVAL is a special machine register requiring conversion
358 of program values to a special raw format,
359 convert FROMVAL's contents now, with result in `raw_buffer',
360 and set USE_BUFFER to the number of bytes to write. */
361
362 #ifdef REGISTER_CONVERTIBLE
363 if (VALUE_REGNO (toval) >= 0
364 && REGISTER_CONVERTIBLE (VALUE_REGNO (toval)))
365 {
366 int regno = VALUE_REGNO (toval);
367 if (REGISTER_CONVERTIBLE (regno))
368 {
369 REGISTER_CONVERT_TO_RAW (VALUE_TYPE (fromval), regno,
370 VALUE_CONTENTS (fromval), raw_buffer);
371 use_buffer = REGISTER_RAW_SIZE (regno);
372 }
373 }
374 #endif
375
376 switch (VALUE_LVAL (toval))
377 {
378 case lval_internalvar:
379 set_internalvar (VALUE_INTERNALVAR (toval), fromval);
380 break;
381
382 case lval_internalvar_component:
383 set_internalvar_component (VALUE_INTERNALVAR (toval),
384 VALUE_OFFSET (toval),
385 VALUE_BITPOS (toval),
386 VALUE_BITSIZE (toval),
387 fromval);
388 break;
389
390 case lval_memory:
391 if (VALUE_BITSIZE (toval))
392 {
393 char buffer[sizeof (LONGEST)];
394 /* We assume that the argument to read_memory is in units of
395 host chars. FIXME: Is that correct? */
396 int len = (VALUE_BITPOS (toval)
397 + VALUE_BITSIZE (toval)
398 + HOST_CHAR_BIT - 1)
399 / HOST_CHAR_BIT;
400
401 if (len > sizeof (LONGEST))
402 error ("Can't handle bitfields which don't fit in a %d bit word.",
403 sizeof (LONGEST) * HOST_CHAR_BIT);
404
405 read_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
406 buffer, len);
407 modify_field (buffer, value_as_long (fromval),
408 VALUE_BITPOS (toval), VALUE_BITSIZE (toval));
409 write_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
410 buffer, len);
411 }
412 else if (use_buffer)
413 write_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
414 raw_buffer, use_buffer);
415 else
416 write_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
417 VALUE_CONTENTS (fromval), TYPE_LENGTH (type));
418 break;
419
420 case lval_register:
421 if (VALUE_BITSIZE (toval))
422 {
423 char buffer[sizeof (LONGEST)];
424 int len = REGISTER_RAW_SIZE (VALUE_REGNO (toval));
425
426 if (len > sizeof (LONGEST))
427 error ("Can't handle bitfields in registers larger than %d bits.",
428 sizeof (LONGEST) * HOST_CHAR_BIT);
429
430 if (VALUE_BITPOS (toval) + VALUE_BITSIZE (toval)
431 > len * HOST_CHAR_BIT)
432 /* Getting this right would involve being very careful about
433 byte order. */
434 error ("\
435 Can't handle bitfield which doesn't fit in a single register.");
436
437 read_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
438 buffer, len);
439 modify_field (buffer, value_as_long (fromval),
440 VALUE_BITPOS (toval), VALUE_BITSIZE (toval));
441 write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
442 buffer, len);
443 }
444 else if (use_buffer)
445 write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
446 raw_buffer, use_buffer);
447 else
448 {
449 /* Do any conversion necessary when storing this type to more
450 than one register. */
451 #ifdef REGISTER_CONVERT_FROM_TYPE
452 memcpy (raw_buffer, VALUE_CONTENTS (fromval), TYPE_LENGTH (type));
453 REGISTER_CONVERT_FROM_TYPE(VALUE_REGNO (toval), type, raw_buffer);
454 write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
455 raw_buffer, TYPE_LENGTH (type));
456 #else
457 write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
458 VALUE_CONTENTS (fromval), TYPE_LENGTH (type));
459 #endif
460 }
461 /* Assigning to the stack pointer, frame pointer, and other
462 (architecture and calling convention specific) registers may
463 cause the frame cache to be out of date. We just do this
464 on all assignments to registers for simplicity; I doubt the slowdown
465 matters. */
466 reinit_frame_cache ();
467 break;
468
469 case lval_reg_frame_relative:
470 {
471 /* value is stored in a series of registers in the frame
472 specified by the structure. Copy that value out, modify
473 it, and copy it back in. */
474 int amount_to_copy = (VALUE_BITSIZE (toval) ? 1 : TYPE_LENGTH (type));
475 int reg_size = REGISTER_RAW_SIZE (VALUE_FRAME_REGNUM (toval));
476 int byte_offset = VALUE_OFFSET (toval) % reg_size;
477 int reg_offset = VALUE_OFFSET (toval) / reg_size;
478 int amount_copied;
479
480 /* Make the buffer large enough in all cases. */
481 char *buffer = (char *) alloca (amount_to_copy
482 + sizeof (LONGEST)
483 + MAX_REGISTER_RAW_SIZE);
484
485 int regno;
486 struct frame_info *frame;
487
488 /* Figure out which frame this is in currently. */
489 for (frame = get_current_frame ();
490 frame && FRAME_FP (frame) != VALUE_FRAME (toval);
491 frame = get_prev_frame (frame))
492 ;
493
494 if (!frame)
495 error ("Value being assigned to is no longer active.");
496
497 amount_to_copy += (reg_size - amount_to_copy % reg_size);
498
499 /* Copy it out. */
500 for ((regno = VALUE_FRAME_REGNUM (toval) + reg_offset,
501 amount_copied = 0);
502 amount_copied < amount_to_copy;
503 amount_copied += reg_size, regno++)
504 {
505 get_saved_register (buffer + amount_copied,
506 (int *)NULL, (CORE_ADDR *)NULL,
507 frame, regno, (enum lval_type *)NULL);
508 }
509
510 /* Modify what needs to be modified. */
511 if (VALUE_BITSIZE (toval))
512 modify_field (buffer + byte_offset,
513 value_as_long (fromval),
514 VALUE_BITPOS (toval), VALUE_BITSIZE (toval));
515 else if (use_buffer)
516 memcpy (buffer + byte_offset, raw_buffer, use_buffer);
517 else
518 memcpy (buffer + byte_offset, VALUE_CONTENTS (fromval),
519 TYPE_LENGTH (type));
520
521 /* Copy it back. */
522 for ((regno = VALUE_FRAME_REGNUM (toval) + reg_offset,
523 amount_copied = 0);
524 amount_copied < amount_to_copy;
525 amount_copied += reg_size, regno++)
526 {
527 enum lval_type lval;
528 CORE_ADDR addr;
529 int optim;
530
531 /* Just find out where to put it. */
532 get_saved_register ((char *)NULL,
533 &optim, &addr, frame, regno, &lval);
534
535 if (optim)
536 error ("Attempt to assign to a value that was optimized out.");
537 if (lval == lval_memory)
538 write_memory (addr, buffer + amount_copied, reg_size);
539 else if (lval == lval_register)
540 write_register_bytes (addr, buffer + amount_copied, reg_size);
541 else
542 error ("Attempt to assign to an unmodifiable value.");
543 }
544 }
545 break;
546
547
548 default:
549 error ("Left operand of assignment is not an lvalue.");
550 }
551
552 /* Return a value just like TOVAL except with the contents of FROMVAL
553 (except in the case of the type if TOVAL is an internalvar). */
554
555 if (VALUE_LVAL (toval) == lval_internalvar
556 || VALUE_LVAL (toval) == lval_internalvar_component)
557 {
558 type = VALUE_TYPE (fromval);
559 }
560
561 val = allocate_value (type);
562 memcpy (val, toval, VALUE_CONTENTS_RAW (val) - (char *) val);
563 memcpy (VALUE_CONTENTS_RAW (val), VALUE_CONTENTS (fromval),
564 TYPE_LENGTH (type));
565 VALUE_TYPE (val) = type;
566
567 return val;
568 }
569
570 /* Extend a value VAL to COUNT repetitions of its type. */
571
572 value_ptr
573 value_repeat (arg1, count)
574 value_ptr arg1;
575 int count;
576 {
577 register value_ptr val;
578
579 if (VALUE_LVAL (arg1) != lval_memory)
580 error ("Only values in memory can be extended with '@'.");
581 if (count < 1)
582 error ("Invalid number %d of repetitions.", count);
583
584 val = allocate_repeat_value (VALUE_TYPE (arg1), count);
585
586 read_memory (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1),
587 VALUE_CONTENTS_RAW (val),
588 TYPE_LENGTH (VALUE_TYPE (val)) * count);
589 VALUE_LVAL (val) = lval_memory;
590 VALUE_ADDRESS (val) = VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1);
591
592 return val;
593 }
594
595 value_ptr
596 value_of_variable (var, b)
597 struct symbol *var;
598 struct block *b;
599 {
600 value_ptr val;
601 struct frame_info *frame;
602
603 if (b == NULL)
604 /* Use selected frame. */
605 frame = NULL;
606 else
607 {
608 frame = block_innermost_frame (b);
609 if (frame == NULL && symbol_read_needs_frame (var))
610 {
611 if (BLOCK_FUNCTION (b) != NULL
612 && SYMBOL_NAME (BLOCK_FUNCTION (b)) != NULL)
613 error ("No frame is currently executing in block %s.",
614 SYMBOL_NAME (BLOCK_FUNCTION (b)));
615 else
616 error ("No frame is currently executing in specified block");
617 }
618 }
619 val = read_var_value (var, frame);
620 if (val == 0)
621 error ("Address of symbol \"%s\" is unknown.", SYMBOL_SOURCE_NAME (var));
622 return val;
623 }
624
625 /* Given a value which is an array, return a value which is a pointer to its
626 first element, regardless of whether or not the array has a nonzero lower
627 bound.
628
629 FIXME: A previous comment here indicated that this routine should be
630 substracting the array's lower bound. It's not clear to me that this
631 is correct. Given an array subscripting operation, it would certainly
632 work to do the adjustment here, essentially computing:
633
634 (&array[0] - (lowerbound * sizeof array[0])) + (index * sizeof array[0])
635
636 However I believe a more appropriate and logical place to account for
637 the lower bound is to do so in value_subscript, essentially computing:
638
639 (&array[0] + ((index - lowerbound) * sizeof array[0]))
640
641 As further evidence consider what would happen with operations other
642 than array subscripting, where the caller would get back a value that
643 had an address somewhere before the actual first element of the array,
644 and the information about the lower bound would be lost because of
645 the coercion to pointer type.
646 */
647
648 value_ptr
649 value_coerce_array (arg1)
650 value_ptr arg1;
651 {
652 register struct type *type;
653
654 if (VALUE_LVAL (arg1) != lval_memory)
655 error ("Attempt to take address of value not located in memory.");
656
657 /* Get type of elements. */
658 if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_ARRAY
659 || TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_STRING)
660 type = TYPE_TARGET_TYPE (VALUE_TYPE (arg1));
661 else
662 /* A phony array made by value_repeat.
663 Its type is the type of the elements, not an array type. */
664 type = VALUE_TYPE (arg1);
665
666 return value_from_longest (lookup_pointer_type (type),
667 (LONGEST) (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
668 }
669
670 /* Given a value which is a function, return a value which is a pointer
671 to it. */
672
673 value_ptr
674 value_coerce_function (arg1)
675 value_ptr arg1;
676 {
677
678 if (VALUE_LVAL (arg1) != lval_memory)
679 error ("Attempt to take address of value not located in memory.");
680
681 return value_from_longest (lookup_pointer_type (VALUE_TYPE (arg1)),
682 (LONGEST) (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
683 }
684
685 /* Return a pointer value for the object for which ARG1 is the contents. */
686
687 value_ptr
688 value_addr (arg1)
689 value_ptr arg1;
690 {
691 struct type *type = VALUE_TYPE (arg1);
692 if (TYPE_CODE (type) == TYPE_CODE_REF)
693 {
694 /* Copy the value, but change the type from (T&) to (T*).
695 We keep the same location information, which is efficient,
696 and allows &(&X) to get the location containing the reference. */
697 value_ptr arg2 = value_copy (arg1);
698 VALUE_TYPE (arg2) = lookup_pointer_type (TYPE_TARGET_TYPE (type));
699 return arg2;
700 }
701 if (current_language->c_style_arrays
702 && (VALUE_REPEATED (arg1)
703 || TYPE_CODE (type) == TYPE_CODE_ARRAY))
704 return value_coerce_array (arg1);
705 if (TYPE_CODE (type) == TYPE_CODE_FUNC)
706 return value_coerce_function (arg1);
707
708 if (VALUE_LVAL (arg1) != lval_memory)
709 error ("Attempt to take address of value not located in memory.");
710
711 return value_from_longest (lookup_pointer_type (type),
712 (LONGEST) (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
713 }
714
715 /* Given a value of a pointer type, apply the C unary * operator to it. */
716
717 value_ptr
718 value_ind (arg1)
719 value_ptr arg1;
720 {
721 COERCE_ARRAY (arg1);
722
723 if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_MEMBER)
724 error ("not implemented: member types in value_ind");
725
726 /* Allow * on an integer so we can cast it to whatever we want.
727 This returns an int, which seems like the most C-like thing
728 to do. "long long" variables are rare enough that
729 BUILTIN_TYPE_LONGEST would seem to be a mistake. */
730 if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_INT)
731 return value_at (builtin_type_int,
732 (CORE_ADDR) value_as_long (arg1));
733 else if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_PTR)
734 return value_at_lazy (TYPE_TARGET_TYPE (VALUE_TYPE (arg1)),
735 value_as_pointer (arg1));
736 error ("Attempt to take contents of a non-pointer value.");
737 return 0; /* For lint -- never reached */
738 }
739 \f
740 /* Pushing small parts of stack frames. */
741
742 /* Push one word (the size of object that a register holds). */
743
744 CORE_ADDR
745 push_word (sp, word)
746 CORE_ADDR sp;
747 unsigned LONGEST word;
748 {
749 register int len = REGISTER_SIZE;
750 char buffer[MAX_REGISTER_RAW_SIZE];
751
752 store_unsigned_integer (buffer, len, word);
753 #if 1 INNER_THAN 2
754 sp -= len;
755 write_memory (sp, buffer, len);
756 #else /* stack grows upward */
757 write_memory (sp, buffer, len);
758 sp += len;
759 #endif /* stack grows upward */
760
761 return sp;
762 }
763
764 /* Push LEN bytes with data at BUFFER. */
765
766 CORE_ADDR
767 push_bytes (sp, buffer, len)
768 CORE_ADDR sp;
769 char *buffer;
770 int len;
771 {
772 #if 1 INNER_THAN 2
773 sp -= len;
774 write_memory (sp, buffer, len);
775 #else /* stack grows upward */
776 write_memory (sp, buffer, len);
777 sp += len;
778 #endif /* stack grows upward */
779
780 return sp;
781 }
782
783 /* Push onto the stack the specified value VALUE. */
784
785 static CORE_ADDR
786 value_push (sp, arg)
787 register CORE_ADDR sp;
788 value_ptr arg;
789 {
790 register int len = TYPE_LENGTH (VALUE_TYPE (arg));
791
792 #if 1 INNER_THAN 2
793 sp -= len;
794 write_memory (sp, VALUE_CONTENTS (arg), len);
795 #else /* stack grows upward */
796 write_memory (sp, VALUE_CONTENTS (arg), len);
797 sp += len;
798 #endif /* stack grows upward */
799
800 return sp;
801 }
802
803 /* Perform the standard coercions that are specified
804 for arguments to be passed to C functions.
805
806 If PARAM_TYPE is non-NULL, it is the expected parameter type. */
807
808 static value_ptr
809 value_arg_coerce (arg, param_type)
810 value_ptr arg;
811 struct type *param_type;
812 {
813 register struct type *type = param_type ? param_type : VALUE_TYPE (arg);
814
815 switch (TYPE_CODE (type))
816 {
817 case TYPE_CODE_REF:
818 if (TYPE_CODE (SYMBOL_TYPE (arg)) != TYPE_CODE_REF)
819 {
820 arg = value_addr (arg);
821 VALUE_TYPE (arg) = param_type;
822 return arg;
823 }
824 break;
825 case TYPE_CODE_INT:
826 case TYPE_CODE_CHAR:
827 case TYPE_CODE_BOOL:
828 case TYPE_CODE_ENUM:
829 if (TYPE_LENGTH (type) < TYPE_LENGTH (builtin_type_int))
830 type = builtin_type_int;
831 break;
832 case TYPE_CODE_FLT:
833 if (TYPE_LENGTH (type) < TYPE_LENGTH (builtin_type_double))
834 type = builtin_type_double;
835 break;
836 case TYPE_CODE_FUNC:
837 type = lookup_pointer_type (type);
838 break;
839 }
840
841 #if 1 /* FIXME: This is only a temporary patch. -fnf */
842 if (current_language->c_style_arrays
843 && (VALUE_REPEATED (arg)
844 || TYPE_CODE (VALUE_TYPE (arg)) == TYPE_CODE_ARRAY))
845 arg = value_coerce_array (arg);
846 #endif
847
848 return value_cast (type, arg);
849 }
850
851 /* Determine a function's address and its return type from its value.
852 Calls error() if the function is not valid for calling. */
853
854 static CORE_ADDR
855 find_function_addr (function, retval_type)
856 value_ptr function;
857 struct type **retval_type;
858 {
859 register struct type *ftype = VALUE_TYPE (function);
860 register enum type_code code = TYPE_CODE (ftype);
861 struct type *value_type;
862 CORE_ADDR funaddr;
863
864 /* If it's a member function, just look at the function
865 part of it. */
866
867 /* Determine address to call. */
868 if (code == TYPE_CODE_FUNC || code == TYPE_CODE_METHOD)
869 {
870 funaddr = VALUE_ADDRESS (function);
871 value_type = TYPE_TARGET_TYPE (ftype);
872 }
873 else if (code == TYPE_CODE_PTR)
874 {
875 funaddr = value_as_pointer (function);
876 if (TYPE_CODE (TYPE_TARGET_TYPE (ftype)) == TYPE_CODE_FUNC
877 || TYPE_CODE (TYPE_TARGET_TYPE (ftype)) == TYPE_CODE_METHOD)
878 {
879 #ifdef CONVERT_FROM_FUNC_PTR_ADDR
880 /* FIXME: This is a workaround for the unusual function
881 pointer representation on the RS/6000, see comment
882 in config/rs6000/tm-rs6000.h */
883 funaddr = CONVERT_FROM_FUNC_PTR_ADDR (funaddr);
884 #endif
885 value_type = TYPE_TARGET_TYPE (TYPE_TARGET_TYPE (ftype));
886 }
887 else
888 value_type = builtin_type_int;
889 }
890 else if (code == TYPE_CODE_INT)
891 {
892 /* Handle the case of functions lacking debugging info.
893 Their values are characters since their addresses are char */
894 if (TYPE_LENGTH (ftype) == 1)
895 funaddr = value_as_pointer (value_addr (function));
896 else
897 /* Handle integer used as address of a function. */
898 funaddr = (CORE_ADDR) value_as_long (function);
899
900 value_type = builtin_type_int;
901 }
902 else
903 error ("Invalid data type for function to be called.");
904
905 *retval_type = value_type;
906 return funaddr;
907 }
908
909 #if defined (CALL_DUMMY)
910 /* All this stuff with a dummy frame may seem unnecessarily complicated
911 (why not just save registers in GDB?). The purpose of pushing a dummy
912 frame which looks just like a real frame is so that if you call a
913 function and then hit a breakpoint (get a signal, etc), "backtrace"
914 will look right. Whether the backtrace needs to actually show the
915 stack at the time the inferior function was called is debatable, but
916 it certainly needs to not display garbage. So if you are contemplating
917 making dummy frames be different from normal frames, consider that. */
918
919 /* Perform a function call in the inferior.
920 ARGS is a vector of values of arguments (NARGS of them).
921 FUNCTION is a value, the function to be called.
922 Returns a value representing what the function returned.
923 May fail to return, if a breakpoint or signal is hit
924 during the execution of the function.
925
926 ARGS is modified to contain coerced values. */
927
928 value_ptr
929 call_function_by_hand (function, nargs, args)
930 value_ptr function;
931 int nargs;
932 value_ptr *args;
933 {
934 register CORE_ADDR sp;
935 register int i;
936 CORE_ADDR start_sp;
937 /* CALL_DUMMY is an array of words (REGISTER_SIZE), but each word
938 is in host byte order. Before calling FIX_CALL_DUMMY, we byteswap it
939 and remove any extra bytes which might exist because unsigned LONGEST is
940 bigger than REGISTER_SIZE. */
941 static unsigned LONGEST dummy[] = CALL_DUMMY;
942 char dummy1[REGISTER_SIZE * sizeof dummy / sizeof (unsigned LONGEST)];
943 CORE_ADDR old_sp;
944 struct type *value_type;
945 unsigned char struct_return;
946 CORE_ADDR struct_addr;
947 struct inferior_status inf_status;
948 struct cleanup *old_chain;
949 CORE_ADDR funaddr;
950 int using_gcc;
951 CORE_ADDR real_pc;
952 struct type *ftype = SYMBOL_TYPE (function);
953
954 if (!target_has_execution)
955 noprocess();
956
957 save_inferior_status (&inf_status, 1);
958 old_chain = make_cleanup (restore_inferior_status, &inf_status);
959
960 /* PUSH_DUMMY_FRAME is responsible for saving the inferior registers
961 (and POP_FRAME for restoring them). (At least on most machines)
962 they are saved on the stack in the inferior. */
963 PUSH_DUMMY_FRAME;
964
965 old_sp = sp = read_sp ();
966
967 #if 1 INNER_THAN 2 /* Stack grows down */
968 sp -= sizeof dummy1;
969 start_sp = sp;
970 #else /* Stack grows up */
971 start_sp = sp;
972 sp += sizeof dummy1;
973 #endif
974
975 funaddr = find_function_addr (function, &value_type);
976
977 {
978 struct block *b = block_for_pc (funaddr);
979 /* If compiled without -g, assume GCC. */
980 using_gcc = b == NULL || BLOCK_GCC_COMPILED (b);
981 }
982
983 /* Are we returning a value using a structure return or a normal
984 value return? */
985
986 struct_return = using_struct_return (function, funaddr, value_type,
987 using_gcc);
988
989 /* Create a call sequence customized for this function
990 and the number of arguments for it. */
991 for (i = 0; i < sizeof dummy / sizeof (dummy[0]); i++)
992 store_unsigned_integer (&dummy1[i * REGISTER_SIZE],
993 REGISTER_SIZE,
994 (unsigned LONGEST)dummy[i]);
995
996 #ifdef GDB_TARGET_IS_HPPA
997 real_pc = FIX_CALL_DUMMY (dummy1, start_sp, funaddr, nargs, args,
998 value_type, using_gcc);
999 #else
1000 FIX_CALL_DUMMY (dummy1, start_sp, funaddr, nargs, args,
1001 value_type, using_gcc);
1002 real_pc = start_sp;
1003 #endif
1004
1005 #if CALL_DUMMY_LOCATION == ON_STACK
1006 write_memory (start_sp, (char *)dummy1, sizeof dummy1);
1007 #endif /* On stack. */
1008
1009 #if CALL_DUMMY_LOCATION == BEFORE_TEXT_END
1010 /* Convex Unix prohibits executing in the stack segment. */
1011 /* Hope there is empty room at the top of the text segment. */
1012 {
1013 extern CORE_ADDR text_end;
1014 static checked = 0;
1015 if (!checked)
1016 for (start_sp = text_end - sizeof dummy1; start_sp < text_end; ++start_sp)
1017 if (read_memory_integer (start_sp, 1) != 0)
1018 error ("text segment full -- no place to put call");
1019 checked = 1;
1020 sp = old_sp;
1021 real_pc = text_end - sizeof dummy1;
1022 write_memory (real_pc, (char *)dummy1, sizeof dummy1);
1023 }
1024 #endif /* Before text_end. */
1025
1026 #if CALL_DUMMY_LOCATION == AFTER_TEXT_END
1027 {
1028 extern CORE_ADDR text_end;
1029 int errcode;
1030 sp = old_sp;
1031 real_pc = text_end;
1032 errcode = target_write_memory (real_pc, (char *)dummy1, sizeof dummy1);
1033 if (errcode != 0)
1034 error ("Cannot write text segment -- call_function failed");
1035 }
1036 #endif /* After text_end. */
1037
1038 #if CALL_DUMMY_LOCATION == AT_ENTRY_POINT
1039 real_pc = funaddr;
1040 #endif /* At entry point. */
1041
1042 #ifdef lint
1043 sp = old_sp; /* It really is used, for some ifdef's... */
1044 #endif
1045
1046 for (i = nargs - 1; i >= 0; i--)
1047 {
1048 struct type *param_type;
1049 if (TYPE_NFIELDS (ftype) > i)
1050 param_type = TYPE_FIELD_TYPE (ftype, i);
1051 else
1052 param_type = 0;
1053 args[i] = value_arg_coerce (args[i], param_type);
1054 }
1055
1056 #ifdef STACK_ALIGN
1057 /* If stack grows down, we must leave a hole at the top. */
1058 {
1059 int len = 0;
1060
1061 /* Reserve space for the return structure to be written on the
1062 stack, if necessary */
1063
1064 if (struct_return)
1065 len += TYPE_LENGTH (value_type);
1066
1067 for (i = nargs - 1; i >= 0; i--)
1068 len += TYPE_LENGTH (VALUE_TYPE (args[i]));
1069 #ifdef CALL_DUMMY_STACK_ADJUST
1070 len += CALL_DUMMY_STACK_ADJUST;
1071 #endif
1072 #if 1 INNER_THAN 2
1073 sp -= STACK_ALIGN (len) - len;
1074 #else
1075 sp += STACK_ALIGN (len) - len;
1076 #endif
1077 }
1078 #endif /* STACK_ALIGN */
1079
1080 /* Reserve space for the return structure to be written on the
1081 stack, if necessary */
1082
1083 if (struct_return)
1084 {
1085 #if 1 INNER_THAN 2
1086 sp -= TYPE_LENGTH (value_type);
1087 struct_addr = sp;
1088 #else
1089 struct_addr = sp;
1090 sp += TYPE_LENGTH (value_type);
1091 #endif
1092 }
1093
1094 #if defined (REG_STRUCT_HAS_ADDR)
1095 {
1096 /* This is a machine like the sparc, where we may need to pass a pointer
1097 to the structure, not the structure itself. */
1098 for (i = nargs - 1; i >= 0; i--)
1099 if (TYPE_CODE (VALUE_TYPE (args[i])) == TYPE_CODE_STRUCT
1100 && REG_STRUCT_HAS_ADDR (using_gcc, VALUE_TYPE (args[i])))
1101 {
1102 CORE_ADDR addr;
1103 #if !(1 INNER_THAN 2)
1104 /* The stack grows up, so the address of the thing we push
1105 is the stack pointer before we push it. */
1106 addr = sp;
1107 #endif
1108 /* Push the structure. */
1109 sp = value_push (sp, args[i]);
1110 #if 1 INNER_THAN 2
1111 /* The stack grows down, so the address of the thing we push
1112 is the stack pointer after we push it. */
1113 addr = sp;
1114 #endif
1115 /* The value we're going to pass is the address of the thing
1116 we just pushed. */
1117 args[i] = value_from_longest (lookup_pointer_type (value_type),
1118 (LONGEST) addr);
1119 }
1120 }
1121 #endif /* REG_STRUCT_HAS_ADDR. */
1122
1123 #ifdef PUSH_ARGUMENTS
1124 PUSH_ARGUMENTS(nargs, args, sp, struct_return, struct_addr);
1125 #else /* !PUSH_ARGUMENTS */
1126 for (i = nargs - 1; i >= 0; i--)
1127 sp = value_push (sp, args[i]);
1128 #endif /* !PUSH_ARGUMENTS */
1129
1130 #ifdef CALL_DUMMY_STACK_ADJUST
1131 #if 1 INNER_THAN 2
1132 sp -= CALL_DUMMY_STACK_ADJUST;
1133 #else
1134 sp += CALL_DUMMY_STACK_ADJUST;
1135 #endif
1136 #endif /* CALL_DUMMY_STACK_ADJUST */
1137
1138 /* Store the address at which the structure is supposed to be
1139 written. Note that this (and the code which reserved the space
1140 above) assumes that gcc was used to compile this function. Since
1141 it doesn't cost us anything but space and if the function is pcc
1142 it will ignore this value, we will make that assumption.
1143
1144 Also note that on some machines (like the sparc) pcc uses a
1145 convention like gcc's. */
1146
1147 if (struct_return)
1148 STORE_STRUCT_RETURN (struct_addr, sp);
1149
1150 /* Write the stack pointer. This is here because the statements above
1151 might fool with it. On SPARC, this write also stores the register
1152 window into the right place in the new stack frame, which otherwise
1153 wouldn't happen. (See store_inferior_registers in sparc-nat.c.) */
1154 write_sp (sp);
1155
1156 {
1157 char retbuf[REGISTER_BYTES];
1158 char *name;
1159 struct symbol *symbol;
1160
1161 name = NULL;
1162 symbol = find_pc_function (funaddr);
1163 if (symbol)
1164 {
1165 name = SYMBOL_SOURCE_NAME (symbol);
1166 }
1167 else
1168 {
1169 /* Try the minimal symbols. */
1170 struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (funaddr);
1171
1172 if (msymbol)
1173 {
1174 name = SYMBOL_SOURCE_NAME (msymbol);
1175 }
1176 }
1177 if (name == NULL)
1178 {
1179 char format[80];
1180 sprintf (format, "at %s", local_hex_format ());
1181 name = alloca (80);
1182 /* FIXME-32x64: assumes funaddr fits in a long. */
1183 sprintf (name, format, (unsigned long) funaddr);
1184 }
1185
1186 /* Execute the stack dummy routine, calling FUNCTION.
1187 When it is done, discard the empty frame
1188 after storing the contents of all regs into retbuf. */
1189 if (run_stack_dummy (real_pc + CALL_DUMMY_START_OFFSET, retbuf))
1190 {
1191 /* We stopped somewhere besides the call dummy. */
1192
1193 /* If we did the cleanups, we would print a spurious error message
1194 (Unable to restore previously selected frame), would write the
1195 registers from the inf_status (which is wrong), and would do other
1196 wrong things (like set stop_bpstat to the wrong thing). */
1197 discard_cleanups (old_chain);
1198 /* Prevent memory leak. */
1199 bpstat_clear (&inf_status.stop_bpstat);
1200
1201 /* The following error message used to say "The expression
1202 which contained the function call has been discarded." It
1203 is a hard concept to explain in a few words. Ideally, GDB
1204 would be able to resume evaluation of the expression when
1205 the function finally is done executing. Perhaps someday
1206 this will be implemented (it would not be easy). */
1207
1208 /* FIXME: Insert a bunch of wrap_here; name can be very long if it's
1209 a C++ name with arguments and stuff. */
1210 error ("\
1211 The program being debugged stopped while in a function called from GDB.\n\
1212 When the function (%s) is done executing, GDB will silently\n\
1213 stop (instead of continuing to evaluate the expression containing\n\
1214 the function call).", name);
1215 }
1216
1217 do_cleanups (old_chain);
1218
1219 /* Figure out the value returned by the function. */
1220 return value_being_returned (value_type, retbuf, struct_return);
1221 }
1222 }
1223 #else /* no CALL_DUMMY. */
1224 value_ptr
1225 call_function_by_hand (function, nargs, args)
1226 value_ptr function;
1227 int nargs;
1228 value_ptr *args;
1229 {
1230 error ("Cannot invoke functions on this machine.");
1231 }
1232 #endif /* no CALL_DUMMY. */
1233
1234 \f
1235 /* Create a value for an array by allocating space in the inferior, copying
1236 the data into that space, and then setting up an array value.
1237
1238 The array bounds are set from LOWBOUND and HIGHBOUND, and the array is
1239 populated from the values passed in ELEMVEC.
1240
1241 The element type of the array is inherited from the type of the
1242 first element, and all elements must have the same size (though we
1243 don't currently enforce any restriction on their types). */
1244
1245 value_ptr
1246 value_array (lowbound, highbound, elemvec)
1247 int lowbound;
1248 int highbound;
1249 value_ptr *elemvec;
1250 {
1251 int nelem;
1252 int idx;
1253 int typelength;
1254 value_ptr val;
1255 struct type *rangetype;
1256 struct type *arraytype;
1257 CORE_ADDR addr;
1258
1259 /* Validate that the bounds are reasonable and that each of the elements
1260 have the same size. */
1261
1262 nelem = highbound - lowbound + 1;
1263 if (nelem <= 0)
1264 {
1265 error ("bad array bounds (%d, %d)", lowbound, highbound);
1266 }
1267 typelength = TYPE_LENGTH (VALUE_TYPE (elemvec[0]));
1268 for (idx = 0; idx < nelem; idx++)
1269 {
1270 if (TYPE_LENGTH (VALUE_TYPE (elemvec[idx])) != typelength)
1271 {
1272 error ("array elements must all be the same size");
1273 }
1274 }
1275
1276 /* Allocate space to store the array in the inferior, and then initialize
1277 it by copying in each element. FIXME: Is it worth it to create a
1278 local buffer in which to collect each value and then write all the
1279 bytes in one operation? */
1280
1281 addr = allocate_space_in_inferior (nelem * typelength);
1282 for (idx = 0; idx < nelem; idx++)
1283 {
1284 write_memory (addr + (idx * typelength), VALUE_CONTENTS (elemvec[idx]),
1285 typelength);
1286 }
1287
1288 /* Create the array type and set up an array value to be evaluated lazily. */
1289
1290 rangetype = create_range_type ((struct type *) NULL, builtin_type_int,
1291 lowbound, highbound);
1292 arraytype = create_array_type ((struct type *) NULL,
1293 VALUE_TYPE (elemvec[0]), rangetype);
1294 val = value_at_lazy (arraytype, addr);
1295 return (val);
1296 }
1297
1298 /* Create a value for a string constant by allocating space in the inferior,
1299 copying the data into that space, and returning the address with type
1300 TYPE_CODE_STRING. PTR points to the string constant data; LEN is number
1301 of characters.
1302 Note that string types are like array of char types with a lower bound of
1303 zero and an upper bound of LEN - 1. Also note that the string may contain
1304 embedded null bytes. */
1305
1306 value_ptr
1307 value_string (ptr, len)
1308 char *ptr;
1309 int len;
1310 {
1311 value_ptr val;
1312 int lowbound = current_language->string_lower_bound;
1313 struct type *rangetype = create_range_type ((struct type *) NULL,
1314 builtin_type_int,
1315 lowbound, len + lowbound - 1);
1316 struct type *stringtype
1317 = create_string_type ((struct type *) NULL, rangetype);
1318 CORE_ADDR addr;
1319
1320 if (current_language->c_style_arrays == 0)
1321 {
1322 val = allocate_value (stringtype);
1323 memcpy (VALUE_CONTENTS_RAW (val), ptr, len);
1324 return val;
1325 }
1326
1327
1328 /* Allocate space to store the string in the inferior, and then
1329 copy LEN bytes from PTR in gdb to that address in the inferior. */
1330
1331 addr = allocate_space_in_inferior (len);
1332 write_memory (addr, ptr, len);
1333
1334 val = value_at_lazy (stringtype, addr);
1335 return (val);
1336 }
1337
1338 value_ptr
1339 value_bitstring (ptr, len)
1340 char *ptr;
1341 int len;
1342 {
1343 value_ptr val;
1344 struct type *domain_type = create_range_type (NULL, builtin_type_int,
1345 0, len - 1);
1346 struct type *type = create_set_type ((struct type*) NULL, domain_type);
1347 TYPE_CODE (type) = TYPE_CODE_BITSTRING;
1348 val = allocate_value (type);
1349 memcpy (VALUE_CONTENTS_RAW (val), ptr, TYPE_LENGTH (type) / TARGET_CHAR_BIT);
1350 return val;
1351 }
1352 \f
1353 /* See if we can pass arguments in T2 to a function which takes arguments
1354 of types T1. Both t1 and t2 are NULL-terminated vectors. If some
1355 arguments need coercion of some sort, then the coerced values are written
1356 into T2. Return value is 0 if the arguments could be matched, or the
1357 position at which they differ if not.
1358
1359 STATICP is nonzero if the T1 argument list came from a
1360 static member function.
1361
1362 For non-static member functions, we ignore the first argument,
1363 which is the type of the instance variable. This is because we want
1364 to handle calls with objects from derived classes. This is not
1365 entirely correct: we should actually check to make sure that a
1366 requested operation is type secure, shouldn't we? FIXME. */
1367
1368 static int
1369 typecmp (staticp, t1, t2)
1370 int staticp;
1371 struct type *t1[];
1372 value_ptr t2[];
1373 {
1374 int i;
1375
1376 if (t2 == 0)
1377 return 1;
1378 if (staticp && t1 == 0)
1379 return t2[1] != 0;
1380 if (t1 == 0)
1381 return 1;
1382 if (TYPE_CODE (t1[0]) == TYPE_CODE_VOID) return 0;
1383 if (t1[!staticp] == 0) return 0;
1384 for (i = !staticp; t1[i] && TYPE_CODE (t1[i]) != TYPE_CODE_VOID; i++)
1385 {
1386 struct type *tt1, *tt2;
1387 if (! t2[i])
1388 return i+1;
1389 tt1 = t1[i];
1390 tt2 = VALUE_TYPE(t2[i]);
1391 if (TYPE_CODE (tt1) == TYPE_CODE_REF
1392 /* We should be doing hairy argument matching, as below. */
1393 && (TYPE_CODE (TYPE_TARGET_TYPE (tt1)) == TYPE_CODE (tt2)))
1394 {
1395 t2[i] = value_addr (t2[i]);
1396 continue;
1397 }
1398
1399 while (TYPE_CODE (tt1) == TYPE_CODE_PTR
1400 && (TYPE_CODE(tt2)==TYPE_CODE_ARRAY || TYPE_CODE(tt2)==TYPE_CODE_PTR))
1401 {
1402 tt1 = TYPE_TARGET_TYPE(tt1);
1403 tt2 = TYPE_TARGET_TYPE(tt2);
1404 }
1405 if (TYPE_CODE(tt1) == TYPE_CODE(tt2)) continue;
1406 /* Array to pointer is a `trivial conversion' according to the ARM. */
1407
1408 /* We should be doing much hairier argument matching (see section 13.2
1409 of the ARM), but as a quick kludge, just check for the same type
1410 code. */
1411 if (TYPE_CODE (t1[i]) != TYPE_CODE (VALUE_TYPE (t2[i])))
1412 return i+1;
1413 }
1414 if (!t1[i]) return 0;
1415 return t2[i] ? i+1 : 0;
1416 }
1417
1418 /* Helper function used by value_struct_elt to recurse through baseclasses.
1419 Look for a field NAME in ARG1. Adjust the address of ARG1 by OFFSET bytes,
1420 and search in it assuming it has (class) type TYPE.
1421 If found, return value, else return NULL.
1422
1423 If LOOKING_FOR_BASECLASS, then instead of looking for struct fields,
1424 look for a baseclass named NAME. */
1425
1426 static value_ptr
1427 search_struct_field (name, arg1, offset, type, looking_for_baseclass)
1428 char *name;
1429 register value_ptr arg1;
1430 int offset;
1431 register struct type *type;
1432 int looking_for_baseclass;
1433 {
1434 int i;
1435
1436 check_stub_type (type);
1437
1438 if (! looking_for_baseclass)
1439 for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
1440 {
1441 char *t_field_name = TYPE_FIELD_NAME (type, i);
1442
1443 if (t_field_name && STREQ (t_field_name, name))
1444 {
1445 value_ptr v;
1446 if (TYPE_FIELD_STATIC (type, i))
1447 {
1448 char *phys_name = TYPE_FIELD_STATIC_PHYSNAME (type, i);
1449 struct symbol *sym =
1450 lookup_symbol (phys_name, 0, VAR_NAMESPACE, 0, NULL);
1451 if (sym == NULL)
1452 error ("Internal error: could not find physical static variable named %s",
1453 phys_name);
1454 v = value_at (TYPE_FIELD_TYPE (type, i),
1455 (CORE_ADDR)SYMBOL_BLOCK_VALUE (sym));
1456 }
1457 else
1458 v = value_primitive_field (arg1, offset, i, type);
1459 if (v == 0)
1460 error("there is no field named %s", name);
1461 return v;
1462 }
1463 if (t_field_name && t_field_name[0] == '\0'
1464 && TYPE_CODE (TYPE_FIELD_TYPE (type, i)) == TYPE_CODE_UNION)
1465 {
1466 /* Look for a match through the fields of an anonymous union. */
1467 value_ptr v;
1468 v = search_struct_field (name, arg1, offset,
1469 TYPE_FIELD_TYPE (type, i),
1470 looking_for_baseclass);
1471 if (v)
1472 return v;
1473 }
1474 }
1475
1476 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1477 {
1478 value_ptr v;
1479 /* If we are looking for baseclasses, this is what we get when we
1480 hit them. But it could happen that the base part's member name
1481 is not yet filled in. */
1482 int found_baseclass = (looking_for_baseclass
1483 && TYPE_BASECLASS_NAME (type, i) != NULL
1484 && STREQ (name, TYPE_BASECLASS_NAME (type, i)));
1485
1486 if (BASETYPE_VIA_VIRTUAL (type, i))
1487 {
1488 value_ptr v2;
1489 /* Fix to use baseclass_offset instead. FIXME */
1490 baseclass_addr (type, i, VALUE_CONTENTS (arg1) + offset,
1491 &v2, (int *)NULL);
1492 if (v2 == 0)
1493 error ("virtual baseclass botch");
1494 if (found_baseclass)
1495 return v2;
1496 v = search_struct_field (name, v2, 0, TYPE_BASECLASS (type, i),
1497 looking_for_baseclass);
1498 }
1499 else if (found_baseclass)
1500 v = value_primitive_field (arg1, offset, i, type);
1501 else
1502 v = search_struct_field (name, arg1,
1503 offset + TYPE_BASECLASS_BITPOS (type, i) / 8,
1504 TYPE_BASECLASS (type, i),
1505 looking_for_baseclass);
1506 if (v) return v;
1507 }
1508 return NULL;
1509 }
1510
1511 /* Helper function used by value_struct_elt to recurse through baseclasses.
1512 Look for a field NAME in ARG1. Adjust the address of ARG1 by OFFSET bytes,
1513 and search in it assuming it has (class) type TYPE.
1514 If found, return value, else if name matched and args not return (value)-1,
1515 else return NULL. */
1516
1517 static value_ptr
1518 search_struct_method (name, arg1p, args, offset, static_memfuncp, type)
1519 char *name;
1520 register value_ptr *arg1p, *args;
1521 int offset, *static_memfuncp;
1522 register struct type *type;
1523 {
1524 int i;
1525 value_ptr v;
1526 int name_matched = 0;
1527 char dem_opname[64];
1528
1529 check_stub_type (type);
1530 for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
1531 {
1532 char *t_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
1533 if (strncmp(t_field_name, "__", 2)==0 ||
1534 strncmp(t_field_name, "op", 2)==0 ||
1535 strncmp(t_field_name, "type", 4)==0 )
1536 {
1537 if (cplus_demangle_opname(t_field_name, dem_opname, DMGL_ANSI))
1538 t_field_name = dem_opname;
1539 else if (cplus_demangle_opname(t_field_name, dem_opname, 0))
1540 t_field_name = dem_opname;
1541 }
1542 if (t_field_name && STREQ (t_field_name, name))
1543 {
1544 int j = TYPE_FN_FIELDLIST_LENGTH (type, i) - 1;
1545 struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
1546 name_matched = 1;
1547
1548 if (j > 0 && args == 0)
1549 error ("cannot resolve overloaded method `%s'", name);
1550 while (j >= 0)
1551 {
1552 if (TYPE_FN_FIELD_STUB (f, j))
1553 check_stub_method (type, i, j);
1554 if (!typecmp (TYPE_FN_FIELD_STATIC_P (f, j),
1555 TYPE_FN_FIELD_ARGS (f, j), args))
1556 {
1557 if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
1558 return value_virtual_fn_field (arg1p, f, j, type, offset);
1559 if (TYPE_FN_FIELD_STATIC_P (f, j) && static_memfuncp)
1560 *static_memfuncp = 1;
1561 v = value_fn_field (arg1p, f, j, type, offset);
1562 if (v != NULL) return v;
1563 }
1564 j--;
1565 }
1566 }
1567 }
1568
1569 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1570 {
1571 int base_offset;
1572
1573 if (BASETYPE_VIA_VIRTUAL (type, i))
1574 {
1575 base_offset = baseclass_offset (type, i, *arg1p, offset);
1576 if (base_offset == -1)
1577 error ("virtual baseclass botch");
1578 }
1579 else
1580 {
1581 base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
1582 }
1583 v = search_struct_method (name, arg1p, args, base_offset + offset,
1584 static_memfuncp, TYPE_BASECLASS (type, i));
1585 if (v == (value_ptr) -1)
1586 {
1587 name_matched = 1;
1588 }
1589 else if (v)
1590 {
1591 /* FIXME-bothner: Why is this commented out? Why is it here? */
1592 /* *arg1p = arg1_tmp;*/
1593 return v;
1594 }
1595 }
1596 if (name_matched) return (value_ptr) -1;
1597 else return NULL;
1598 }
1599
1600 /* Given *ARGP, a value of type (pointer to a)* structure/union,
1601 extract the component named NAME from the ultimate target structure/union
1602 and return it as a value with its appropriate type.
1603 ERR is used in the error message if *ARGP's type is wrong.
1604
1605 C++: ARGS is a list of argument types to aid in the selection of
1606 an appropriate method. Also, handle derived types.
1607
1608 STATIC_MEMFUNCP, if non-NULL, points to a caller-supplied location
1609 where the truthvalue of whether the function that was resolved was
1610 a static member function or not is stored.
1611
1612 ERR is an error message to be printed in case the field is not found. */
1613
1614 value_ptr
1615 value_struct_elt (argp, args, name, static_memfuncp, err)
1616 register value_ptr *argp, *args;
1617 char *name;
1618 int *static_memfuncp;
1619 char *err;
1620 {
1621 register struct type *t;
1622 value_ptr v;
1623
1624 COERCE_ARRAY (*argp);
1625
1626 t = VALUE_TYPE (*argp);
1627
1628 /* Follow pointers until we get to a non-pointer. */
1629
1630 while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
1631 {
1632 *argp = value_ind (*argp);
1633 /* Don't coerce fn pointer to fn and then back again! */
1634 if (TYPE_CODE (VALUE_TYPE (*argp)) != TYPE_CODE_FUNC)
1635 COERCE_ARRAY (*argp);
1636 t = VALUE_TYPE (*argp);
1637 }
1638
1639 if (TYPE_CODE (t) == TYPE_CODE_MEMBER)
1640 error ("not implemented: member type in value_struct_elt");
1641
1642 if ( TYPE_CODE (t) != TYPE_CODE_STRUCT
1643 && TYPE_CODE (t) != TYPE_CODE_UNION)
1644 error ("Attempt to extract a component of a value that is not a %s.", err);
1645
1646 /* Assume it's not, unless we see that it is. */
1647 if (static_memfuncp)
1648 *static_memfuncp =0;
1649
1650 if (!args)
1651 {
1652 /* if there are no arguments ...do this... */
1653
1654 /* Try as a field first, because if we succeed, there
1655 is less work to be done. */
1656 v = search_struct_field (name, *argp, 0, t, 0);
1657 if (v)
1658 return v;
1659
1660 /* C++: If it was not found as a data field, then try to
1661 return it as a pointer to a method. */
1662
1663 if (destructor_name_p (name, t))
1664 error ("Cannot get value of destructor");
1665
1666 v = search_struct_method (name, argp, args, 0, static_memfuncp, t);
1667
1668 if (v == (value_ptr) -1)
1669 error ("Cannot take address of a method");
1670 else if (v == 0)
1671 {
1672 if (TYPE_NFN_FIELDS (t))
1673 error ("There is no member or method named %s.", name);
1674 else
1675 error ("There is no member named %s.", name);
1676 }
1677 return v;
1678 }
1679
1680 if (destructor_name_p (name, t))
1681 {
1682 if (!args[1])
1683 {
1684 /* destructors are a special case. */
1685 v = value_fn_field (NULL, TYPE_FN_FIELDLIST1 (t, 0),
1686 TYPE_FN_FIELDLIST_LENGTH (t, 0), 0, 0);
1687 if (!v) error("could not find destructor function named %s.", name);
1688 else return v;
1689 }
1690 else
1691 {
1692 error ("destructor should not have any argument");
1693 }
1694 }
1695 else
1696 v = search_struct_method (name, argp, args, 0, static_memfuncp, t);
1697
1698 if (v == (value_ptr) -1)
1699 {
1700 error("Argument list of %s mismatch with component in the structure.", name);
1701 }
1702 else if (v == 0)
1703 {
1704 /* See if user tried to invoke data as function. If so,
1705 hand it back. If it's not callable (i.e., a pointer to function),
1706 gdb should give an error. */
1707 v = search_struct_field (name, *argp, 0, t, 0);
1708 }
1709
1710 if (!v)
1711 error ("Structure has no component named %s.", name);
1712 return v;
1713 }
1714
1715 /* C++: return 1 is NAME is a legitimate name for the destructor
1716 of type TYPE. If TYPE does not have a destructor, or
1717 if NAME is inappropriate for TYPE, an error is signaled. */
1718 int
1719 destructor_name_p (name, type)
1720 const char *name;
1721 const struct type *type;
1722 {
1723 /* destructors are a special case. */
1724
1725 if (name[0] == '~')
1726 {
1727 char *dname = type_name_no_tag (type);
1728 char *cp = strchr (dname, '<');
1729 int len;
1730
1731 /* Do not compare the template part for template classes. */
1732 if (cp == NULL)
1733 len = strlen (dname);
1734 else
1735 len = cp - dname;
1736 if (strlen (name + 1) != len || !STREQN (dname, name + 1, len))
1737 error ("name of destructor must equal name of class");
1738 else
1739 return 1;
1740 }
1741 return 0;
1742 }
1743
1744 /* Helper function for check_field: Given TYPE, a structure/union,
1745 return 1 if the component named NAME from the ultimate
1746 target structure/union is defined, otherwise, return 0. */
1747
1748 static int
1749 check_field_in (type, name)
1750 register struct type *type;
1751 const char *name;
1752 {
1753 register int i;
1754
1755 for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
1756 {
1757 char *t_field_name = TYPE_FIELD_NAME (type, i);
1758 if (t_field_name && STREQ (t_field_name, name))
1759 return 1;
1760 }
1761
1762 /* C++: If it was not found as a data field, then try to
1763 return it as a pointer to a method. */
1764
1765 /* Destructors are a special case. */
1766 if (destructor_name_p (name, type))
1767 return 1;
1768
1769 for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; --i)
1770 {
1771 if (STREQ (TYPE_FN_FIELDLIST_NAME (type, i), name))
1772 return 1;
1773 }
1774
1775 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1776 if (check_field_in (TYPE_BASECLASS (type, i), name))
1777 return 1;
1778
1779 return 0;
1780 }
1781
1782
1783 /* C++: Given ARG1, a value of type (pointer to a)* structure/union,
1784 return 1 if the component named NAME from the ultimate
1785 target structure/union is defined, otherwise, return 0. */
1786
1787 int
1788 check_field (arg1, name)
1789 register value_ptr arg1;
1790 const char *name;
1791 {
1792 register struct type *t;
1793
1794 COERCE_ARRAY (arg1);
1795
1796 t = VALUE_TYPE (arg1);
1797
1798 /* Follow pointers until we get to a non-pointer. */
1799
1800 while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
1801 t = TYPE_TARGET_TYPE (t);
1802
1803 if (TYPE_CODE (t) == TYPE_CODE_MEMBER)
1804 error ("not implemented: member type in check_field");
1805
1806 if ( TYPE_CODE (t) != TYPE_CODE_STRUCT
1807 && TYPE_CODE (t) != TYPE_CODE_UNION)
1808 error ("Internal error: `this' is not an aggregate");
1809
1810 return check_field_in (t, name);
1811 }
1812
1813 /* C++: Given an aggregate type CURTYPE, and a member name NAME,
1814 return the address of this member as a "pointer to member"
1815 type. If INTYPE is non-null, then it will be the type
1816 of the member we are looking for. This will help us resolve
1817 "pointers to member functions". This function is used
1818 to resolve user expressions of the form "DOMAIN::NAME". */
1819
1820 value_ptr
1821 value_struct_elt_for_reference (domain, offset, curtype, name, intype)
1822 struct type *domain, *curtype, *intype;
1823 int offset;
1824 char *name;
1825 {
1826 register struct type *t = curtype;
1827 register int i;
1828 value_ptr v;
1829
1830 if ( TYPE_CODE (t) != TYPE_CODE_STRUCT
1831 && TYPE_CODE (t) != TYPE_CODE_UNION)
1832 error ("Internal error: non-aggregate type to value_struct_elt_for_reference");
1833
1834 for (i = TYPE_NFIELDS (t) - 1; i >= TYPE_N_BASECLASSES (t); i--)
1835 {
1836 char *t_field_name = TYPE_FIELD_NAME (t, i);
1837
1838 if (t_field_name && STREQ (t_field_name, name))
1839 {
1840 if (TYPE_FIELD_STATIC (t, i))
1841 {
1842 char *phys_name = TYPE_FIELD_STATIC_PHYSNAME (t, i);
1843 struct symbol *sym =
1844 lookup_symbol (phys_name, 0, VAR_NAMESPACE, 0, NULL);
1845 if (sym == NULL)
1846 error ("Internal error: could not find physical static variable named %s",
1847 phys_name);
1848 return value_at (SYMBOL_TYPE (sym),
1849 (CORE_ADDR)SYMBOL_BLOCK_VALUE (sym));
1850 }
1851 if (TYPE_FIELD_PACKED (t, i))
1852 error ("pointers to bitfield members not allowed");
1853
1854 return value_from_longest
1855 (lookup_reference_type (lookup_member_type (TYPE_FIELD_TYPE (t, i),
1856 domain)),
1857 offset + (LONGEST) (TYPE_FIELD_BITPOS (t, i) >> 3));
1858 }
1859 }
1860
1861 /* C++: If it was not found as a data field, then try to
1862 return it as a pointer to a method. */
1863
1864 /* Destructors are a special case. */
1865 if (destructor_name_p (name, t))
1866 {
1867 error ("member pointers to destructors not implemented yet");
1868 }
1869
1870 /* Perform all necessary dereferencing. */
1871 while (intype && TYPE_CODE (intype) == TYPE_CODE_PTR)
1872 intype = TYPE_TARGET_TYPE (intype);
1873
1874 for (i = TYPE_NFN_FIELDS (t) - 1; i >= 0; --i)
1875 {
1876 char *t_field_name = TYPE_FN_FIELDLIST_NAME (t, i);
1877 char dem_opname[64];
1878
1879 if (strncmp(t_field_name, "__", 2)==0 ||
1880 strncmp(t_field_name, "op", 2)==0 ||
1881 strncmp(t_field_name, "type", 4)==0 )
1882 {
1883 if (cplus_demangle_opname(t_field_name, dem_opname, DMGL_ANSI))
1884 t_field_name = dem_opname;
1885 else if (cplus_demangle_opname(t_field_name, dem_opname, 0))
1886 t_field_name = dem_opname;
1887 }
1888 if (t_field_name && STREQ (t_field_name, name))
1889 {
1890 int j = TYPE_FN_FIELDLIST_LENGTH (t, i);
1891 struct fn_field *f = TYPE_FN_FIELDLIST1 (t, i);
1892
1893 if (intype == 0 && j > 1)
1894 error ("non-unique member `%s' requires type instantiation", name);
1895 if (intype)
1896 {
1897 while (j--)
1898 if (TYPE_FN_FIELD_TYPE (f, j) == intype)
1899 break;
1900 if (j < 0)
1901 error ("no member function matches that type instantiation");
1902 }
1903 else
1904 j = 0;
1905
1906 if (TYPE_FN_FIELD_STUB (f, j))
1907 check_stub_method (t, i, j);
1908 if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
1909 {
1910 return value_from_longest
1911 (lookup_reference_type
1912 (lookup_member_type (TYPE_FN_FIELD_TYPE (f, j),
1913 domain)),
1914 (LONGEST) METHOD_PTR_FROM_VOFFSET
1915 (TYPE_FN_FIELD_VOFFSET (f, j)));
1916 }
1917 else
1918 {
1919 struct symbol *s = lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
1920 0, VAR_NAMESPACE, 0, NULL);
1921 if (s == NULL)
1922 {
1923 v = 0;
1924 }
1925 else
1926 {
1927 v = read_var_value (s, 0);
1928 #if 0
1929 VALUE_TYPE (v) = lookup_reference_type
1930 (lookup_member_type (TYPE_FN_FIELD_TYPE (f, j),
1931 domain));
1932 #endif
1933 }
1934 return v;
1935 }
1936 }
1937 }
1938 for (i = TYPE_N_BASECLASSES (t) - 1; i >= 0; i--)
1939 {
1940 value_ptr v;
1941 int base_offset;
1942
1943 if (BASETYPE_VIA_VIRTUAL (t, i))
1944 base_offset = 0;
1945 else
1946 base_offset = TYPE_BASECLASS_BITPOS (t, i) / 8;
1947 v = value_struct_elt_for_reference (domain,
1948 offset + base_offset,
1949 TYPE_BASECLASS (t, i),
1950 name,
1951 intype);
1952 if (v)
1953 return v;
1954 }
1955 return 0;
1956 }
1957
1958 /* C++: return the value of the class instance variable, if one exists.
1959 Flag COMPLAIN signals an error if the request is made in an
1960 inappropriate context. */
1961
1962 value_ptr
1963 value_of_this (complain)
1964 int complain;
1965 {
1966 struct symbol *func, *sym;
1967 struct block *b;
1968 int i;
1969 static const char funny_this[] = "this";
1970 value_ptr this;
1971
1972 if (selected_frame == 0)
1973 if (complain)
1974 error ("no frame selected");
1975 else return 0;
1976
1977 func = get_frame_function (selected_frame);
1978 if (!func)
1979 {
1980 if (complain)
1981 error ("no `this' in nameless context");
1982 else return 0;
1983 }
1984
1985 b = SYMBOL_BLOCK_VALUE (func);
1986 i = BLOCK_NSYMS (b);
1987 if (i <= 0)
1988 if (complain)
1989 error ("no args, no `this'");
1990 else return 0;
1991
1992 /* Calling lookup_block_symbol is necessary to get the LOC_REGISTER
1993 symbol instead of the LOC_ARG one (if both exist). */
1994 sym = lookup_block_symbol (b, funny_this, VAR_NAMESPACE);
1995 if (sym == NULL)
1996 {
1997 if (complain)
1998 error ("current stack frame not in method");
1999 else
2000 return NULL;
2001 }
2002
2003 this = read_var_value (sym, selected_frame);
2004 if (this == 0 && complain)
2005 error ("`this' argument at unknown address");
2006 return this;
2007 }
2008
2009 /* Create a slice (sub-string, sub-array) of ARRAY, that is LENGTH elements
2010 long, starting at LOWBOUND. The result has the same lower bound as
2011 the original ARRAY. */
2012
2013 value_ptr
2014 value_slice (array, lowbound, length)
2015 value_ptr array;
2016 int lowbound, length;
2017 {
2018 if (TYPE_CODE (VALUE_TYPE (array)) == TYPE_CODE_BITSTRING)
2019 error ("not implemented - bitstring slice");
2020 if (TYPE_CODE (VALUE_TYPE (array)) != TYPE_CODE_ARRAY
2021 && TYPE_CODE (VALUE_TYPE (array)) != TYPE_CODE_STRING)
2022 error ("cannot take slice of non-array");
2023 else
2024 {
2025 struct type *slice_range_type, *slice_type;
2026 value_ptr slice;
2027 struct type *range_type = TYPE_FIELD_TYPE (VALUE_TYPE (array), 0);
2028 struct type *element_type = TYPE_TARGET_TYPE (VALUE_TYPE (array));
2029 int lowerbound = TYPE_LOW_BOUND (range_type);
2030 int upperbound = TYPE_HIGH_BOUND (range_type);
2031 int offset = (lowbound - lowerbound) * TYPE_LENGTH (element_type);
2032 if (lowbound < lowerbound || length < 0
2033 || lowbound + length - 1 > upperbound)
2034 error ("slice out of range");
2035 slice_range_type = create_range_type ((struct type*) NULL,
2036 TYPE_TARGET_TYPE (range_type),
2037 lowerbound,
2038 lowerbound + length - 1);
2039 slice_type = create_array_type ((struct type*) NULL, element_type,
2040 slice_range_type);
2041 TYPE_CODE (slice_type) = TYPE_CODE (VALUE_TYPE (array));
2042 slice = allocate_value (slice_type);
2043 if (VALUE_LAZY (array))
2044 VALUE_LAZY (slice) = 1;
2045 else
2046 memcpy (VALUE_CONTENTS (slice), VALUE_CONTENTS (array) + offset,
2047 TYPE_LENGTH (slice_type));
2048 if (VALUE_LVAL (array) == lval_internalvar)
2049 VALUE_LVAL (slice) = lval_internalvar_component;
2050 else
2051 VALUE_LVAL (slice) = VALUE_LVAL (array);
2052 VALUE_ADDRESS (slice) = VALUE_ADDRESS (array);
2053 VALUE_OFFSET (slice) = VALUE_OFFSET (array) + offset;
2054 return slice;
2055 }
2056 }
2057
2058 /* Assuming chill_varying_type (VARRAY) is true, return an equivalent
2059 value as a fixed-length array. */
2060
2061 value_ptr
2062 varying_to_slice (varray)
2063 value_ptr varray;
2064 {
2065 struct type *vtype = VALUE_TYPE (varray);
2066 LONGEST length = unpack_long (TYPE_FIELD_TYPE (vtype, 0),
2067 VALUE_CONTENTS (varray)
2068 + TYPE_FIELD_BITPOS (vtype, 0) / 8);
2069 return value_slice (value_primitive_field (varray, 0, 1, vtype), 0, length);
2070 }
2071
2072 /* Create a value for a FORTRAN complex number. Currently most of
2073 the time values are coerced to COMPLEX*16 (i.e. a complex number
2074 composed of 2 doubles. This really should be a smarter routine
2075 that figures out precision inteligently as opposed to assuming
2076 doubles. FIXME: fmb */
2077
2078 value_ptr
2079 value_literal_complex (arg1, arg2, type)
2080 value_ptr arg1;
2081 value_ptr arg2;
2082 struct type *type;
2083 {
2084 register value_ptr val;
2085 struct type *real_type = TYPE_TARGET_TYPE (type);
2086
2087 val = allocate_value (type);
2088 arg1 = value_cast (real_type, arg1);
2089 arg2 = value_cast (real_type, arg2);
2090
2091 memcpy (VALUE_CONTENTS_RAW (val),
2092 VALUE_CONTENTS (arg1), TYPE_LENGTH (real_type));
2093 memcpy (VALUE_CONTENTS_RAW (val) + TYPE_LENGTH (real_type),
2094 VALUE_CONTENTS (arg2), TYPE_LENGTH (real_type));
2095 return val;
2096 }
2097
2098 /* Cast a value into the appropriate complex data type. */
2099
2100 static value_ptr
2101 cast_into_complex (type, val)
2102 struct type *type;
2103 register value_ptr val;
2104 {
2105 struct type *real_type = TYPE_TARGET_TYPE (type);
2106 if (TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_COMPLEX)
2107 {
2108 struct type *val_real_type = TYPE_TARGET_TYPE (VALUE_TYPE (val));
2109 value_ptr re_val = allocate_value (val_real_type);
2110 value_ptr im_val = allocate_value (val_real_type);
2111
2112 memcpy (VALUE_CONTENTS_RAW (re_val),
2113 VALUE_CONTENTS (val), TYPE_LENGTH (val_real_type));
2114 memcpy (VALUE_CONTENTS_RAW (im_val),
2115 VALUE_CONTENTS (val) + TYPE_LENGTH (val_real_type),
2116 TYPE_LENGTH (val_real_type));
2117
2118 return value_literal_complex (re_val, im_val, type);
2119 }
2120 else if (TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_FLT
2121 || TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_INT)
2122 return value_literal_complex (val, value_zero (real_type, not_lval), type);
2123 else
2124 error ("cannot cast non-number to complex");
2125 }