* emultempl/elf32.em (hold_rel): New static variable.
[deliverable/binutils-gdb.git] / gdb / valops.c
CommitLineData
bd5635a1 1/* Perform non-arithmetic operations on values, for GDB.
67e9b3b3
PS
2 Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1994
3 Free Software Foundation, Inc.
bd5635a1
RP
4
5This file is part of GDB.
6
06b6c733 7This program is free software; you can redistribute it and/or modify
bd5635a1 8it under the terms of the GNU General Public License as published by
06b6c733
JG
9the Free Software Foundation; either version 2 of the License, or
10(at your option) any later version.
bd5635a1 11
06b6c733 12This program is distributed in the hope that it will be useful,
bd5635a1
RP
13but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU General Public License for more details.
16
17You should have received a copy of the GNU General Public License
06b6c733
JG
18along with this program; if not, write to the Free Software
19Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
bd5635a1 20
bd5635a1 21#include "defs.h"
bd5635a1 22#include "symtab.h"
01be6913 23#include "gdbtypes.h"
bd5635a1
RP
24#include "value.h"
25#include "frame.h"
26#include "inferior.h"
27#include "gdbcore.h"
28#include "target.h"
2e4964ad 29#include "demangle.h"
54023465 30#include "language.h"
bd5635a1
RP
31
32#include <errno.h>
6d34c236 33#include <string.h>
bd5635a1
RP
34
35/* Local functions. */
01be6913 36
a91a6192 37static int typecmp PARAMS ((int staticp, struct type *t1[], value_ptr t2[]));
01be6913 38
a91a6192 39static CORE_ADDR find_function_addr PARAMS ((value_ptr, struct type **));
01be6913 40
a91a6192 41static CORE_ADDR value_push PARAMS ((CORE_ADDR, value_ptr));
01be6913 42
a91a6192
SS
43static value_ptr search_struct_field PARAMS ((char *, value_ptr, int,
44 struct type *, int));
01be6913 45
a91a6192
SS
46static value_ptr search_struct_method PARAMS ((char *, value_ptr *,
47 value_ptr *,
48 int, int *, struct type *));
01be6913 49
a91a6192 50static int check_field_in PARAMS ((struct type *, const char *));
a163ddec 51
a91a6192 52static CORE_ADDR allocate_space_in_inferior PARAMS ((int));
9ed8604f 53
5222ca60 54static value_ptr cast_into_complex PARAMS ((struct type *, value_ptr));
9ed8604f
PS
55
56#define VALUE_SUBSTRING_START(VAL) VALUE_FRAME(VAL)
57
bd5635a1 58\f
a163ddec
MT
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
62static CORE_ADDR
63allocate_space_in_inferior (len)
64 int len;
65{
a91a6192 66 register value_ptr val;
a163ddec
MT
67 register struct symbol *sym;
68 struct minimal_symbol *msymbol;
69 struct type *type;
a91a6192 70 value_ptr blocklen;
a163ddec
MT
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 }
479fdd26 82 val = value_of_variable (sym, NULL);
a163ddec
MT
83 }
84 else
85 {
5222ca60 86 msymbol = lookup_minimal_symbol ("malloc", NULL, NULL);
a163ddec
MT
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
bd5635a1
RP
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. */
54023465 113/* In C++, casts may change pointer or object representations. */
bd5635a1 114
a91a6192 115value_ptr
bd5635a1
RP
116value_cast (type, arg2)
117 struct type *type;
a91a6192 118 register value_ptr arg2;
bd5635a1
RP
119{
120 register enum type_code code1;
121 register enum type_code code2;
122 register int scalar;
123
f91a9e05
PB
124 if (VALUE_TYPE (arg2) == type)
125 return arg2;
126
bd5635a1
RP
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
5222ca60
PB
132 COERCE_VARYING_ARRAY (arg2);
133
bd5635a1
RP
134 code1 = TYPE_CODE (type);
135 code2 = TYPE_CODE (VALUE_TYPE (arg2));
9ed8604f
PS
136
137 if (code1 == TYPE_CODE_COMPLEX)
5222ca60 138 return cast_into_complex (type, arg2);
9ed8604f
PS
139 if (code1 == TYPE_CODE_BOOL)
140 code1 = TYPE_CODE_INT;
141 if (code2 == TYPE_CODE_BOOL)
142 code2 = TYPE_CODE_INT;
143
bd5635a1 144 scalar = (code2 == TYPE_CODE_INT || code2 == TYPE_CODE_FLT
f91a9e05 145 || code2 == TYPE_CODE_ENUM || code2 == TYPE_CODE_RANGE);
bd5635a1 146
54023465
JK
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. */
a91a6192
SS
154 value_ptr v = search_struct_field (type_name_no_tag (type),
155 arg2, 0, VALUE_TYPE (arg2), 1);
54023465
JK
156 if (v)
157 {
158 VALUE_TYPE (v) = type;
159 return v;
160 }
161 }
bd5635a1
RP
162 if (code1 == TYPE_CODE_FLT && scalar)
163 return value_from_double (type, value_as_double (arg2));
f91a9e05
PB
164 else if ((code1 == TYPE_CODE_INT || code1 == TYPE_CODE_ENUM
165 || code1 == TYPE_CODE_RANGE)
bd5635a1 166 && (scalar || code2 == TYPE_CODE_PTR))
06b6c733 167 return value_from_longest (type, value_as_long (arg2));
bd5635a1
RP
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));
2a5ec41d 177 if ( TYPE_CODE (t1) == TYPE_CODE_STRUCT
bd5635a1
RP
178 && TYPE_CODE (t2) == TYPE_CODE_STRUCT
179 && TYPE_NAME (t1) != 0) /* if name unknown, can't have supercl */
180 {
a91a6192
SS
181 value_ptr v = search_struct_field (type_name_no_tag (t1),
182 value_ind (arg2), 0, t2, 1);
bd5635a1
RP
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 }
f91a9e05
PB
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 }
bd5635a1
RP
229 else if (VALUE_LVAL (arg2) == lval_memory)
230 {
231 return value_at_lazy (type, VALUE_ADDRESS (arg2) + VALUE_OFFSET (arg2));
232 }
d11c44f1
JG
233 else if (code1 == TYPE_CODE_VOID)
234 {
235 return value_zero (builtin_type_void, not_lval);
236 }
bd5635a1
RP
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
a91a6192 246value_ptr
bd5635a1
RP
247value_zero (type, lv)
248 struct type *type;
249 enum lval_type lv;
250{
a91a6192 251 register value_ptr val = allocate_value (type);
bd5635a1 252
4ed3a9ea 253 memset (VALUE_CONTENTS (val), 0, TYPE_LENGTH (type));
bd5635a1
RP
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
a91a6192 268value_ptr
bd5635a1
RP
269value_at (type, addr)
270 struct type *type;
271 CORE_ADDR addr;
272{
a91a6192
SS
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);
bd5635a1
RP
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
a91a6192 290value_ptr
bd5635a1
RP
291value_at_lazy (type, addr)
292 struct type *type;
293 CORE_ADDR addr;
294{
a91a6192
SS
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);
bd5635a1
RP
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
9cb602e1
JG
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
bd5635a1
RP
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
321int
322value_fetch_lazy (val)
a91a6192 323 register value_ptr val;
bd5635a1
RP
324{
325 CORE_ADDR addr = VALUE_ADDRESS (val) + VALUE_OFFSET (val);
326
9cb602e1
JG
327 if (TYPE_LENGTH (VALUE_TYPE (val)))
328 read_memory (addr, VALUE_CONTENTS_RAW (val),
329 TYPE_LENGTH (VALUE_TYPE (val)));
bd5635a1
RP
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
a91a6192 338value_ptr
bd5635a1 339value_assign (toval, fromval)
a91a6192 340 register value_ptr toval, fromval;
bd5635a1 341{
67e9b3b3 342 register struct type *type;
a91a6192 343 register value_ptr val;
bd5635a1 344 char raw_buffer[MAX_REGISTER_RAW_SIZE];
bd5635a1
RP
345 int use_buffer = 0;
346
30974778
JK
347 if (!toval->modifiable)
348 error ("Left operand of assignment is not a modifiable lvalue.");
349
bd5635a1 350 COERCE_ARRAY (fromval);
8e9a3f3b 351 COERCE_REF (toval);
bd5635a1 352
67e9b3b3 353 type = VALUE_TYPE (toval);
bd5635a1
RP
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
ad09cb2b 362#ifdef REGISTER_CONVERTIBLE
bd5635a1
RP
363 if (VALUE_REGNO (toval) >= 0
364 && REGISTER_CONVERTIBLE (VALUE_REGNO (toval)))
365 {
366 int regno = VALUE_REGNO (toval);
ad09cb2b
PS
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 }
bd5635a1 373 }
ad09cb2b 374#endif
bd5635a1
RP
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 {
4d52ec86
JK
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;
ad09cb2b 400
4d52ec86 401 if (len > sizeof (LONGEST))
ad09cb2b
PS
402 error ("Can't handle bitfields which don't fit in a %d bit word.",
403 sizeof (LONGEST) * HOST_CHAR_BIT);
4d52ec86 404
bd5635a1 405 read_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
4d52ec86
JK
406 buffer, len);
407 modify_field (buffer, value_as_long (fromval),
bd5635a1
RP
408 VALUE_BITPOS (toval), VALUE_BITSIZE (toval));
409 write_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
4d52ec86 410 buffer, len);
bd5635a1
RP
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 {
ad09cb2b 423 char buffer[sizeof (LONGEST)];
4d52ec86 424 int len = REGISTER_RAW_SIZE (VALUE_REGNO (toval));
ad09cb2b
PS
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 ("\
435Can't handle bitfield which doesn't fit in a single register.");
436
4d52ec86
JK
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);
bd5635a1
RP
443 }
444 else if (use_buffer)
445 write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
446 raw_buffer, use_buffer);
447 else
54023465
JK
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 }
79971d11
JK
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 ();
bd5635a1
RP
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;
4d52ec86
JK
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
bd5635a1 485 int regno;
6d34c236 486 struct frame_info *frame;
bd5635a1
RP
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,
51b57ded 506 (int *)NULL, (CORE_ADDR *)NULL,
bd5635a1
RP
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,
479fdd26 513 value_as_long (fromval),
bd5635a1
RP
514 VALUE_BITPOS (toval), VALUE_BITSIZE (toval));
515 else if (use_buffer)
4ed3a9ea 516 memcpy (buffer + byte_offset, raw_buffer, use_buffer);
bd5635a1 517 else
4ed3a9ea
FF
518 memcpy (buffer + byte_offset, VALUE_CONTENTS (fromval),
519 TYPE_LENGTH (type));
bd5635a1
RP
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:
30974778 549 error ("Left operand of assignment is not an lvalue.");
bd5635a1
RP
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);
4ed3a9ea
FF
562 memcpy (val, toval, VALUE_CONTENTS_RAW (val) - (char *) val);
563 memcpy (VALUE_CONTENTS_RAW (val), VALUE_CONTENTS (fromval),
564 TYPE_LENGTH (type));
bd5635a1
RP
565 VALUE_TYPE (val) = type;
566
567 return val;
568}
569
570/* Extend a value VAL to COUNT repetitions of its type. */
571
a91a6192 572value_ptr
bd5635a1 573value_repeat (arg1, count)
a91a6192 574 value_ptr arg1;
bd5635a1
RP
575 int count;
576{
a91a6192 577 register value_ptr val;
bd5635a1
RP
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
a91a6192 595value_ptr
479fdd26 596value_of_variable (var, b)
bd5635a1 597 struct symbol *var;
479fdd26 598 struct block *b;
bd5635a1 599{
a91a6192 600 value_ptr val;
6d34c236 601 struct frame_info *frame;
bd5635a1 602
479fdd26
JK
603 if (b == NULL)
604 /* Use selected frame. */
6d34c236 605 frame = NULL;
479fdd26
JK
606 else
607 {
6d34c236
PB
608 frame = block_innermost_frame (b);
609 if (frame == NULL && symbol_read_needs_frame (var))
479fdd26
JK
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 }
6d34c236 619 val = read_var_value (var, frame);
bd5635a1 620 if (val == 0)
2e4964ad 621 error ("Address of symbol \"%s\" is unknown.", SYMBOL_SOURCE_NAME (var));
bd5635a1
RP
622 return val;
623}
624
a163ddec
MT
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 */
bd5635a1 647
a91a6192 648value_ptr
bd5635a1 649value_coerce_array (arg1)
a91a6192 650 value_ptr arg1;
bd5635a1
RP
651{
652 register struct type *type;
bd5635a1
RP
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. */
852b3831
PB
658 if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_ARRAY
659 || TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_STRING)
bd5635a1
RP
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
06b6c733 666 return value_from_longest (lookup_pointer_type (type),
bd5635a1 667 (LONGEST) (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
bd5635a1
RP
668}
669
670/* Given a value which is a function, return a value which is a pointer
671 to it. */
672
a91a6192 673value_ptr
bd5635a1 674value_coerce_function (arg1)
a91a6192 675 value_ptr arg1;
bd5635a1 676{
bd5635a1
RP
677
678 if (VALUE_LVAL (arg1) != lval_memory)
679 error ("Attempt to take address of value not located in memory.");
680
06b6c733 681 return value_from_longest (lookup_pointer_type (VALUE_TYPE (arg1)),
bd5635a1 682 (LONGEST) (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
bd5635a1
RP
683}
684
685/* Return a pointer value for the object for which ARG1 is the contents. */
686
a91a6192 687value_ptr
bd5635a1 688value_addr (arg1)
a91a6192 689 value_ptr arg1;
bd5635a1 690{
8e9a3f3b
PB
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. */
a91a6192 697 value_ptr arg2 = value_copy (arg1);
8e9a3f3b
PB
698 VALUE_TYPE (arg2) = lookup_pointer_type (TYPE_TARGET_TYPE (type));
699 return arg2;
700 }
f91a9e05
PB
701 if (current_language->c_style_arrays
702 && (VALUE_REPEATED (arg1)
703 || TYPE_CODE (type) == TYPE_CODE_ARRAY))
bd5635a1 704 return value_coerce_array (arg1);
8e9a3f3b 705 if (TYPE_CODE (type) == TYPE_CODE_FUNC)
bd5635a1
RP
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
8e9a3f3b 711 return value_from_longest (lookup_pointer_type (type),
bd5635a1 712 (LONGEST) (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
bd5635a1
RP
713}
714
715/* Given a value of a pointer type, apply the C unary * operator to it. */
716
a91a6192 717value_ptr
bd5635a1 718value_ind (arg1)
a91a6192 719 value_ptr arg1;
bd5635a1
RP
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)),
d11c44f1 735 value_as_pointer (arg1));
bd5635a1
RP
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
744CORE_ADDR
34df79fc 745push_word (sp, word)
bd5635a1 746 CORE_ADDR sp;
67e9b3b3 747 unsigned LONGEST word;
bd5635a1 748{
67e9b3b3 749 register int len = REGISTER_SIZE;
479fdd26 750 char buffer[MAX_REGISTER_RAW_SIZE];
bd5635a1 751
479fdd26 752 store_unsigned_integer (buffer, len, word);
bd5635a1
RP
753#if 1 INNER_THAN 2
754 sp -= len;
479fdd26 755 write_memory (sp, buffer, len);
bd5635a1 756#else /* stack grows upward */
479fdd26 757 write_memory (sp, buffer, len);
bd5635a1
RP
758 sp += len;
759#endif /* stack grows upward */
760
761 return sp;
762}
763
764/* Push LEN bytes with data at BUFFER. */
765
766CORE_ADDR
767push_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
01be6913 785static CORE_ADDR
bd5635a1
RP
786value_push (sp, arg)
787 register CORE_ADDR sp;
a91a6192 788 value_ptr arg;
bd5635a1
RP
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
5222ca60 804 for arguments to be passed to C functions.
bd5635a1 805
5222ca60
PB
806 If PARAM_TYPE is non-NULL, it is the expected parameter type. */
807
808static value_ptr
809value_arg_coerce (arg, param_type)
a91a6192 810 value_ptr arg;
5222ca60 811 struct type *param_type;
bd5635a1 812{
5222ca60 813 register struct type *type = param_type ? param_type : VALUE_TYPE (arg);
bd5635a1 814
5222ca60
PB
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 }
479fdd26 840
b5728692 841#if 1 /* FIXME: This is only a temporary patch. -fnf */
f91a9e05
PB
842 if (current_language->c_style_arrays
843 && (VALUE_REPEATED (arg)
844 || TYPE_CODE (VALUE_TYPE (arg)) == TYPE_CODE_ARRAY))
b5728692 845 arg = value_coerce_array (arg);
b5728692 846#endif
bd5635a1 847
5222ca60 848 return value_cast (type, arg);
bd5635a1
RP
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
01be6913 854static CORE_ADDR
bd5635a1 855find_function_addr (function, retval_type)
a91a6192 856 value_ptr function;
bd5635a1
RP
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 {
d11c44f1 875 funaddr = value_as_pointer (function);
bd5635a1
RP
876 if (TYPE_CODE (TYPE_TARGET_TYPE (ftype)) == TYPE_CODE_FUNC
877 || TYPE_CODE (TYPE_TARGET_TYPE (ftype)) == TYPE_CODE_METHOD)
9ed8604f
PS
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 }
bd5635a1
RP
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)
d11c44f1 895 funaddr = value_as_pointer (value_addr (function));
bd5635a1
RP
896 else
897 /* Handle integer used as address of a function. */
d11c44f1 898 funaddr = (CORE_ADDR) value_as_long (function);
bd5635a1
RP
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
5222ca60
PB
924 during the execution of the function.
925
926 ARGS is modified to contain coerced values. */
bd5635a1 927
a91a6192 928value_ptr
bd5635a1 929call_function_by_hand (function, nargs, args)
a91a6192 930 value_ptr function;
bd5635a1 931 int nargs;
a91a6192 932 value_ptr *args;
bd5635a1
RP
933{
934 register CORE_ADDR sp;
935 register int i;
936 CORE_ADDR start_sp;
67e9b3b3
PS
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)];
bd5635a1
RP
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;
9f739abd 951 CORE_ADDR real_pc;
5222ca60 952 struct type *ftype = SYMBOL_TYPE (function);
bd5635a1 953
e17960fb
JG
954 if (!target_has_execution)
955 noprocess();
956
bd5635a1
RP
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
54023465 965 old_sp = sp = read_sp ();
bd5635a1
RP
966
967#if 1 INNER_THAN 2 /* Stack grows down */
9ed8604f 968 sp -= sizeof dummy1;
bd5635a1
RP
969 start_sp = sp;
970#else /* Stack grows up */
971 start_sp = sp;
9ed8604f 972 sp += sizeof dummy1;
bd5635a1
RP
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. */
67e9b3b3
PS
991 for (i = 0; i < sizeof dummy / sizeof (dummy[0]); i++)
992 store_unsigned_integer (&dummy1[i * REGISTER_SIZE],
993 REGISTER_SIZE,
34df79fc 994 (unsigned LONGEST)dummy[i]);
9f739abd
SG
995
996#ifdef GDB_TARGET_IS_HPPA
b5728692
SG
997 real_pc = FIX_CALL_DUMMY (dummy1, start_sp, funaddr, nargs, args,
998 value_type, using_gcc);
9f739abd 999#else
bd5635a1
RP
1000 FIX_CALL_DUMMY (dummy1, start_sp, funaddr, nargs, args,
1001 value_type, using_gcc);
9f739abd
SG
1002 real_pc = start_sp;
1003#endif
bd5635a1
RP
1004
1005#if CALL_DUMMY_LOCATION == ON_STACK
9ed8604f 1006 write_memory (start_sp, (char *)dummy1, sizeof dummy1);
cef4c2e7 1007#endif /* On stack. */
bd5635a1 1008
bd5635a1
RP
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 {
84d82b1c 1013 extern CORE_ADDR text_end;
bd5635a1
RP
1014 static checked = 0;
1015 if (!checked)
9ed8604f 1016 for (start_sp = text_end - sizeof dummy1; start_sp < text_end; ++start_sp)
bd5635a1
RP
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;
9ed8604f
PS
1021 real_pc = text_end - sizeof dummy1;
1022 write_memory (real_pc, (char *)dummy1, sizeof dummy1);
bd5635a1 1023 }
cef4c2e7
PS
1024#endif /* Before text_end. */
1025
1026#if CALL_DUMMY_LOCATION == AFTER_TEXT_END
bd5635a1 1027 {
84d82b1c 1028 extern CORE_ADDR text_end;
bd5635a1
RP
1029 int errcode;
1030 sp = old_sp;
30d20d15 1031 real_pc = text_end;
9ed8604f 1032 errcode = target_write_memory (real_pc, (char *)dummy1, sizeof dummy1);
bd5635a1
RP
1033 if (errcode != 0)
1034 error ("Cannot write text segment -- call_function failed");
1035 }
1036#endif /* After text_end. */
cef4c2e7
PS
1037
1038#if CALL_DUMMY_LOCATION == AT_ENTRY_POINT
1039 real_pc = funaddr;
1040#endif /* At entry point. */
bd5635a1
RP
1041
1042#ifdef lint
1043 sp = old_sp; /* It really is used, for some ifdef's... */
1044#endif
1045
5222ca60
PB
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
bd5635a1
RP
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--)
5222ca60 1068 len += TYPE_LENGTH (VALUE_TYPE (args[i]));
bd5635a1
RP
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 {
a91a6192 1096 /* This is a machine like the sparc, where we may need to pass a pointer
bd5635a1 1097 to the structure, not the structure itself. */
a91a6192
SS
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;
bd5635a1 1103#if !(1 INNER_THAN 2)
a91a6192
SS
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;
bd5635a1 1107#endif
a91a6192
SS
1108 /* Push the structure. */
1109 sp = value_push (sp, args[i]);
bd5635a1 1110#if 1 INNER_THAN 2
a91a6192
SS
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;
bd5635a1 1114#endif
a91a6192
SS
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 }
bd5635a1
RP
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--)
5222ca60 1127 sp = value_push (sp, args[i]);
bd5635a1
RP
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
5632cd56 1153 wouldn't happen. (See store_inferior_registers in sparc-nat.c.) */
54023465 1154 write_sp (sp);
bd5635a1 1155
bd5635a1
RP
1156 {
1157 char retbuf[REGISTER_BYTES];
54023465
JK
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);
30974778 1182 /* FIXME-32x64: assumes funaddr fits in a long. */
cef4c2e7 1183 sprintf (name, format, (unsigned long) funaddr);
54023465 1184 }
bd5635a1
RP
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. */
860a1754
JK
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. */
30d20d15 1199 bpstat_clear (&inf_status.stop_bpstat);
860a1754
JK
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 ("\
1211The program being debugged stopped while in a function called from GDB.\n\
1212When the function (%s) is done executing, GDB will silently\n\
1213stop (instead of continuing to evaluate the expression containing\n\
1214the function call).", name);
1215 }
bd5635a1
RP
1216
1217 do_cleanups (old_chain);
1218
860a1754 1219 /* Figure out the value returned by the function. */
bd5635a1
RP
1220 return value_being_returned (value_type, retbuf, struct_return);
1221 }
1222}
1223#else /* no CALL_DUMMY. */
a91a6192 1224value_ptr
bd5635a1 1225call_function_by_hand (function, nargs, args)
a91a6192 1226 value_ptr function;
bd5635a1 1227 int nargs;
a91a6192 1228 value_ptr *args;
bd5635a1
RP
1229{
1230 error ("Cannot invoke functions on this machine.");
1231}
1232#endif /* no CALL_DUMMY. */
a163ddec 1233
bd5635a1 1234\f
a163ddec
MT
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). */
bd5635a1 1244
a91a6192 1245value_ptr
a163ddec
MT
1246value_array (lowbound, highbound, elemvec)
1247 int lowbound;
1248 int highbound;
a91a6192 1249 value_ptr *elemvec;
bd5635a1 1250{
a163ddec
MT
1251 int nelem;
1252 int idx;
1253 int typelength;
a91a6192 1254 value_ptr val;
a163ddec
MT
1255 struct type *rangetype;
1256 struct type *arraytype;
1257 CORE_ADDR addr;
bd5635a1 1258
a163ddec
MT
1259 /* Validate that the bounds are reasonable and that each of the elements
1260 have the same size. */
bd5635a1 1261
a163ddec
MT
1262 nelem = highbound - lowbound + 1;
1263 if (nelem <= 0)
bd5635a1 1264 {
a163ddec 1265 error ("bad array bounds (%d, %d)", lowbound, highbound);
bd5635a1 1266 }
a163ddec
MT
1267 typelength = TYPE_LENGTH (VALUE_TYPE (elemvec[0]));
1268 for (idx = 0; idx < nelem; idx++)
bd5635a1 1269 {
a163ddec
MT
1270 if (TYPE_LENGTH (VALUE_TYPE (elemvec[idx])) != typelength)
1271 {
1272 error ("array elements must all be the same size");
1273 }
bd5635a1
RP
1274 }
1275
a163ddec
MT
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
a91a6192 1306value_ptr
a163ddec
MT
1307value_string (ptr, len)
1308 char *ptr;
1309 int len;
1310{
a91a6192 1311 value_ptr val;
5222ca60 1312 int lowbound = current_language->string_lower_bound;
f91a9e05 1313 struct type *rangetype = create_range_type ((struct type *) NULL,
5222ca60
PB
1314 builtin_type_int,
1315 lowbound, len + lowbound - 1);
f91a9e05
PB
1316 struct type *stringtype
1317 = create_string_type ((struct type *) NULL, rangetype);
a163ddec
MT
1318 CORE_ADDR addr;
1319
f91a9e05
PB
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
a163ddec
MT
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
a163ddec
MT
1334 val = value_at_lazy (stringtype, addr);
1335 return (val);
bd5635a1 1336}
6d34c236
PB
1337
1338value_ptr
1339value_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}
bd5635a1 1352\f
479fdd26
JK
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.
a163ddec
MT
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
1368static int
1369typecmp (staticp, t1, t2)
1370 int staticp;
1371 struct type *t1[];
a91a6192 1372 value_ptr t2[];
a163ddec
MT
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 {
40620258 1386 struct type *tt1, *tt2;
a163ddec
MT
1387 if (! t2[i])
1388 return i+1;
40620258
KH
1389 tt1 = t1[i];
1390 tt2 = VALUE_TYPE(t2[i]);
1391 if (TYPE_CODE (tt1) == TYPE_CODE_REF
479fdd26 1392 /* We should be doing hairy argument matching, as below. */
40620258 1393 && (TYPE_CODE (TYPE_TARGET_TYPE (tt1)) == TYPE_CODE (tt2)))
479fdd26
JK
1394 {
1395 t2[i] = value_addr (t2[i]);
1396 continue;
1397 }
1398
40620258
KH
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. */
479fdd26
JK
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. */
a163ddec
MT
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
bd5635a1
RP
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,
2a5ec41d 1420 and search in it assuming it has (class) type TYPE.
d3bab255
JK
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. */
bd5635a1 1425
a91a6192 1426static value_ptr
d3bab255 1427search_struct_field (name, arg1, offset, type, looking_for_baseclass)
bd5635a1 1428 char *name;
a91a6192 1429 register value_ptr arg1;
bd5635a1
RP
1430 int offset;
1431 register struct type *type;
d3bab255 1432 int looking_for_baseclass;
bd5635a1
RP
1433{
1434 int i;
1435
1436 check_stub_type (type);
1437
d3bab255
JK
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
2e4964ad 1443 if (t_field_name && STREQ (t_field_name, name))
d3bab255 1444 {
a91a6192 1445 value_ptr v;
01be6913
PB
1446 if (TYPE_FIELD_STATIC (type, i))
1447 {
1448 char *phys_name = TYPE_FIELD_STATIC_PHYSNAME (type, i);
1449 struct symbol *sym =
2e4964ad
FF
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);
01be6913
PB
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);
d3bab255
JK
1459 if (v == 0)
1460 error("there is no field named %s", name);
1461 return v;
1462 }
6d34c236
PB
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 }
d3bab255 1474 }
bd5635a1
RP
1475
1476 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1477 {
a91a6192 1478 value_ptr v;
bd5635a1 1479 /* If we are looking for baseclasses, this is what we get when we
54023465
JK
1480 hit them. But it could happen that the base part's member name
1481 is not yet filled in. */
d3bab255 1482 int found_baseclass = (looking_for_baseclass
54023465 1483 && TYPE_BASECLASS_NAME (type, i) != NULL
2e4964ad 1484 && STREQ (name, TYPE_BASECLASS_NAME (type, i)));
bd5635a1
RP
1485
1486 if (BASETYPE_VIA_VIRTUAL (type, i))
1487 {
a91a6192 1488 value_ptr v2;
bac89d6c 1489 /* Fix to use baseclass_offset instead. FIXME */
d11c44f1
JG
1490 baseclass_addr (type, i, VALUE_CONTENTS (arg1) + offset,
1491 &v2, (int *)NULL);
bd5635a1
RP
1492 if (v2 == 0)
1493 error ("virtual baseclass botch");
1494 if (found_baseclass)
1495 return v2;
d3bab255
JK
1496 v = search_struct_field (name, v2, 0, TYPE_BASECLASS (type, i),
1497 looking_for_baseclass);
bd5635a1 1498 }
01be6913 1499 else if (found_baseclass)
bd5635a1
RP
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,
d3bab255
JK
1504 TYPE_BASECLASS (type, i),
1505 looking_for_baseclass);
bd5635a1
RP
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,
2a5ec41d 1513 and search in it assuming it has (class) type TYPE.
cef4c2e7 1514 If found, return value, else if name matched and args not return (value)-1,
5b5c6d94 1515 else return NULL. */
bd5635a1 1516
a91a6192 1517static value_ptr
bac89d6c 1518search_struct_method (name, arg1p, args, offset, static_memfuncp, type)
bd5635a1 1519 char *name;
a91a6192 1520 register value_ptr *arg1p, *args;
bd5635a1
RP
1521 int offset, *static_memfuncp;
1522 register struct type *type;
1523{
1524 int i;
a91a6192 1525 value_ptr v;
67e9b3b3 1526 int name_matched = 0;
6ebc9cdd 1527 char dem_opname[64];
bd5635a1
RP
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);
6ebc9cdd
KH
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 }
2e4964ad 1542 if (t_field_name && STREQ (t_field_name, name))
bd5635a1 1543 {
d3bab255 1544 int j = TYPE_FN_FIELDLIST_LENGTH (type, i) - 1;
bd5635a1 1545 struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
5b5c6d94 1546 name_matched = 1;
bd5635a1 1547
d3bab255
JK
1548 if (j > 0 && args == 0)
1549 error ("cannot resolve overloaded method `%s'", name);
1550 while (j >= 0)
bd5635a1 1551 {
8e9a3f3b 1552 if (TYPE_FN_FIELD_STUB (f, j))
bd5635a1
RP
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))
a91a6192 1558 return value_virtual_fn_field (arg1p, f, j, type, offset);
bd5635a1
RP
1559 if (TYPE_FN_FIELD_STATIC_P (f, j) && static_memfuncp)
1560 *static_memfuncp = 1;
a91a6192
SS
1561 v = value_fn_field (arg1p, f, j, type, offset);
1562 if (v != NULL) return v;
bd5635a1 1563 }
d3bab255 1564 j--;
bd5635a1
RP
1565 }
1566 }
1567 }
1568
1569 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1570 {
01be6913 1571 int base_offset;
bd5635a1
RP
1572
1573 if (BASETYPE_VIA_VIRTUAL (type, i))
1574 {
9f739abd 1575 base_offset = baseclass_offset (type, i, *arg1p, offset);
bac89d6c 1576 if (base_offset == -1)
bd5635a1 1577 error ("virtual baseclass botch");
bd5635a1 1578 }
01be6913
PB
1579 else
1580 {
01be6913
PB
1581 base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
1582 }
bac89d6c 1583 v = search_struct_method (name, arg1p, args, base_offset + offset,
bd5635a1 1584 static_memfuncp, TYPE_BASECLASS (type, i));
a91a6192 1585 if (v == (value_ptr) -1)
5b5c6d94
KH
1586 {
1587 name_matched = 1;
1588 }
1589 else if (v)
bac89d6c
FF
1590 {
1591/* FIXME-bothner: Why is this commented out? Why is it here? */
1592/* *arg1p = arg1_tmp;*/
1593 return v;
1594 }
bd5635a1 1595 }
a91a6192 1596 if (name_matched) return (value_ptr) -1;
5b5c6d94 1597 else return NULL;
bd5635a1
RP
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
a91a6192 1614value_ptr
bd5635a1 1615value_struct_elt (argp, args, name, static_memfuncp, err)
a91a6192 1616 register value_ptr *argp, *args;
bd5635a1
RP
1617 char *name;
1618 int *static_memfuncp;
1619 char *err;
1620{
1621 register struct type *t;
a91a6192 1622 value_ptr v;
bd5635a1
RP
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 {
bd5635a1 1632 *argp = value_ind (*argp);
f2ebc25f
JK
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);
bd5635a1
RP
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
2a5ec41d 1642 if ( TYPE_CODE (t) != TYPE_CODE_STRUCT
bd5635a1
RP
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
d3bab255 1654 /* Try as a field first, because if we succeed, there
bd5635a1 1655 is less work to be done. */
d3bab255 1656 v = search_struct_field (name, *argp, 0, t, 0);
bd5635a1
RP
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
bac89d6c 1666 v = search_struct_method (name, argp, args, 0, static_memfuncp, t);
bd5635a1 1667
a91a6192 1668 if (v == (value_ptr) -1)
67e9b3b3
PS
1669 error ("Cannot take address of a method");
1670 else if (v == 0)
bd5635a1
RP
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. */
a91a6192
SS
1685 v = value_fn_field (NULL, TYPE_FN_FIELDLIST1 (t, 0),
1686 TYPE_FN_FIELDLIST_LENGTH (t, 0), 0, 0);
40620258
KH
1687 if (!v) error("could not find destructor function named %s.", name);
1688 else return v;
bd5635a1
RP
1689 }
1690 else
1691 {
1692 error ("destructor should not have any argument");
1693 }
1694 }
1695 else
bac89d6c 1696 v = search_struct_method (name, argp, args, 0, static_memfuncp, t);
bd5635a1 1697
a91a6192 1698 if (v == (value_ptr) -1)
5b5c6d94
KH
1699 {
1700 error("Argument list of %s mismatch with component in the structure.", name);
1701 }
1702 else if (v == 0)
bd5635a1
RP
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. */
d3bab255 1707 v = search_struct_field (name, *argp, 0, t, 0);
bd5635a1
RP
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. */
1718int
1719destructor_name_p (name, type)
7919c3ed
JG
1720 const char *name;
1721 const struct type *type;
bd5635a1
RP
1722{
1723 /* destructors are a special case. */
1724
1725 if (name[0] == '~')
1726 {
1727 char *dname = type_name_no_tag (type);
6d34c236
PB
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))
bd5635a1
RP
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
1748static int
1749check_field_in (type, name)
1750 register struct type *type;
01be6913 1751 const char *name;
bd5635a1
RP
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);
2e4964ad 1758 if (t_field_name && STREQ (t_field_name, name))
bd5635a1
RP
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 {
2e4964ad 1771 if (STREQ (TYPE_FN_FIELDLIST_NAME (type, i), name))
bd5635a1
RP
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
1787int
1788check_field (arg1, name)
a91a6192 1789 register value_ptr arg1;
7919c3ed 1790 const char *name;
bd5635a1
RP
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
2a5ec41d 1806 if ( TYPE_CODE (t) != TYPE_CODE_STRUCT
bd5635a1
RP
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
01be6913 1813/* C++: Given an aggregate type CURTYPE, and a member name NAME,
2a5ec41d 1814 return the address of this member as a "pointer to member"
bd5635a1
RP
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
01be6913
PB
1817 "pointers to member functions". This function is used
1818 to resolve user expressions of the form "DOMAIN::NAME". */
bd5635a1 1819
a91a6192 1820value_ptr
51b57ded 1821value_struct_elt_for_reference (domain, offset, curtype, name, intype)
01be6913 1822 struct type *domain, *curtype, *intype;
51b57ded 1823 int offset;
bd5635a1
RP
1824 char *name;
1825{
01be6913 1826 register struct type *t = curtype;
bd5635a1 1827 register int i;
a91a6192 1828 value_ptr v;
bd5635a1 1829
2a5ec41d 1830 if ( TYPE_CODE (t) != TYPE_CODE_STRUCT
bd5635a1 1831 && TYPE_CODE (t) != TYPE_CODE_UNION)
01be6913 1832 error ("Internal error: non-aggregate type to value_struct_elt_for_reference");
bd5635a1 1833
01be6913 1834 for (i = TYPE_NFIELDS (t) - 1; i >= TYPE_N_BASECLASSES (t); i--)
bd5635a1 1835 {
01be6913
PB
1836 char *t_field_name = TYPE_FIELD_NAME (t, i);
1837
2e4964ad 1838 if (t_field_name && STREQ (t_field_name, name))
bd5635a1 1839 {
01be6913 1840 if (TYPE_FIELD_STATIC (t, i))
bd5635a1 1841 {
01be6913
PB
1842 char *phys_name = TYPE_FIELD_STATIC_PHYSNAME (t, i);
1843 struct symbol *sym =
1844 lookup_symbol (phys_name, 0, VAR_NAMESPACE, 0, NULL);
2e4964ad
FF
1845 if (sym == NULL)
1846 error ("Internal error: could not find physical static variable named %s",
01be6913
PB
1847 phys_name);
1848 return value_at (SYMBOL_TYPE (sym),
1849 (CORE_ADDR)SYMBOL_BLOCK_VALUE (sym));
bd5635a1 1850 }
01be6913
PB
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)),
51b57ded 1857 offset + (LONGEST) (TYPE_FIELD_BITPOS (t, i) >> 3));
bd5635a1 1858 }
bd5635a1
RP
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. */
bd5635a1
RP
1863
1864 /* Destructors are a special case. */
1865 if (destructor_name_p (name, t))
1866 {
2a5ec41d 1867 error ("member pointers to destructors not implemented yet");
bd5635a1
RP
1868 }
1869
1870 /* Perform all necessary dereferencing. */
1871 while (intype && TYPE_CODE (intype) == TYPE_CODE_PTR)
1872 intype = TYPE_TARGET_TYPE (intype);
1873
01be6913 1874 for (i = TYPE_NFN_FIELDS (t) - 1; i >= 0; --i)
bd5635a1 1875 {
852b3831
PB
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))
bd5635a1 1889 {
01be6913
PB
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)
bd5635a1 1896 {
01be6913
PB
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)),
bac89d6c
FF
1914 (LONGEST) METHOD_PTR_FROM_VOFFSET
1915 (TYPE_FN_FIELD_VOFFSET (f, j)));
01be6913
PB
1916 }
1917 else
1918 {
1919 struct symbol *s = lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
1920 0, VAR_NAMESPACE, 0, NULL);
35fcebce
PB
1921 if (s == NULL)
1922 {
1923 v = 0;
1924 }
1925 else
1926 {
1927 v = read_var_value (s, 0);
01be6913 1928#if 0
35fcebce
PB
1929 VALUE_TYPE (v) = lookup_reference_type
1930 (lookup_member_type (TYPE_FN_FIELD_TYPE (f, j),
1931 domain));
01be6913 1932#endif
bd5635a1 1933 }
35fcebce 1934 return v;
bd5635a1
RP
1935 }
1936 }
35fcebce 1937 }
01be6913
PB
1938 for (i = TYPE_N_BASECLASSES (t) - 1; i >= 0; i--)
1939 {
a91a6192 1940 value_ptr v;
51b57ded
FF
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;
01be6913 1947 v = value_struct_elt_for_reference (domain,
51b57ded 1948 offset + base_offset,
01be6913
PB
1949 TYPE_BASECLASS (t, i),
1950 name,
1951 intype);
1952 if (v)
1953 return v;
bd5635a1
RP
1954 }
1955 return 0;
1956}
1957
bd5635a1
RP
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. */
6d34c236 1961
a91a6192 1962value_ptr
bd5635a1
RP
1963value_of_this (complain)
1964 int complain;
1965{
bd5635a1
RP
1966 struct symbol *func, *sym;
1967 struct block *b;
1968 int i;
1969 static const char funny_this[] = "this";
a91a6192 1970 value_ptr this;
bd5635a1
RP
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}
a91a6192 2008
f91a9e05
PB
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
2013value_ptr
2014value_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
2061value_ptr
2062varying_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
a91a6192
SS
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
2078value_ptr
5222ca60 2079value_literal_complex (arg1, arg2, type)
a91a6192
SS
2080 value_ptr arg1;
2081 value_ptr arg2;
5222ca60 2082 struct type *type;
a91a6192 2083{
a91a6192 2084 register value_ptr val;
5222ca60 2085 struct type *real_type = TYPE_TARGET_TYPE (type);
a91a6192 2086
5222ca60
PB
2087 val = allocate_value (type);
2088 arg1 = value_cast (real_type, arg1);
2089 arg2 = value_cast (real_type, arg2);
a91a6192 2090
5222ca60
PB
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));
a91a6192
SS
2095 return val;
2096}
9ed8604f 2097
5222ca60 2098/* Cast a value into the appropriate complex data type. */
9ed8604f
PS
2099
2100static value_ptr
5222ca60 2101cast_into_complex (type, val)
9ed8604f
PS
2102 struct type *type;
2103 register value_ptr val;
2104{
5222ca60
PB
2105 struct type *real_type = TYPE_TARGET_TYPE (type);
2106 if (TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_COMPLEX)
9ed8604f 2107 {
5222ca60
PB
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);
9ed8604f 2111
5222ca60
PB
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));
9ed8604f 2117
5222ca60 2118 return value_literal_complex (re_val, im_val, type);
9ed8604f 2119 }
5222ca60
PB
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);
9ed8604f 2123 else
5222ca60 2124 error ("cannot cast non-number to complex");
9ed8604f 2125}
This page took 0.327 seconds and 4 git commands to generate.