* corelow.c, exec.c, inftarg.c, m3-nat.c, op50-rom.c, procfs.c,
[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>
33
34/* Local functions. */
01be6913 35
a91a6192 36static int typecmp PARAMS ((int staticp, struct type *t1[], value_ptr t2[]));
01be6913 37
a91a6192 38static CORE_ADDR find_function_addr PARAMS ((value_ptr, struct type **));
01be6913 39
a91a6192 40static CORE_ADDR value_push PARAMS ((CORE_ADDR, value_ptr));
01be6913 41
a91a6192 42static CORE_ADDR value_arg_push PARAMS ((CORE_ADDR, value_ptr));
01be6913 43
a91a6192
SS
44static value_ptr search_struct_field PARAMS ((char *, value_ptr, int,
45 struct type *, int));
01be6913 46
a91a6192
SS
47static value_ptr search_struct_method PARAMS ((char *, value_ptr *,
48 value_ptr *,
49 int, int *, struct type *));
01be6913 50
a91a6192 51static int check_field_in PARAMS ((struct type *, const char *));
a163ddec 52
a91a6192 53static CORE_ADDR allocate_space_in_inferior PARAMS ((int));
9ed8604f
PS
54
55static value_ptr f77_cast_into_complex PARAMS ((struct type *, value_ptr));
56
57static value_ptr f77_assign_from_literal_string PARAMS ((value_ptr,
58 value_ptr));
59
60static value_ptr f77_assign_from_literal_complex PARAMS ((value_ptr,
61 value_ptr));
62
63#define VALUE_SUBSTRING_START(VAL) VALUE_FRAME(VAL)
64
bd5635a1 65\f
a163ddec
MT
66/* Allocate NBYTES of space in the inferior using the inferior's malloc
67 and return a value that is a pointer to the allocated space. */
68
69static CORE_ADDR
70allocate_space_in_inferior (len)
71 int len;
72{
a91a6192 73 register value_ptr val;
a163ddec
MT
74 register struct symbol *sym;
75 struct minimal_symbol *msymbol;
76 struct type *type;
a91a6192 77 value_ptr blocklen;
a163ddec
MT
78 LONGEST maddr;
79
80 /* Find the address of malloc in the inferior. */
81
82 sym = lookup_symbol ("malloc", 0, VAR_NAMESPACE, 0, NULL);
83 if (sym != NULL)
84 {
85 if (SYMBOL_CLASS (sym) != LOC_BLOCK)
86 {
87 error ("\"malloc\" exists in this program but is not a function.");
88 }
479fdd26 89 val = value_of_variable (sym, NULL);
a163ddec
MT
90 }
91 else
92 {
93 msymbol = lookup_minimal_symbol ("malloc", (struct objfile *) NULL);
94 if (msymbol != NULL)
95 {
96 type = lookup_pointer_type (builtin_type_char);
97 type = lookup_function_type (type);
98 type = lookup_pointer_type (type);
99 maddr = (LONGEST) SYMBOL_VALUE_ADDRESS (msymbol);
100 val = value_from_longest (type, maddr);
101 }
102 else
103 {
104 error ("evaluation of this expression requires the program to have a function \"malloc\".");
105 }
106 }
107
108 blocklen = value_from_longest (builtin_type_int, (LONGEST) len);
109 val = call_function_by_hand (val, 1, &blocklen);
110 if (value_logical_not (val))
111 {
112 error ("No memory available to program.");
113 }
114 return (value_as_long (val));
115}
116
bd5635a1
RP
117/* Cast value ARG2 to type TYPE and return as a value.
118 More general than a C cast: accepts any two types of the same length,
119 and if ARG2 is an lvalue it can be cast into anything at all. */
54023465 120/* In C++, casts may change pointer or object representations. */
bd5635a1 121
a91a6192 122value_ptr
bd5635a1
RP
123value_cast (type, arg2)
124 struct type *type;
a91a6192 125 register value_ptr arg2;
bd5635a1
RP
126{
127 register enum type_code code1;
128 register enum type_code code2;
129 register int scalar;
130
131 /* Coerce arrays but not enums. Enums will work as-is
132 and coercing them would cause an infinite recursion. */
133 if (TYPE_CODE (VALUE_TYPE (arg2)) != TYPE_CODE_ENUM)
134 COERCE_ARRAY (arg2);
135
136 code1 = TYPE_CODE (type);
137 code2 = TYPE_CODE (VALUE_TYPE (arg2));
9ed8604f
PS
138
139 if (code1 == TYPE_CODE_COMPLEX)
140 return f77_cast_into_complex (type, arg2);
141 if (code1 == TYPE_CODE_BOOL)
142 code1 = TYPE_CODE_INT;
143 if (code2 == TYPE_CODE_BOOL)
144 code2 = TYPE_CODE_INT;
145
bd5635a1
RP
146 scalar = (code2 == TYPE_CODE_INT || code2 == TYPE_CODE_FLT
147 || code2 == TYPE_CODE_ENUM);
148
54023465
JK
149 if ( code1 == TYPE_CODE_STRUCT
150 && code2 == TYPE_CODE_STRUCT
151 && TYPE_NAME (type) != 0)
152 {
153 /* Look in the type of the source to see if it contains the
154 type of the target as a superclass. If so, we'll need to
155 offset the object in addition to changing its type. */
a91a6192
SS
156 value_ptr v = search_struct_field (type_name_no_tag (type),
157 arg2, 0, VALUE_TYPE (arg2), 1);
54023465
JK
158 if (v)
159 {
160 VALUE_TYPE (v) = type;
161 return v;
162 }
163 }
bd5635a1
RP
164 if (code1 == TYPE_CODE_FLT && scalar)
165 return value_from_double (type, value_as_double (arg2));
166 else if ((code1 == TYPE_CODE_INT || code1 == TYPE_CODE_ENUM)
167 && (scalar || code2 == TYPE_CODE_PTR))
06b6c733 168 return value_from_longest (type, value_as_long (arg2));
bd5635a1
RP
169 else if (TYPE_LENGTH (type) == TYPE_LENGTH (VALUE_TYPE (arg2)))
170 {
171 if (code1 == TYPE_CODE_PTR && code2 == TYPE_CODE_PTR)
172 {
173 /* Look in the type of the source to see if it contains the
174 type of the target as a superclass. If so, we'll need to
175 offset the pointer rather than just change its type. */
176 struct type *t1 = TYPE_TARGET_TYPE (type);
177 struct type *t2 = TYPE_TARGET_TYPE (VALUE_TYPE (arg2));
2a5ec41d 178 if ( TYPE_CODE (t1) == TYPE_CODE_STRUCT
bd5635a1
RP
179 && TYPE_CODE (t2) == TYPE_CODE_STRUCT
180 && TYPE_NAME (t1) != 0) /* if name unknown, can't have supercl */
181 {
a91a6192
SS
182 value_ptr v = search_struct_field (type_name_no_tag (t1),
183 value_ind (arg2), 0, t2, 1);
bd5635a1
RP
184 if (v)
185 {
186 v = value_addr (v);
187 VALUE_TYPE (v) = type;
188 return v;
189 }
190 }
191 /* No superclass found, just fall through to change ptr type. */
192 }
193 VALUE_TYPE (arg2) = type;
194 return arg2;
195 }
196 else if (VALUE_LVAL (arg2) == lval_memory)
197 {
198 return value_at_lazy (type, VALUE_ADDRESS (arg2) + VALUE_OFFSET (arg2));
199 }
d11c44f1
JG
200 else if (code1 == TYPE_CODE_VOID)
201 {
202 return value_zero (builtin_type_void, not_lval);
203 }
bd5635a1
RP
204 else
205 {
206 error ("Invalid cast.");
207 return 0;
208 }
209}
210
211/* Create a value of type TYPE that is zero, and return it. */
212
a91a6192 213value_ptr
bd5635a1
RP
214value_zero (type, lv)
215 struct type *type;
216 enum lval_type lv;
217{
a91a6192 218 register value_ptr val = allocate_value (type);
bd5635a1 219
4ed3a9ea 220 memset (VALUE_CONTENTS (val), 0, TYPE_LENGTH (type));
bd5635a1
RP
221 VALUE_LVAL (val) = lv;
222
223 return val;
224}
225
226/* Return a value with type TYPE located at ADDR.
227
228 Call value_at only if the data needs to be fetched immediately;
229 if we can be 'lazy' and defer the fetch, perhaps indefinately, call
230 value_at_lazy instead. value_at_lazy simply records the address of
231 the data and sets the lazy-evaluation-required flag. The lazy flag
232 is tested in the VALUE_CONTENTS macro, which is used if and when
233 the contents are actually required. */
234
a91a6192 235value_ptr
bd5635a1
RP
236value_at (type, addr)
237 struct type *type;
238 CORE_ADDR addr;
239{
a91a6192
SS
240 register value_ptr val;
241
242 if (TYPE_CODE (type) == TYPE_CODE_VOID)
243 error ("Attempt to dereference a generic pointer.");
244
245 val = allocate_value (type);
bd5635a1
RP
246
247 read_memory (addr, VALUE_CONTENTS_RAW (val), TYPE_LENGTH (type));
248
249 VALUE_LVAL (val) = lval_memory;
250 VALUE_ADDRESS (val) = addr;
251
252 return val;
253}
254
255/* Return a lazy value with type TYPE located at ADDR (cf. value_at). */
256
a91a6192 257value_ptr
bd5635a1
RP
258value_at_lazy (type, addr)
259 struct type *type;
260 CORE_ADDR addr;
261{
a91a6192
SS
262 register value_ptr val;
263
264 if (TYPE_CODE (type) == TYPE_CODE_VOID)
265 error ("Attempt to dereference a generic pointer.");
266
267 val = allocate_value (type);
bd5635a1
RP
268
269 VALUE_LVAL (val) = lval_memory;
270 VALUE_ADDRESS (val) = addr;
271 VALUE_LAZY (val) = 1;
272
273 return val;
274}
275
276/* Called only from the VALUE_CONTENTS macro, if the current data for
277 a variable needs to be loaded into VALUE_CONTENTS(VAL). Fetches the
278 data from the user's process, and clears the lazy flag to indicate
279 that the data in the buffer is valid.
280
9cb602e1
JG
281 If the value is zero-length, we avoid calling read_memory, which would
282 abort. We mark the value as fetched anyway -- all 0 bytes of it.
283
bd5635a1
RP
284 This function returns a value because it is used in the VALUE_CONTENTS
285 macro as part of an expression, where a void would not work. The
286 value is ignored. */
287
288int
289value_fetch_lazy (val)
a91a6192 290 register value_ptr val;
bd5635a1
RP
291{
292 CORE_ADDR addr = VALUE_ADDRESS (val) + VALUE_OFFSET (val);
293
9cb602e1
JG
294 if (TYPE_LENGTH (VALUE_TYPE (val)))
295 read_memory (addr, VALUE_CONTENTS_RAW (val),
296 TYPE_LENGTH (VALUE_TYPE (val)));
bd5635a1
RP
297 VALUE_LAZY (val) = 0;
298 return 0;
299}
300
301
302/* Store the contents of FROMVAL into the location of TOVAL.
303 Return a new value with the location of TOVAL and contents of FROMVAL. */
304
a91a6192 305value_ptr
bd5635a1 306value_assign (toval, fromval)
a91a6192 307 register value_ptr toval, fromval;
bd5635a1 308{
67e9b3b3 309 register struct type *type;
a91a6192 310 register value_ptr val;
bd5635a1 311 char raw_buffer[MAX_REGISTER_RAW_SIZE];
bd5635a1
RP
312 int use_buffer = 0;
313
9ed8604f
PS
314 if (current_language->la_language == language_fortran)
315 {
316 /* Deal with literal assignment in F77. All composite (i.e. string
317 and complex number types) types are allocated in the superior
318 NOT the inferior. Therefore assigment is somewhat tricky. */
319
320 if (TYPE_CODE (VALUE_TYPE (fromval)) == TYPE_CODE_LITERAL_STRING)
321 return f77_assign_from_literal_string (toval, fromval);
322
323 if (TYPE_CODE (VALUE_TYPE (fromval)) == TYPE_CODE_LITERAL_COMPLEX)
324 return f77_assign_from_literal_complex (toval, fromval);
325 }
326
30974778
JK
327 if (!toval->modifiable)
328 error ("Left operand of assignment is not a modifiable lvalue.");
329
bd5635a1 330 COERCE_ARRAY (fromval);
8e9a3f3b 331 COERCE_REF (toval);
bd5635a1 332
67e9b3b3 333 type = VALUE_TYPE (toval);
bd5635a1
RP
334 if (VALUE_LVAL (toval) != lval_internalvar)
335 fromval = value_cast (type, fromval);
336
337 /* If TOVAL is a special machine register requiring conversion
338 of program values to a special raw format,
339 convert FROMVAL's contents now, with result in `raw_buffer',
340 and set USE_BUFFER to the number of bytes to write. */
341
ad09cb2b 342#ifdef REGISTER_CONVERTIBLE
bd5635a1
RP
343 if (VALUE_REGNO (toval) >= 0
344 && REGISTER_CONVERTIBLE (VALUE_REGNO (toval)))
345 {
346 int regno = VALUE_REGNO (toval);
ad09cb2b
PS
347 if (REGISTER_CONVERTIBLE (regno))
348 {
349 REGISTER_CONVERT_TO_RAW (VALUE_TYPE (fromval), regno,
350 VALUE_CONTENTS (fromval), raw_buffer);
351 use_buffer = REGISTER_RAW_SIZE (regno);
352 }
bd5635a1 353 }
ad09cb2b 354#endif
bd5635a1
RP
355
356 switch (VALUE_LVAL (toval))
357 {
358 case lval_internalvar:
359 set_internalvar (VALUE_INTERNALVAR (toval), fromval);
360 break;
361
362 case lval_internalvar_component:
363 set_internalvar_component (VALUE_INTERNALVAR (toval),
364 VALUE_OFFSET (toval),
365 VALUE_BITPOS (toval),
366 VALUE_BITSIZE (toval),
367 fromval);
368 break;
369
370 case lval_memory:
371 if (VALUE_BITSIZE (toval))
372 {
4d52ec86
JK
373 char buffer[sizeof (LONGEST)];
374 /* We assume that the argument to read_memory is in units of
375 host chars. FIXME: Is that correct? */
376 int len = (VALUE_BITPOS (toval)
377 + VALUE_BITSIZE (toval)
378 + HOST_CHAR_BIT - 1)
379 / HOST_CHAR_BIT;
ad09cb2b 380
4d52ec86 381 if (len > sizeof (LONGEST))
ad09cb2b
PS
382 error ("Can't handle bitfields which don't fit in a %d bit word.",
383 sizeof (LONGEST) * HOST_CHAR_BIT);
4d52ec86 384
bd5635a1 385 read_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
4d52ec86
JK
386 buffer, len);
387 modify_field (buffer, value_as_long (fromval),
bd5635a1
RP
388 VALUE_BITPOS (toval), VALUE_BITSIZE (toval));
389 write_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
4d52ec86 390 buffer, len);
bd5635a1
RP
391 }
392 else if (use_buffer)
393 write_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
394 raw_buffer, use_buffer);
395 else
396 write_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
397 VALUE_CONTENTS (fromval), TYPE_LENGTH (type));
398 break;
399
400 case lval_register:
401 if (VALUE_BITSIZE (toval))
402 {
ad09cb2b 403 char buffer[sizeof (LONGEST)];
4d52ec86 404 int len = REGISTER_RAW_SIZE (VALUE_REGNO (toval));
ad09cb2b
PS
405
406 if (len > sizeof (LONGEST))
407 error ("Can't handle bitfields in registers larger than %d bits.",
408 sizeof (LONGEST) * HOST_CHAR_BIT);
409
410 if (VALUE_BITPOS (toval) + VALUE_BITSIZE (toval)
411 > len * HOST_CHAR_BIT)
412 /* Getting this right would involve being very careful about
413 byte order. */
414 error ("\
415Can't handle bitfield which doesn't fit in a single register.");
416
4d52ec86
JK
417 read_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
418 buffer, len);
419 modify_field (buffer, value_as_long (fromval),
420 VALUE_BITPOS (toval), VALUE_BITSIZE (toval));
421 write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
422 buffer, len);
bd5635a1
RP
423 }
424 else if (use_buffer)
425 write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
426 raw_buffer, use_buffer);
427 else
54023465
JK
428 {
429 /* Do any conversion necessary when storing this type to more
430 than one register. */
431#ifdef REGISTER_CONVERT_FROM_TYPE
432 memcpy (raw_buffer, VALUE_CONTENTS (fromval), TYPE_LENGTH (type));
433 REGISTER_CONVERT_FROM_TYPE(VALUE_REGNO (toval), type, raw_buffer);
434 write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
435 raw_buffer, TYPE_LENGTH (type));
436#else
437 write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
438 VALUE_CONTENTS (fromval), TYPE_LENGTH (type));
439#endif
440 }
79971d11
JK
441 /* Assigning to the stack pointer, frame pointer, and other
442 (architecture and calling convention specific) registers may
443 cause the frame cache to be out of date. We just do this
444 on all assignments to registers for simplicity; I doubt the slowdown
445 matters. */
446 reinit_frame_cache ();
bd5635a1
RP
447 break;
448
449 case lval_reg_frame_relative:
450 {
451 /* value is stored in a series of registers in the frame
452 specified by the structure. Copy that value out, modify
453 it, and copy it back in. */
454 int amount_to_copy = (VALUE_BITSIZE (toval) ? 1 : TYPE_LENGTH (type));
455 int reg_size = REGISTER_RAW_SIZE (VALUE_FRAME_REGNUM (toval));
456 int byte_offset = VALUE_OFFSET (toval) % reg_size;
457 int reg_offset = VALUE_OFFSET (toval) / reg_size;
458 int amount_copied;
4d52ec86
JK
459
460 /* Make the buffer large enough in all cases. */
461 char *buffer = (char *) alloca (amount_to_copy
462 + sizeof (LONGEST)
463 + MAX_REGISTER_RAW_SIZE);
464
bd5635a1
RP
465 int regno;
466 FRAME frame;
467
468 /* Figure out which frame this is in currently. */
469 for (frame = get_current_frame ();
470 frame && FRAME_FP (frame) != VALUE_FRAME (toval);
471 frame = get_prev_frame (frame))
472 ;
473
474 if (!frame)
475 error ("Value being assigned to is no longer active.");
476
477 amount_to_copy += (reg_size - amount_to_copy % reg_size);
478
479 /* Copy it out. */
480 for ((regno = VALUE_FRAME_REGNUM (toval) + reg_offset,
481 amount_copied = 0);
482 amount_copied < amount_to_copy;
483 amount_copied += reg_size, regno++)
484 {
485 get_saved_register (buffer + amount_copied,
51b57ded 486 (int *)NULL, (CORE_ADDR *)NULL,
bd5635a1
RP
487 frame, regno, (enum lval_type *)NULL);
488 }
489
490 /* Modify what needs to be modified. */
491 if (VALUE_BITSIZE (toval))
492 modify_field (buffer + byte_offset,
479fdd26 493 value_as_long (fromval),
bd5635a1
RP
494 VALUE_BITPOS (toval), VALUE_BITSIZE (toval));
495 else if (use_buffer)
4ed3a9ea 496 memcpy (buffer + byte_offset, raw_buffer, use_buffer);
bd5635a1 497 else
4ed3a9ea
FF
498 memcpy (buffer + byte_offset, VALUE_CONTENTS (fromval),
499 TYPE_LENGTH (type));
bd5635a1
RP
500
501 /* Copy it back. */
502 for ((regno = VALUE_FRAME_REGNUM (toval) + reg_offset,
503 amount_copied = 0);
504 amount_copied < amount_to_copy;
505 amount_copied += reg_size, regno++)
506 {
507 enum lval_type lval;
508 CORE_ADDR addr;
509 int optim;
510
511 /* Just find out where to put it. */
512 get_saved_register ((char *)NULL,
513 &optim, &addr, frame, regno, &lval);
514
515 if (optim)
516 error ("Attempt to assign to a value that was optimized out.");
517 if (lval == lval_memory)
518 write_memory (addr, buffer + amount_copied, reg_size);
519 else if (lval == lval_register)
520 write_register_bytes (addr, buffer + amount_copied, reg_size);
521 else
522 error ("Attempt to assign to an unmodifiable value.");
523 }
524 }
525 break;
526
527
528 default:
30974778 529 error ("Left operand of assignment is not an lvalue.");
bd5635a1
RP
530 }
531
532 /* Return a value just like TOVAL except with the contents of FROMVAL
533 (except in the case of the type if TOVAL is an internalvar). */
534
535 if (VALUE_LVAL (toval) == lval_internalvar
536 || VALUE_LVAL (toval) == lval_internalvar_component)
537 {
538 type = VALUE_TYPE (fromval);
539 }
540
541 val = allocate_value (type);
4ed3a9ea
FF
542 memcpy (val, toval, VALUE_CONTENTS_RAW (val) - (char *) val);
543 memcpy (VALUE_CONTENTS_RAW (val), VALUE_CONTENTS (fromval),
544 TYPE_LENGTH (type));
bd5635a1
RP
545 VALUE_TYPE (val) = type;
546
547 return val;
548}
549
550/* Extend a value VAL to COUNT repetitions of its type. */
551
a91a6192 552value_ptr
bd5635a1 553value_repeat (arg1, count)
a91a6192 554 value_ptr arg1;
bd5635a1
RP
555 int count;
556{
a91a6192 557 register value_ptr val;
bd5635a1
RP
558
559 if (VALUE_LVAL (arg1) != lval_memory)
560 error ("Only values in memory can be extended with '@'.");
561 if (count < 1)
562 error ("Invalid number %d of repetitions.", count);
563
564 val = allocate_repeat_value (VALUE_TYPE (arg1), count);
565
566 read_memory (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1),
567 VALUE_CONTENTS_RAW (val),
568 TYPE_LENGTH (VALUE_TYPE (val)) * count);
569 VALUE_LVAL (val) = lval_memory;
570 VALUE_ADDRESS (val) = VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1);
571
572 return val;
573}
574
a91a6192 575value_ptr
479fdd26 576value_of_variable (var, b)
bd5635a1 577 struct symbol *var;
479fdd26 578 struct block *b;
bd5635a1 579{
a91a6192 580 value_ptr val;
479fdd26 581 FRAME fr;
bd5635a1 582
479fdd26
JK
583 if (b == NULL)
584 /* Use selected frame. */
585 fr = NULL;
586 else
587 {
588 fr = block_innermost_frame (b);
443abae1 589 if (fr == NULL && symbol_read_needs_frame (var))
479fdd26
JK
590 {
591 if (BLOCK_FUNCTION (b) != NULL
592 && SYMBOL_NAME (BLOCK_FUNCTION (b)) != NULL)
593 error ("No frame is currently executing in block %s.",
594 SYMBOL_NAME (BLOCK_FUNCTION (b)));
595 else
596 error ("No frame is currently executing in specified block");
597 }
598 }
599 val = read_var_value (var, fr);
bd5635a1 600 if (val == 0)
2e4964ad 601 error ("Address of symbol \"%s\" is unknown.", SYMBOL_SOURCE_NAME (var));
bd5635a1
RP
602 return val;
603}
604
a163ddec
MT
605/* Given a value which is an array, return a value which is a pointer to its
606 first element, regardless of whether or not the array has a nonzero lower
607 bound.
608
609 FIXME: A previous comment here indicated that this routine should be
610 substracting the array's lower bound. It's not clear to me that this
611 is correct. Given an array subscripting operation, it would certainly
612 work to do the adjustment here, essentially computing:
613
614 (&array[0] - (lowerbound * sizeof array[0])) + (index * sizeof array[0])
615
616 However I believe a more appropriate and logical place to account for
617 the lower bound is to do so in value_subscript, essentially computing:
618
619 (&array[0] + ((index - lowerbound) * sizeof array[0]))
620
621 As further evidence consider what would happen with operations other
622 than array subscripting, where the caller would get back a value that
623 had an address somewhere before the actual first element of the array,
624 and the information about the lower bound would be lost because of
625 the coercion to pointer type.
626 */
bd5635a1 627
a91a6192 628value_ptr
bd5635a1 629value_coerce_array (arg1)
a91a6192 630 value_ptr arg1;
bd5635a1
RP
631{
632 register struct type *type;
bd5635a1
RP
633
634 if (VALUE_LVAL (arg1) != lval_memory)
635 error ("Attempt to take address of value not located in memory.");
636
637 /* Get type of elements. */
852b3831
PB
638 if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_ARRAY
639 || TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_STRING)
bd5635a1
RP
640 type = TYPE_TARGET_TYPE (VALUE_TYPE (arg1));
641 else
642 /* A phony array made by value_repeat.
643 Its type is the type of the elements, not an array type. */
644 type = VALUE_TYPE (arg1);
645
06b6c733 646 return value_from_longest (lookup_pointer_type (type),
bd5635a1 647 (LONGEST) (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
bd5635a1
RP
648}
649
650/* Given a value which is a function, return a value which is a pointer
651 to it. */
652
a91a6192 653value_ptr
bd5635a1 654value_coerce_function (arg1)
a91a6192 655 value_ptr arg1;
bd5635a1 656{
bd5635a1
RP
657
658 if (VALUE_LVAL (arg1) != lval_memory)
659 error ("Attempt to take address of value not located in memory.");
660
06b6c733 661 return value_from_longest (lookup_pointer_type (VALUE_TYPE (arg1)),
bd5635a1 662 (LONGEST) (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
bd5635a1
RP
663}
664
665/* Return a pointer value for the object for which ARG1 is the contents. */
666
a91a6192 667value_ptr
bd5635a1 668value_addr (arg1)
a91a6192 669 value_ptr arg1;
bd5635a1 670{
8e9a3f3b
PB
671 struct type *type = VALUE_TYPE (arg1);
672 if (TYPE_CODE (type) == TYPE_CODE_REF)
673 {
674 /* Copy the value, but change the type from (T&) to (T*).
675 We keep the same location information, which is efficient,
676 and allows &(&X) to get the location containing the reference. */
a91a6192 677 value_ptr arg2 = value_copy (arg1);
8e9a3f3b
PB
678 VALUE_TYPE (arg2) = lookup_pointer_type (TYPE_TARGET_TYPE (type));
679 return arg2;
680 }
bd5635a1 681 if (VALUE_REPEATED (arg1)
8e9a3f3b 682 || TYPE_CODE (type) == TYPE_CODE_ARRAY)
bd5635a1 683 return value_coerce_array (arg1);
8e9a3f3b 684 if (TYPE_CODE (type) == TYPE_CODE_FUNC)
bd5635a1
RP
685 return value_coerce_function (arg1);
686
687 if (VALUE_LVAL (arg1) != lval_memory)
688 error ("Attempt to take address of value not located in memory.");
689
8e9a3f3b 690 return value_from_longest (lookup_pointer_type (type),
bd5635a1 691 (LONGEST) (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
bd5635a1
RP
692}
693
694/* Given a value of a pointer type, apply the C unary * operator to it. */
695
a91a6192 696value_ptr
bd5635a1 697value_ind (arg1)
a91a6192 698 value_ptr arg1;
bd5635a1
RP
699{
700 COERCE_ARRAY (arg1);
701
702 if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_MEMBER)
703 error ("not implemented: member types in value_ind");
704
705 /* Allow * on an integer so we can cast it to whatever we want.
706 This returns an int, which seems like the most C-like thing
707 to do. "long long" variables are rare enough that
708 BUILTIN_TYPE_LONGEST would seem to be a mistake. */
709 if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_INT)
710 return value_at (builtin_type_int,
711 (CORE_ADDR) value_as_long (arg1));
712 else if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_PTR)
713 return value_at_lazy (TYPE_TARGET_TYPE (VALUE_TYPE (arg1)),
d11c44f1 714 value_as_pointer (arg1));
bd5635a1
RP
715 error ("Attempt to take contents of a non-pointer value.");
716 return 0; /* For lint -- never reached */
717}
718\f
719/* Pushing small parts of stack frames. */
720
721/* Push one word (the size of object that a register holds). */
722
723CORE_ADDR
34df79fc 724push_word (sp, word)
bd5635a1 725 CORE_ADDR sp;
67e9b3b3 726 unsigned LONGEST word;
bd5635a1 727{
67e9b3b3 728 register int len = REGISTER_SIZE;
479fdd26 729 char buffer[MAX_REGISTER_RAW_SIZE];
bd5635a1 730
479fdd26 731 store_unsigned_integer (buffer, len, word);
bd5635a1
RP
732#if 1 INNER_THAN 2
733 sp -= len;
479fdd26 734 write_memory (sp, buffer, len);
bd5635a1 735#else /* stack grows upward */
479fdd26 736 write_memory (sp, buffer, len);
bd5635a1
RP
737 sp += len;
738#endif /* stack grows upward */
739
740 return sp;
741}
742
743/* Push LEN bytes with data at BUFFER. */
744
745CORE_ADDR
746push_bytes (sp, buffer, len)
747 CORE_ADDR sp;
748 char *buffer;
749 int len;
750{
751#if 1 INNER_THAN 2
752 sp -= len;
753 write_memory (sp, buffer, len);
754#else /* stack grows upward */
755 write_memory (sp, buffer, len);
756 sp += len;
757#endif /* stack grows upward */
758
759 return sp;
760}
761
762/* Push onto the stack the specified value VALUE. */
763
01be6913 764static CORE_ADDR
bd5635a1
RP
765value_push (sp, arg)
766 register CORE_ADDR sp;
a91a6192 767 value_ptr arg;
bd5635a1
RP
768{
769 register int len = TYPE_LENGTH (VALUE_TYPE (arg));
770
771#if 1 INNER_THAN 2
772 sp -= len;
773 write_memory (sp, VALUE_CONTENTS (arg), len);
774#else /* stack grows upward */
775 write_memory (sp, VALUE_CONTENTS (arg), len);
776 sp += len;
777#endif /* stack grows upward */
778
779 return sp;
780}
781
782/* Perform the standard coercions that are specified
783 for arguments to be passed to C functions. */
784
a91a6192 785value_ptr
bd5635a1 786value_arg_coerce (arg)
a91a6192 787 value_ptr arg;
bd5635a1
RP
788{
789 register struct type *type;
790
479fdd26
JK
791 /* FIXME: We should coerce this according to the prototype (if we have
792 one). Right now we do a little bit of this in typecmp(), but that
793 doesn't always get called. For example, if passing a ref to a function
794 without a prototype, we probably should de-reference it. Currently
795 we don't. */
796
797 if (TYPE_CODE (VALUE_TYPE (arg)) == TYPE_CODE_ENUM)
798 arg = value_cast (builtin_type_unsigned_int, arg);
799
b5728692
SG
800#if 1 /* FIXME: This is only a temporary patch. -fnf */
801 if (VALUE_REPEATED (arg)
802 || TYPE_CODE (VALUE_TYPE (arg)) == TYPE_CODE_ARRAY)
803 arg = value_coerce_array (arg);
804 if (TYPE_CODE (VALUE_TYPE (arg)) == TYPE_CODE_FUNC)
805 arg = value_coerce_function (arg);
806#endif
bd5635a1
RP
807
808 type = VALUE_TYPE (arg);
809
810 if (TYPE_CODE (type) == TYPE_CODE_INT
2a5ec41d 811 && TYPE_LENGTH (type) < TYPE_LENGTH (builtin_type_int))
bd5635a1
RP
812 return value_cast (builtin_type_int, arg);
813
2a5ec41d
JG
814 if (TYPE_CODE (type) == TYPE_CODE_FLT
815 && TYPE_LENGTH (type) < TYPE_LENGTH (builtin_type_double))
bd5635a1
RP
816 return value_cast (builtin_type_double, arg);
817
818 return arg;
819}
820
821/* Push the value ARG, first coercing it as an argument
822 to a C function. */
823
01be6913 824static CORE_ADDR
bd5635a1
RP
825value_arg_push (sp, arg)
826 register CORE_ADDR sp;
a91a6192 827 value_ptr arg;
bd5635a1
RP
828{
829 return value_push (sp, value_arg_coerce (arg));
830}
831
832/* Determine a function's address and its return type from its value.
833 Calls error() if the function is not valid for calling. */
834
01be6913 835static CORE_ADDR
bd5635a1 836find_function_addr (function, retval_type)
a91a6192 837 value_ptr function;
bd5635a1
RP
838 struct type **retval_type;
839{
840 register struct type *ftype = VALUE_TYPE (function);
841 register enum type_code code = TYPE_CODE (ftype);
842 struct type *value_type;
843 CORE_ADDR funaddr;
844
845 /* If it's a member function, just look at the function
846 part of it. */
847
848 /* Determine address to call. */
849 if (code == TYPE_CODE_FUNC || code == TYPE_CODE_METHOD)
850 {
851 funaddr = VALUE_ADDRESS (function);
852 value_type = TYPE_TARGET_TYPE (ftype);
853 }
854 else if (code == TYPE_CODE_PTR)
855 {
d11c44f1 856 funaddr = value_as_pointer (function);
bd5635a1
RP
857 if (TYPE_CODE (TYPE_TARGET_TYPE (ftype)) == TYPE_CODE_FUNC
858 || TYPE_CODE (TYPE_TARGET_TYPE (ftype)) == TYPE_CODE_METHOD)
9ed8604f
PS
859 {
860#ifdef CONVERT_FROM_FUNC_PTR_ADDR
861 /* FIXME: This is a workaround for the unusual function
862 pointer representation on the RS/6000, see comment
863 in config/rs6000/tm-rs6000.h */
864 funaddr = CONVERT_FROM_FUNC_PTR_ADDR (funaddr);
865#endif
866 value_type = TYPE_TARGET_TYPE (TYPE_TARGET_TYPE (ftype));
867 }
bd5635a1
RP
868 else
869 value_type = builtin_type_int;
870 }
871 else if (code == TYPE_CODE_INT)
872 {
873 /* Handle the case of functions lacking debugging info.
874 Their values are characters since their addresses are char */
875 if (TYPE_LENGTH (ftype) == 1)
d11c44f1 876 funaddr = value_as_pointer (value_addr (function));
bd5635a1
RP
877 else
878 /* Handle integer used as address of a function. */
d11c44f1 879 funaddr = (CORE_ADDR) value_as_long (function);
bd5635a1
RP
880
881 value_type = builtin_type_int;
882 }
883 else
884 error ("Invalid data type for function to be called.");
885
886 *retval_type = value_type;
887 return funaddr;
888}
889
890#if defined (CALL_DUMMY)
891/* All this stuff with a dummy frame may seem unnecessarily complicated
892 (why not just save registers in GDB?). The purpose of pushing a dummy
893 frame which looks just like a real frame is so that if you call a
894 function and then hit a breakpoint (get a signal, etc), "backtrace"
895 will look right. Whether the backtrace needs to actually show the
896 stack at the time the inferior function was called is debatable, but
897 it certainly needs to not display garbage. So if you are contemplating
898 making dummy frames be different from normal frames, consider that. */
899
900/* Perform a function call in the inferior.
901 ARGS is a vector of values of arguments (NARGS of them).
902 FUNCTION is a value, the function to be called.
903 Returns a value representing what the function returned.
904 May fail to return, if a breakpoint or signal is hit
905 during the execution of the function. */
906
a91a6192 907value_ptr
bd5635a1 908call_function_by_hand (function, nargs, args)
a91a6192 909 value_ptr function;
bd5635a1 910 int nargs;
a91a6192 911 value_ptr *args;
bd5635a1
RP
912{
913 register CORE_ADDR sp;
914 register int i;
915 CORE_ADDR start_sp;
67e9b3b3
PS
916 /* CALL_DUMMY is an array of words (REGISTER_SIZE), but each word
917 is in host byte order. Before calling FIX_CALL_DUMMY, we byteswap it
918 and remove any extra bytes which might exist because unsigned LONGEST is
919 bigger than REGISTER_SIZE. */
920 static unsigned LONGEST dummy[] = CALL_DUMMY;
921 char dummy1[REGISTER_SIZE * sizeof dummy / sizeof (unsigned LONGEST)];
bd5635a1
RP
922 CORE_ADDR old_sp;
923 struct type *value_type;
924 unsigned char struct_return;
925 CORE_ADDR struct_addr;
926 struct inferior_status inf_status;
927 struct cleanup *old_chain;
928 CORE_ADDR funaddr;
929 int using_gcc;
9f739abd 930 CORE_ADDR real_pc;
bd5635a1 931
e17960fb
JG
932 if (!target_has_execution)
933 noprocess();
934
bd5635a1
RP
935 save_inferior_status (&inf_status, 1);
936 old_chain = make_cleanup (restore_inferior_status, &inf_status);
937
938 /* PUSH_DUMMY_FRAME is responsible for saving the inferior registers
939 (and POP_FRAME for restoring them). (At least on most machines)
940 they are saved on the stack in the inferior. */
941 PUSH_DUMMY_FRAME;
942
54023465 943 old_sp = sp = read_sp ();
bd5635a1
RP
944
945#if 1 INNER_THAN 2 /* Stack grows down */
9ed8604f 946 sp -= sizeof dummy1;
bd5635a1
RP
947 start_sp = sp;
948#else /* Stack grows up */
949 start_sp = sp;
9ed8604f 950 sp += sizeof dummy1;
bd5635a1
RP
951#endif
952
953 funaddr = find_function_addr (function, &value_type);
954
955 {
956 struct block *b = block_for_pc (funaddr);
957 /* If compiled without -g, assume GCC. */
958 using_gcc = b == NULL || BLOCK_GCC_COMPILED (b);
959 }
960
961 /* Are we returning a value using a structure return or a normal
962 value return? */
963
964 struct_return = using_struct_return (function, funaddr, value_type,
965 using_gcc);
966
967 /* Create a call sequence customized for this function
968 and the number of arguments for it. */
67e9b3b3
PS
969 for (i = 0; i < sizeof dummy / sizeof (dummy[0]); i++)
970 store_unsigned_integer (&dummy1[i * REGISTER_SIZE],
971 REGISTER_SIZE,
34df79fc 972 (unsigned LONGEST)dummy[i]);
9f739abd
SG
973
974#ifdef GDB_TARGET_IS_HPPA
b5728692
SG
975 real_pc = FIX_CALL_DUMMY (dummy1, start_sp, funaddr, nargs, args,
976 value_type, using_gcc);
9f739abd 977#else
bd5635a1
RP
978 FIX_CALL_DUMMY (dummy1, start_sp, funaddr, nargs, args,
979 value_type, using_gcc);
9f739abd
SG
980 real_pc = start_sp;
981#endif
bd5635a1
RP
982
983#if CALL_DUMMY_LOCATION == ON_STACK
9ed8604f 984 write_memory (start_sp, (char *)dummy1, sizeof dummy1);
cef4c2e7 985#endif /* On stack. */
bd5635a1 986
bd5635a1
RP
987#if CALL_DUMMY_LOCATION == BEFORE_TEXT_END
988 /* Convex Unix prohibits executing in the stack segment. */
989 /* Hope there is empty room at the top of the text segment. */
990 {
84d82b1c 991 extern CORE_ADDR text_end;
bd5635a1
RP
992 static checked = 0;
993 if (!checked)
9ed8604f 994 for (start_sp = text_end - sizeof dummy1; start_sp < text_end; ++start_sp)
bd5635a1
RP
995 if (read_memory_integer (start_sp, 1) != 0)
996 error ("text segment full -- no place to put call");
997 checked = 1;
998 sp = old_sp;
9ed8604f
PS
999 real_pc = text_end - sizeof dummy1;
1000 write_memory (real_pc, (char *)dummy1, sizeof dummy1);
bd5635a1 1001 }
cef4c2e7
PS
1002#endif /* Before text_end. */
1003
1004#if CALL_DUMMY_LOCATION == AFTER_TEXT_END
bd5635a1 1005 {
84d82b1c 1006 extern CORE_ADDR text_end;
bd5635a1
RP
1007 int errcode;
1008 sp = old_sp;
30d20d15 1009 real_pc = text_end;
9ed8604f 1010 errcode = target_write_memory (real_pc, (char *)dummy1, sizeof dummy1);
bd5635a1
RP
1011 if (errcode != 0)
1012 error ("Cannot write text segment -- call_function failed");
1013 }
1014#endif /* After text_end. */
cef4c2e7
PS
1015
1016#if CALL_DUMMY_LOCATION == AT_ENTRY_POINT
1017 real_pc = funaddr;
1018#endif /* At entry point. */
bd5635a1
RP
1019
1020#ifdef lint
1021 sp = old_sp; /* It really is used, for some ifdef's... */
1022#endif
1023
1024#ifdef STACK_ALIGN
1025 /* If stack grows down, we must leave a hole at the top. */
1026 {
1027 int len = 0;
1028
1029 /* Reserve space for the return structure to be written on the
1030 stack, if necessary */
1031
1032 if (struct_return)
1033 len += TYPE_LENGTH (value_type);
1034
1035 for (i = nargs - 1; i >= 0; i--)
1036 len += TYPE_LENGTH (VALUE_TYPE (value_arg_coerce (args[i])));
1037#ifdef CALL_DUMMY_STACK_ADJUST
1038 len += CALL_DUMMY_STACK_ADJUST;
1039#endif
1040#if 1 INNER_THAN 2
1041 sp -= STACK_ALIGN (len) - len;
1042#else
1043 sp += STACK_ALIGN (len) - len;
1044#endif
1045 }
1046#endif /* STACK_ALIGN */
1047
1048 /* Reserve space for the return structure to be written on the
1049 stack, if necessary */
1050
1051 if (struct_return)
1052 {
1053#if 1 INNER_THAN 2
1054 sp -= TYPE_LENGTH (value_type);
1055 struct_addr = sp;
1056#else
1057 struct_addr = sp;
1058 sp += TYPE_LENGTH (value_type);
1059#endif
1060 }
1061
1062#if defined (REG_STRUCT_HAS_ADDR)
1063 {
a91a6192 1064 /* This is a machine like the sparc, where we may need to pass a pointer
bd5635a1 1065 to the structure, not the structure itself. */
a91a6192
SS
1066 for (i = nargs - 1; i >= 0; i--)
1067 if (TYPE_CODE (VALUE_TYPE (args[i])) == TYPE_CODE_STRUCT
1068 && REG_STRUCT_HAS_ADDR (using_gcc, VALUE_TYPE (args[i])))
1069 {
1070 CORE_ADDR addr;
bd5635a1 1071#if !(1 INNER_THAN 2)
a91a6192
SS
1072 /* The stack grows up, so the address of the thing we push
1073 is the stack pointer before we push it. */
1074 addr = sp;
bd5635a1 1075#endif
a91a6192
SS
1076 /* Push the structure. */
1077 sp = value_push (sp, args[i]);
bd5635a1 1078#if 1 INNER_THAN 2
a91a6192
SS
1079 /* The stack grows down, so the address of the thing we push
1080 is the stack pointer after we push it. */
1081 addr = sp;
bd5635a1 1082#endif
a91a6192
SS
1083 /* The value we're going to pass is the address of the thing
1084 we just pushed. */
1085 args[i] = value_from_longest (lookup_pointer_type (value_type),
1086 (LONGEST) addr);
1087 }
bd5635a1
RP
1088 }
1089#endif /* REG_STRUCT_HAS_ADDR. */
1090
1091#ifdef PUSH_ARGUMENTS
1092 PUSH_ARGUMENTS(nargs, args, sp, struct_return, struct_addr);
1093#else /* !PUSH_ARGUMENTS */
1094 for (i = nargs - 1; i >= 0; i--)
1095 sp = value_arg_push (sp, args[i]);
1096#endif /* !PUSH_ARGUMENTS */
1097
1098#ifdef CALL_DUMMY_STACK_ADJUST
1099#if 1 INNER_THAN 2
1100 sp -= CALL_DUMMY_STACK_ADJUST;
1101#else
1102 sp += CALL_DUMMY_STACK_ADJUST;
1103#endif
1104#endif /* CALL_DUMMY_STACK_ADJUST */
1105
1106 /* Store the address at which the structure is supposed to be
1107 written. Note that this (and the code which reserved the space
1108 above) assumes that gcc was used to compile this function. Since
1109 it doesn't cost us anything but space and if the function is pcc
1110 it will ignore this value, we will make that assumption.
1111
1112 Also note that on some machines (like the sparc) pcc uses a
1113 convention like gcc's. */
1114
1115 if (struct_return)
1116 STORE_STRUCT_RETURN (struct_addr, sp);
1117
1118 /* Write the stack pointer. This is here because the statements above
1119 might fool with it. On SPARC, this write also stores the register
1120 window into the right place in the new stack frame, which otherwise
5632cd56 1121 wouldn't happen. (See store_inferior_registers in sparc-nat.c.) */
54023465 1122 write_sp (sp);
bd5635a1 1123
bd5635a1
RP
1124 {
1125 char retbuf[REGISTER_BYTES];
54023465
JK
1126 char *name;
1127 struct symbol *symbol;
1128
1129 name = NULL;
1130 symbol = find_pc_function (funaddr);
1131 if (symbol)
1132 {
1133 name = SYMBOL_SOURCE_NAME (symbol);
1134 }
1135 else
1136 {
1137 /* Try the minimal symbols. */
1138 struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (funaddr);
1139
1140 if (msymbol)
1141 {
1142 name = SYMBOL_SOURCE_NAME (msymbol);
1143 }
1144 }
1145 if (name == NULL)
1146 {
1147 char format[80];
1148 sprintf (format, "at %s", local_hex_format ());
1149 name = alloca (80);
30974778 1150 /* FIXME-32x64: assumes funaddr fits in a long. */
cef4c2e7 1151 sprintf (name, format, (unsigned long) funaddr);
54023465 1152 }
bd5635a1
RP
1153
1154 /* Execute the stack dummy routine, calling FUNCTION.
1155 When it is done, discard the empty frame
1156 after storing the contents of all regs into retbuf. */
860a1754
JK
1157 if (run_stack_dummy (real_pc + CALL_DUMMY_START_OFFSET, retbuf))
1158 {
1159 /* We stopped somewhere besides the call dummy. */
1160
1161 /* If we did the cleanups, we would print a spurious error message
1162 (Unable to restore previously selected frame), would write the
1163 registers from the inf_status (which is wrong), and would do other
1164 wrong things (like set stop_bpstat to the wrong thing). */
1165 discard_cleanups (old_chain);
1166 /* Prevent memory leak. */
30d20d15 1167 bpstat_clear (&inf_status.stop_bpstat);
860a1754
JK
1168
1169 /* The following error message used to say "The expression
1170 which contained the function call has been discarded." It
1171 is a hard concept to explain in a few words. Ideally, GDB
1172 would be able to resume evaluation of the expression when
1173 the function finally is done executing. Perhaps someday
1174 this will be implemented (it would not be easy). */
1175
1176 /* FIXME: Insert a bunch of wrap_here; name can be very long if it's
1177 a C++ name with arguments and stuff. */
1178 error ("\
1179The program being debugged stopped while in a function called from GDB.\n\
1180When the function (%s) is done executing, GDB will silently\n\
1181stop (instead of continuing to evaluate the expression containing\n\
1182the function call).", name);
1183 }
bd5635a1
RP
1184
1185 do_cleanups (old_chain);
1186
860a1754 1187 /* Figure out the value returned by the function. */
bd5635a1
RP
1188 return value_being_returned (value_type, retbuf, struct_return);
1189 }
1190}
1191#else /* no CALL_DUMMY. */
a91a6192 1192value_ptr
bd5635a1 1193call_function_by_hand (function, nargs, args)
a91a6192 1194 value_ptr function;
bd5635a1 1195 int nargs;
a91a6192 1196 value_ptr *args;
bd5635a1
RP
1197{
1198 error ("Cannot invoke functions on this machine.");
1199}
1200#endif /* no CALL_DUMMY. */
a163ddec 1201
bd5635a1 1202\f
a163ddec
MT
1203/* Create a value for an array by allocating space in the inferior, copying
1204 the data into that space, and then setting up an array value.
1205
1206 The array bounds are set from LOWBOUND and HIGHBOUND, and the array is
1207 populated from the values passed in ELEMVEC.
1208
1209 The element type of the array is inherited from the type of the
1210 first element, and all elements must have the same size (though we
1211 don't currently enforce any restriction on their types). */
bd5635a1 1212
a91a6192 1213value_ptr
a163ddec
MT
1214value_array (lowbound, highbound, elemvec)
1215 int lowbound;
1216 int highbound;
a91a6192 1217 value_ptr *elemvec;
bd5635a1 1218{
a163ddec
MT
1219 int nelem;
1220 int idx;
1221 int typelength;
a91a6192 1222 value_ptr val;
a163ddec
MT
1223 struct type *rangetype;
1224 struct type *arraytype;
1225 CORE_ADDR addr;
bd5635a1 1226
a163ddec
MT
1227 /* Validate that the bounds are reasonable and that each of the elements
1228 have the same size. */
bd5635a1 1229
a163ddec
MT
1230 nelem = highbound - lowbound + 1;
1231 if (nelem <= 0)
bd5635a1 1232 {
a163ddec 1233 error ("bad array bounds (%d, %d)", lowbound, highbound);
bd5635a1 1234 }
a163ddec
MT
1235 typelength = TYPE_LENGTH (VALUE_TYPE (elemvec[0]));
1236 for (idx = 0; idx < nelem; idx++)
bd5635a1 1237 {
a163ddec
MT
1238 if (TYPE_LENGTH (VALUE_TYPE (elemvec[idx])) != typelength)
1239 {
1240 error ("array elements must all be the same size");
1241 }
bd5635a1
RP
1242 }
1243
a163ddec
MT
1244 /* Allocate space to store the array in the inferior, and then initialize
1245 it by copying in each element. FIXME: Is it worth it to create a
1246 local buffer in which to collect each value and then write all the
1247 bytes in one operation? */
1248
1249 addr = allocate_space_in_inferior (nelem * typelength);
1250 for (idx = 0; idx < nelem; idx++)
1251 {
1252 write_memory (addr + (idx * typelength), VALUE_CONTENTS (elemvec[idx]),
1253 typelength);
1254 }
1255
1256 /* Create the array type and set up an array value to be evaluated lazily. */
1257
1258 rangetype = create_range_type ((struct type *) NULL, builtin_type_int,
1259 lowbound, highbound);
1260 arraytype = create_array_type ((struct type *) NULL,
1261 VALUE_TYPE (elemvec[0]), rangetype);
1262 val = value_at_lazy (arraytype, addr);
1263 return (val);
1264}
1265
1266/* Create a value for a string constant by allocating space in the inferior,
1267 copying the data into that space, and returning the address with type
1268 TYPE_CODE_STRING. PTR points to the string constant data; LEN is number
1269 of characters.
1270 Note that string types are like array of char types with a lower bound of
1271 zero and an upper bound of LEN - 1. Also note that the string may contain
1272 embedded null bytes. */
1273
a91a6192 1274value_ptr
a163ddec
MT
1275value_string (ptr, len)
1276 char *ptr;
1277 int len;
1278{
a91a6192 1279 value_ptr val;
a163ddec
MT
1280 struct type *rangetype;
1281 struct type *stringtype;
1282 CORE_ADDR addr;
1283
1284 /* Allocate space to store the string in the inferior, and then
1285 copy LEN bytes from PTR in gdb to that address in the inferior. */
1286
1287 addr = allocate_space_in_inferior (len);
1288 write_memory (addr, ptr, len);
1289
1290 /* Create the string type and set up a string value to be evaluated
1291 lazily. */
1292
1293 rangetype = create_range_type ((struct type *) NULL, builtin_type_int,
1294 0, len - 1);
1295 stringtype = create_string_type ((struct type *) NULL, rangetype);
1296 val = value_at_lazy (stringtype, addr);
1297 return (val);
bd5635a1
RP
1298}
1299\f
479fdd26
JK
1300/* See if we can pass arguments in T2 to a function which takes arguments
1301 of types T1. Both t1 and t2 are NULL-terminated vectors. If some
1302 arguments need coercion of some sort, then the coerced values are written
1303 into T2. Return value is 0 if the arguments could be matched, or the
1304 position at which they differ if not.
a163ddec
MT
1305
1306 STATICP is nonzero if the T1 argument list came from a
1307 static member function.
1308
1309 For non-static member functions, we ignore the first argument,
1310 which is the type of the instance variable. This is because we want
1311 to handle calls with objects from derived classes. This is not
1312 entirely correct: we should actually check to make sure that a
1313 requested operation is type secure, shouldn't we? FIXME. */
1314
1315static int
1316typecmp (staticp, t1, t2)
1317 int staticp;
1318 struct type *t1[];
a91a6192 1319 value_ptr t2[];
a163ddec
MT
1320{
1321 int i;
1322
1323 if (t2 == 0)
1324 return 1;
1325 if (staticp && t1 == 0)
1326 return t2[1] != 0;
1327 if (t1 == 0)
1328 return 1;
1329 if (TYPE_CODE (t1[0]) == TYPE_CODE_VOID) return 0;
1330 if (t1[!staticp] == 0) return 0;
1331 for (i = !staticp; t1[i] && TYPE_CODE (t1[i]) != TYPE_CODE_VOID; i++)
1332 {
40620258 1333 struct type *tt1, *tt2;
a163ddec
MT
1334 if (! t2[i])
1335 return i+1;
40620258
KH
1336 tt1 = t1[i];
1337 tt2 = VALUE_TYPE(t2[i]);
1338 if (TYPE_CODE (tt1) == TYPE_CODE_REF
479fdd26 1339 /* We should be doing hairy argument matching, as below. */
40620258 1340 && (TYPE_CODE (TYPE_TARGET_TYPE (tt1)) == TYPE_CODE (tt2)))
479fdd26
JK
1341 {
1342 t2[i] = value_addr (t2[i]);
1343 continue;
1344 }
1345
40620258
KH
1346 while (TYPE_CODE (tt1) == TYPE_CODE_PTR
1347 && (TYPE_CODE(tt2)==TYPE_CODE_ARRAY || TYPE_CODE(tt2)==TYPE_CODE_PTR))
1348 {
1349 tt1 = TYPE_TARGET_TYPE(tt1);
1350 tt2 = TYPE_TARGET_TYPE(tt2);
1351 }
1352 if (TYPE_CODE(tt1) == TYPE_CODE(tt2)) continue;
1353 /* Array to pointer is a `trivial conversion' according to the ARM. */
479fdd26
JK
1354
1355 /* We should be doing much hairier argument matching (see section 13.2
1356 of the ARM), but as a quick kludge, just check for the same type
1357 code. */
a163ddec
MT
1358 if (TYPE_CODE (t1[i]) != TYPE_CODE (VALUE_TYPE (t2[i])))
1359 return i+1;
1360 }
1361 if (!t1[i]) return 0;
1362 return t2[i] ? i+1 : 0;
1363}
1364
bd5635a1
RP
1365/* Helper function used by value_struct_elt to recurse through baseclasses.
1366 Look for a field NAME in ARG1. Adjust the address of ARG1 by OFFSET bytes,
2a5ec41d 1367 and search in it assuming it has (class) type TYPE.
d3bab255
JK
1368 If found, return value, else return NULL.
1369
1370 If LOOKING_FOR_BASECLASS, then instead of looking for struct fields,
1371 look for a baseclass named NAME. */
bd5635a1 1372
a91a6192 1373static value_ptr
d3bab255 1374search_struct_field (name, arg1, offset, type, looking_for_baseclass)
bd5635a1 1375 char *name;
a91a6192 1376 register value_ptr arg1;
bd5635a1
RP
1377 int offset;
1378 register struct type *type;
d3bab255 1379 int looking_for_baseclass;
bd5635a1
RP
1380{
1381 int i;
1382
1383 check_stub_type (type);
1384
d3bab255
JK
1385 if (! looking_for_baseclass)
1386 for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
1387 {
1388 char *t_field_name = TYPE_FIELD_NAME (type, i);
1389
2e4964ad 1390 if (t_field_name && STREQ (t_field_name, name))
d3bab255 1391 {
a91a6192 1392 value_ptr v;
01be6913
PB
1393 if (TYPE_FIELD_STATIC (type, i))
1394 {
1395 char *phys_name = TYPE_FIELD_STATIC_PHYSNAME (type, i);
1396 struct symbol *sym =
2e4964ad
FF
1397 lookup_symbol (phys_name, 0, VAR_NAMESPACE, 0, NULL);
1398 if (sym == NULL)
1399 error ("Internal error: could not find physical static variable named %s",
1400 phys_name);
01be6913
PB
1401 v = value_at (TYPE_FIELD_TYPE (type, i),
1402 (CORE_ADDR)SYMBOL_BLOCK_VALUE (sym));
1403 }
1404 else
1405 v = value_primitive_field (arg1, offset, i, type);
d3bab255
JK
1406 if (v == 0)
1407 error("there is no field named %s", name);
1408 return v;
1409 }
1410 }
bd5635a1
RP
1411
1412 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1413 {
a91a6192 1414 value_ptr v;
bd5635a1 1415 /* If we are looking for baseclasses, this is what we get when we
54023465
JK
1416 hit them. But it could happen that the base part's member name
1417 is not yet filled in. */
d3bab255 1418 int found_baseclass = (looking_for_baseclass
54023465 1419 && TYPE_BASECLASS_NAME (type, i) != NULL
2e4964ad 1420 && STREQ (name, TYPE_BASECLASS_NAME (type, i)));
bd5635a1
RP
1421
1422 if (BASETYPE_VIA_VIRTUAL (type, i))
1423 {
a91a6192 1424 value_ptr v2;
bac89d6c 1425 /* Fix to use baseclass_offset instead. FIXME */
d11c44f1
JG
1426 baseclass_addr (type, i, VALUE_CONTENTS (arg1) + offset,
1427 &v2, (int *)NULL);
bd5635a1
RP
1428 if (v2 == 0)
1429 error ("virtual baseclass botch");
1430 if (found_baseclass)
1431 return v2;
d3bab255
JK
1432 v = search_struct_field (name, v2, 0, TYPE_BASECLASS (type, i),
1433 looking_for_baseclass);
bd5635a1 1434 }
01be6913 1435 else if (found_baseclass)
bd5635a1
RP
1436 v = value_primitive_field (arg1, offset, i, type);
1437 else
1438 v = search_struct_field (name, arg1,
1439 offset + TYPE_BASECLASS_BITPOS (type, i) / 8,
d3bab255
JK
1440 TYPE_BASECLASS (type, i),
1441 looking_for_baseclass);
bd5635a1
RP
1442 if (v) return v;
1443 }
1444 return NULL;
1445}
1446
1447/* Helper function used by value_struct_elt to recurse through baseclasses.
1448 Look for a field NAME in ARG1. Adjust the address of ARG1 by OFFSET bytes,
2a5ec41d 1449 and search in it assuming it has (class) type TYPE.
cef4c2e7 1450 If found, return value, else if name matched and args not return (value)-1,
5b5c6d94 1451 else return NULL. */
bd5635a1 1452
a91a6192 1453static value_ptr
bac89d6c 1454search_struct_method (name, arg1p, args, offset, static_memfuncp, type)
bd5635a1 1455 char *name;
a91a6192 1456 register value_ptr *arg1p, *args;
bd5635a1
RP
1457 int offset, *static_memfuncp;
1458 register struct type *type;
1459{
1460 int i;
a91a6192 1461 value_ptr v;
67e9b3b3 1462 int name_matched = 0;
6ebc9cdd 1463 char dem_opname[64];
bd5635a1
RP
1464
1465 check_stub_type (type);
1466 for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
1467 {
1468 char *t_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
6ebc9cdd
KH
1469 if (strncmp(t_field_name, "__", 2)==0 ||
1470 strncmp(t_field_name, "op", 2)==0 ||
1471 strncmp(t_field_name, "type", 4)==0 )
1472 {
1473 if (cplus_demangle_opname(t_field_name, dem_opname, DMGL_ANSI))
1474 t_field_name = dem_opname;
1475 else if (cplus_demangle_opname(t_field_name, dem_opname, 0))
1476 t_field_name = dem_opname;
1477 }
2e4964ad 1478 if (t_field_name && STREQ (t_field_name, name))
bd5635a1 1479 {
d3bab255 1480 int j = TYPE_FN_FIELDLIST_LENGTH (type, i) - 1;
bd5635a1 1481 struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
5b5c6d94 1482 name_matched = 1;
bd5635a1 1483
d3bab255
JK
1484 if (j > 0 && args == 0)
1485 error ("cannot resolve overloaded method `%s'", name);
1486 while (j >= 0)
bd5635a1 1487 {
8e9a3f3b 1488 if (TYPE_FN_FIELD_STUB (f, j))
bd5635a1
RP
1489 check_stub_method (type, i, j);
1490 if (!typecmp (TYPE_FN_FIELD_STATIC_P (f, j),
1491 TYPE_FN_FIELD_ARGS (f, j), args))
1492 {
1493 if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
a91a6192 1494 return value_virtual_fn_field (arg1p, f, j, type, offset);
bd5635a1
RP
1495 if (TYPE_FN_FIELD_STATIC_P (f, j) && static_memfuncp)
1496 *static_memfuncp = 1;
a91a6192
SS
1497 v = value_fn_field (arg1p, f, j, type, offset);
1498 if (v != NULL) return v;
bd5635a1 1499 }
d3bab255 1500 j--;
bd5635a1
RP
1501 }
1502 }
1503 }
1504
1505 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1506 {
01be6913 1507 int base_offset;
bd5635a1
RP
1508
1509 if (BASETYPE_VIA_VIRTUAL (type, i))
1510 {
9f739abd 1511 base_offset = baseclass_offset (type, i, *arg1p, offset);
bac89d6c 1512 if (base_offset == -1)
bd5635a1 1513 error ("virtual baseclass botch");
bd5635a1 1514 }
01be6913
PB
1515 else
1516 {
01be6913
PB
1517 base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
1518 }
bac89d6c 1519 v = search_struct_method (name, arg1p, args, base_offset + offset,
bd5635a1 1520 static_memfuncp, TYPE_BASECLASS (type, i));
a91a6192 1521 if (v == (value_ptr) -1)
5b5c6d94
KH
1522 {
1523 name_matched = 1;
1524 }
1525 else if (v)
bac89d6c
FF
1526 {
1527/* FIXME-bothner: Why is this commented out? Why is it here? */
1528/* *arg1p = arg1_tmp;*/
1529 return v;
1530 }
bd5635a1 1531 }
a91a6192 1532 if (name_matched) return (value_ptr) -1;
5b5c6d94 1533 else return NULL;
bd5635a1
RP
1534}
1535
1536/* Given *ARGP, a value of type (pointer to a)* structure/union,
1537 extract the component named NAME from the ultimate target structure/union
1538 and return it as a value with its appropriate type.
1539 ERR is used in the error message if *ARGP's type is wrong.
1540
1541 C++: ARGS is a list of argument types to aid in the selection of
1542 an appropriate method. Also, handle derived types.
1543
1544 STATIC_MEMFUNCP, if non-NULL, points to a caller-supplied location
1545 where the truthvalue of whether the function that was resolved was
1546 a static member function or not is stored.
1547
1548 ERR is an error message to be printed in case the field is not found. */
1549
a91a6192 1550value_ptr
bd5635a1 1551value_struct_elt (argp, args, name, static_memfuncp, err)
a91a6192 1552 register value_ptr *argp, *args;
bd5635a1
RP
1553 char *name;
1554 int *static_memfuncp;
1555 char *err;
1556{
1557 register struct type *t;
a91a6192 1558 value_ptr v;
bd5635a1
RP
1559
1560 COERCE_ARRAY (*argp);
1561
1562 t = VALUE_TYPE (*argp);
1563
1564 /* Follow pointers until we get to a non-pointer. */
1565
1566 while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
1567 {
bd5635a1 1568 *argp = value_ind (*argp);
f2ebc25f
JK
1569 /* Don't coerce fn pointer to fn and then back again! */
1570 if (TYPE_CODE (VALUE_TYPE (*argp)) != TYPE_CODE_FUNC)
1571 COERCE_ARRAY (*argp);
bd5635a1
RP
1572 t = VALUE_TYPE (*argp);
1573 }
1574
1575 if (TYPE_CODE (t) == TYPE_CODE_MEMBER)
1576 error ("not implemented: member type in value_struct_elt");
1577
2a5ec41d 1578 if ( TYPE_CODE (t) != TYPE_CODE_STRUCT
bd5635a1
RP
1579 && TYPE_CODE (t) != TYPE_CODE_UNION)
1580 error ("Attempt to extract a component of a value that is not a %s.", err);
1581
1582 /* Assume it's not, unless we see that it is. */
1583 if (static_memfuncp)
1584 *static_memfuncp =0;
1585
1586 if (!args)
1587 {
1588 /* if there are no arguments ...do this... */
1589
d3bab255 1590 /* Try as a field first, because if we succeed, there
bd5635a1 1591 is less work to be done. */
d3bab255 1592 v = search_struct_field (name, *argp, 0, t, 0);
bd5635a1
RP
1593 if (v)
1594 return v;
1595
1596 /* C++: If it was not found as a data field, then try to
1597 return it as a pointer to a method. */
1598
1599 if (destructor_name_p (name, t))
1600 error ("Cannot get value of destructor");
1601
bac89d6c 1602 v = search_struct_method (name, argp, args, 0, static_memfuncp, t);
bd5635a1 1603
a91a6192 1604 if (v == (value_ptr) -1)
67e9b3b3
PS
1605 error ("Cannot take address of a method");
1606 else if (v == 0)
bd5635a1
RP
1607 {
1608 if (TYPE_NFN_FIELDS (t))
1609 error ("There is no member or method named %s.", name);
1610 else
1611 error ("There is no member named %s.", name);
1612 }
1613 return v;
1614 }
1615
1616 if (destructor_name_p (name, t))
1617 {
1618 if (!args[1])
1619 {
1620 /* destructors are a special case. */
a91a6192
SS
1621 v = value_fn_field (NULL, TYPE_FN_FIELDLIST1 (t, 0),
1622 TYPE_FN_FIELDLIST_LENGTH (t, 0), 0, 0);
40620258
KH
1623 if (!v) error("could not find destructor function named %s.", name);
1624 else return v;
bd5635a1
RP
1625 }
1626 else
1627 {
1628 error ("destructor should not have any argument");
1629 }
1630 }
1631 else
bac89d6c 1632 v = search_struct_method (name, argp, args, 0, static_memfuncp, t);
bd5635a1 1633
a91a6192 1634 if (v == (value_ptr) -1)
5b5c6d94
KH
1635 {
1636 error("Argument list of %s mismatch with component in the structure.", name);
1637 }
1638 else if (v == 0)
bd5635a1
RP
1639 {
1640 /* See if user tried to invoke data as function. If so,
1641 hand it back. If it's not callable (i.e., a pointer to function),
1642 gdb should give an error. */
d3bab255 1643 v = search_struct_field (name, *argp, 0, t, 0);
bd5635a1
RP
1644 }
1645
1646 if (!v)
1647 error ("Structure has no component named %s.", name);
1648 return v;
1649}
1650
1651/* C++: return 1 is NAME is a legitimate name for the destructor
1652 of type TYPE. If TYPE does not have a destructor, or
1653 if NAME is inappropriate for TYPE, an error is signaled. */
1654int
1655destructor_name_p (name, type)
7919c3ed
JG
1656 const char *name;
1657 const struct type *type;
bd5635a1
RP
1658{
1659 /* destructors are a special case. */
1660
1661 if (name[0] == '~')
1662 {
1663 char *dname = type_name_no_tag (type);
2e4964ad 1664 if (!STREQ (dname, name+1))
bd5635a1
RP
1665 error ("name of destructor must equal name of class");
1666 else
1667 return 1;
1668 }
1669 return 0;
1670}
1671
1672/* Helper function for check_field: Given TYPE, a structure/union,
1673 return 1 if the component named NAME from the ultimate
1674 target structure/union is defined, otherwise, return 0. */
1675
1676static int
1677check_field_in (type, name)
1678 register struct type *type;
01be6913 1679 const char *name;
bd5635a1
RP
1680{
1681 register int i;
1682
1683 for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
1684 {
1685 char *t_field_name = TYPE_FIELD_NAME (type, i);
2e4964ad 1686 if (t_field_name && STREQ (t_field_name, name))
bd5635a1
RP
1687 return 1;
1688 }
1689
1690 /* C++: If it was not found as a data field, then try to
1691 return it as a pointer to a method. */
1692
1693 /* Destructors are a special case. */
1694 if (destructor_name_p (name, type))
1695 return 1;
1696
1697 for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; --i)
1698 {
2e4964ad 1699 if (STREQ (TYPE_FN_FIELDLIST_NAME (type, i), name))
bd5635a1
RP
1700 return 1;
1701 }
1702
1703 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1704 if (check_field_in (TYPE_BASECLASS (type, i), name))
1705 return 1;
1706
1707 return 0;
1708}
1709
1710
1711/* C++: Given ARG1, a value of type (pointer to a)* structure/union,
1712 return 1 if the component named NAME from the ultimate
1713 target structure/union is defined, otherwise, return 0. */
1714
1715int
1716check_field (arg1, name)
a91a6192 1717 register value_ptr arg1;
7919c3ed 1718 const char *name;
bd5635a1
RP
1719{
1720 register struct type *t;
1721
1722 COERCE_ARRAY (arg1);
1723
1724 t = VALUE_TYPE (arg1);
1725
1726 /* Follow pointers until we get to a non-pointer. */
1727
1728 while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
1729 t = TYPE_TARGET_TYPE (t);
1730
1731 if (TYPE_CODE (t) == TYPE_CODE_MEMBER)
1732 error ("not implemented: member type in check_field");
1733
2a5ec41d 1734 if ( TYPE_CODE (t) != TYPE_CODE_STRUCT
bd5635a1
RP
1735 && TYPE_CODE (t) != TYPE_CODE_UNION)
1736 error ("Internal error: `this' is not an aggregate");
1737
1738 return check_field_in (t, name);
1739}
1740
01be6913 1741/* C++: Given an aggregate type CURTYPE, and a member name NAME,
2a5ec41d 1742 return the address of this member as a "pointer to member"
bd5635a1
RP
1743 type. If INTYPE is non-null, then it will be the type
1744 of the member we are looking for. This will help us resolve
01be6913
PB
1745 "pointers to member functions". This function is used
1746 to resolve user expressions of the form "DOMAIN::NAME". */
bd5635a1 1747
a91a6192 1748value_ptr
51b57ded 1749value_struct_elt_for_reference (domain, offset, curtype, name, intype)
01be6913 1750 struct type *domain, *curtype, *intype;
51b57ded 1751 int offset;
bd5635a1
RP
1752 char *name;
1753{
01be6913 1754 register struct type *t = curtype;
bd5635a1 1755 register int i;
a91a6192 1756 value_ptr v;
bd5635a1 1757
2a5ec41d 1758 if ( TYPE_CODE (t) != TYPE_CODE_STRUCT
bd5635a1 1759 && TYPE_CODE (t) != TYPE_CODE_UNION)
01be6913 1760 error ("Internal error: non-aggregate type to value_struct_elt_for_reference");
bd5635a1 1761
01be6913 1762 for (i = TYPE_NFIELDS (t) - 1; i >= TYPE_N_BASECLASSES (t); i--)
bd5635a1 1763 {
01be6913
PB
1764 char *t_field_name = TYPE_FIELD_NAME (t, i);
1765
2e4964ad 1766 if (t_field_name && STREQ (t_field_name, name))
bd5635a1 1767 {
01be6913 1768 if (TYPE_FIELD_STATIC (t, i))
bd5635a1 1769 {
01be6913
PB
1770 char *phys_name = TYPE_FIELD_STATIC_PHYSNAME (t, i);
1771 struct symbol *sym =
1772 lookup_symbol (phys_name, 0, VAR_NAMESPACE, 0, NULL);
2e4964ad
FF
1773 if (sym == NULL)
1774 error ("Internal error: could not find physical static variable named %s",
01be6913
PB
1775 phys_name);
1776 return value_at (SYMBOL_TYPE (sym),
1777 (CORE_ADDR)SYMBOL_BLOCK_VALUE (sym));
bd5635a1 1778 }
01be6913
PB
1779 if (TYPE_FIELD_PACKED (t, i))
1780 error ("pointers to bitfield members not allowed");
1781
1782 return value_from_longest
1783 (lookup_reference_type (lookup_member_type (TYPE_FIELD_TYPE (t, i),
1784 domain)),
51b57ded 1785 offset + (LONGEST) (TYPE_FIELD_BITPOS (t, i) >> 3));
bd5635a1 1786 }
bd5635a1
RP
1787 }
1788
1789 /* C++: If it was not found as a data field, then try to
1790 return it as a pointer to a method. */
bd5635a1
RP
1791
1792 /* Destructors are a special case. */
1793 if (destructor_name_p (name, t))
1794 {
2a5ec41d 1795 error ("member pointers to destructors not implemented yet");
bd5635a1
RP
1796 }
1797
1798 /* Perform all necessary dereferencing. */
1799 while (intype && TYPE_CODE (intype) == TYPE_CODE_PTR)
1800 intype = TYPE_TARGET_TYPE (intype);
1801
01be6913 1802 for (i = TYPE_NFN_FIELDS (t) - 1; i >= 0; --i)
bd5635a1 1803 {
852b3831
PB
1804 char *t_field_name = TYPE_FN_FIELDLIST_NAME (t, i);
1805 char dem_opname[64];
1806
1807 if (strncmp(t_field_name, "__", 2)==0 ||
1808 strncmp(t_field_name, "op", 2)==0 ||
1809 strncmp(t_field_name, "type", 4)==0 )
1810 {
1811 if (cplus_demangle_opname(t_field_name, dem_opname, DMGL_ANSI))
1812 t_field_name = dem_opname;
1813 else if (cplus_demangle_opname(t_field_name, dem_opname, 0))
1814 t_field_name = dem_opname;
1815 }
1816 if (t_field_name && STREQ (t_field_name, name))
bd5635a1 1817 {
01be6913
PB
1818 int j = TYPE_FN_FIELDLIST_LENGTH (t, i);
1819 struct fn_field *f = TYPE_FN_FIELDLIST1 (t, i);
1820
1821 if (intype == 0 && j > 1)
1822 error ("non-unique member `%s' requires type instantiation", name);
1823 if (intype)
bd5635a1 1824 {
01be6913
PB
1825 while (j--)
1826 if (TYPE_FN_FIELD_TYPE (f, j) == intype)
1827 break;
1828 if (j < 0)
1829 error ("no member function matches that type instantiation");
1830 }
1831 else
1832 j = 0;
1833
1834 if (TYPE_FN_FIELD_STUB (f, j))
1835 check_stub_method (t, i, j);
1836 if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
1837 {
1838 return value_from_longest
1839 (lookup_reference_type
1840 (lookup_member_type (TYPE_FN_FIELD_TYPE (f, j),
1841 domain)),
bac89d6c
FF
1842 (LONGEST) METHOD_PTR_FROM_VOFFSET
1843 (TYPE_FN_FIELD_VOFFSET (f, j)));
01be6913
PB
1844 }
1845 else
1846 {
1847 struct symbol *s = lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
1848 0, VAR_NAMESPACE, 0, NULL);
35fcebce
PB
1849 if (s == NULL)
1850 {
1851 v = 0;
1852 }
1853 else
1854 {
1855 v = read_var_value (s, 0);
01be6913 1856#if 0
35fcebce
PB
1857 VALUE_TYPE (v) = lookup_reference_type
1858 (lookup_member_type (TYPE_FN_FIELD_TYPE (f, j),
1859 domain));
01be6913 1860#endif
bd5635a1 1861 }
35fcebce 1862 return v;
bd5635a1
RP
1863 }
1864 }
35fcebce 1865 }
01be6913
PB
1866 for (i = TYPE_N_BASECLASSES (t) - 1; i >= 0; i--)
1867 {
a91a6192 1868 value_ptr v;
51b57ded
FF
1869 int base_offset;
1870
1871 if (BASETYPE_VIA_VIRTUAL (t, i))
1872 base_offset = 0;
1873 else
1874 base_offset = TYPE_BASECLASS_BITPOS (t, i) / 8;
01be6913 1875 v = value_struct_elt_for_reference (domain,
51b57ded 1876 offset + base_offset,
01be6913
PB
1877 TYPE_BASECLASS (t, i),
1878 name,
1879 intype);
1880 if (v)
1881 return v;
bd5635a1
RP
1882 }
1883 return 0;
1884}
1885
bd5635a1
RP
1886/* C++: return the value of the class instance variable, if one exists.
1887 Flag COMPLAIN signals an error if the request is made in an
1888 inappropriate context. */
a91a6192 1889value_ptr
bd5635a1
RP
1890value_of_this (complain)
1891 int complain;
1892{
1893 extern FRAME selected_frame;
1894 struct symbol *func, *sym;
1895 struct block *b;
1896 int i;
1897 static const char funny_this[] = "this";
a91a6192 1898 value_ptr this;
bd5635a1
RP
1899
1900 if (selected_frame == 0)
1901 if (complain)
1902 error ("no frame selected");
1903 else return 0;
1904
1905 func = get_frame_function (selected_frame);
1906 if (!func)
1907 {
1908 if (complain)
1909 error ("no `this' in nameless context");
1910 else return 0;
1911 }
1912
1913 b = SYMBOL_BLOCK_VALUE (func);
1914 i = BLOCK_NSYMS (b);
1915 if (i <= 0)
1916 if (complain)
1917 error ("no args, no `this'");
1918 else return 0;
1919
1920 /* Calling lookup_block_symbol is necessary to get the LOC_REGISTER
1921 symbol instead of the LOC_ARG one (if both exist). */
1922 sym = lookup_block_symbol (b, funny_this, VAR_NAMESPACE);
1923 if (sym == NULL)
1924 {
1925 if (complain)
1926 error ("current stack frame not in method");
1927 else
1928 return NULL;
1929 }
1930
1931 this = read_var_value (sym, selected_frame);
1932 if (this == 0 && complain)
1933 error ("`this' argument at unknown address");
1934 return this;
1935}
a91a6192
SS
1936
1937/* Create a value for a literal string. We copy data into a local
1938 (NOT inferior's memory) buffer, and then set up an array value.
1939
1940 The array bounds are set from LOWBOUND and HIGHBOUND, and the array is
1941 populated from the values passed in ELEMVEC.
1942
1943 The element type of the array is inherited from the type of the
1944 first element, and all elements must have the same size (though we
1945 don't currently enforce any restriction on their types). */
1946
1947value_ptr
1948f77_value_literal_string (lowbound, highbound, elemvec)
1949 int lowbound;
1950 int highbound;
1951 value_ptr *elemvec;
1952{
1953 int nelem;
1954 int idx;
1955 int typelength;
1956 register value_ptr val;
1957 struct type *rangetype;
1958 struct type *arraytype;
9ed8604f 1959 char *addr;
a91a6192
SS
1960
1961 /* Validate that the bounds are reasonable and that each of the elements
1962 have the same size. */
1963
1964 nelem = highbound - lowbound + 1;
1965 if (nelem <= 0)
1966 error ("bad array bounds (%d, %d)", lowbound, highbound);
1967 typelength = TYPE_LENGTH (VALUE_TYPE (elemvec[0]));
1968 for (idx = 0; idx < nelem; idx++)
1969 {
1970 if (TYPE_LENGTH (VALUE_TYPE (elemvec[idx])) != typelength)
1971 error ("array elements must all be the same size");
1972 }
1973
1974 /* Make sure we are dealing with characters */
1975
1976 if (typelength != 1)
1977 error ("Found a non character type in a literal string ");
1978
1979 /* Allocate space to store the array */
1980
9ed8604f 1981 addr = xmalloc (nelem);
a91a6192
SS
1982 for (idx = 0; idx < nelem; idx++)
1983 {
1984 memcpy (addr + (idx), VALUE_CONTENTS (elemvec[idx]), 1);
1985 }
1986
1987 rangetype = create_range_type ((struct type *) NULL, builtin_type_int,
1988 lowbound, highbound);
1989
1990 arraytype = f77_create_literal_string_type ((struct type *) NULL,
1991 rangetype);
1992
1993 val = allocate_value (arraytype);
1994
1995 /* Make sure that this the rest of the world knows that this is
1996 a standard literal string, not one that is a substring of
1997 some base */
1998
9ed8604f 1999 VALUE_SUBSTRING_MEMADDR (val) = (CORE_ADDR)0;
a91a6192
SS
2000
2001 VALUE_LAZY (val) = 0;
9ed8604f 2002 VALUE_LITERAL_DATA (val) = addr;
a91a6192
SS
2003
2004 /* Since this is a standard literal string with no real lval,
2005 make sure that value_lval indicates this fact */
2006
2007 VALUE_LVAL (val) = not_lval;
2008 return val;
2009}
2010
2011/* Create a value for a substring. We copy data into a local
2012 (NOT inferior's memory) buffer, and then set up an array value.
2013
2014 The array bounds for the string are (1:(to-from +1))
2015 The elements of the string are all characters. */
2016
2017value_ptr
2018f77_value_substring (str, from, to)
2019 value_ptr str;
2020 int from;
2021 int to;
2022{
2023 int nelem;
2024 register value_ptr val;
2025 struct type *rangetype;
2026 struct type *arraytype;
2027 struct internalvar *var;
9ed8604f 2028 char *addr;
a91a6192
SS
2029
2030 /* Validate that the bounds are reasonable. */
2031
2032 nelem = to - from + 1;
2033 if (nelem <= 0)
2034 error ("bad substring bounds (%d, %d)", from, to);
2035
2036 rangetype = create_range_type ((struct type *) NULL, builtin_type_int,
2037 1, nelem);
2038
2039 arraytype = f77_create_literal_string_type ((struct type *) NULL,
2040 rangetype);
2041
2042 val = allocate_value (arraytype);
2043
2044 /* Allocate space to store the substring array */
2045
9ed8604f 2046 addr = xmalloc (nelem);
a91a6192
SS
2047
2048 /* Copy over the data */
2049
2050 /* In case we ever try to use this substring on the LHS of an assignment
2051 remember where the SOURCE substring begins, for lval_memory
2052 types this ptr is to a location in legal inferior memory,
2053 for lval_internalvars it is a ptr. to superior memory. This
2054 helps us out later when we do assigments like:
2055
2056 set var ARR(2:3) = 'ab'
2057
2058 */
2059
2060
2061 if (VALUE_LVAL (str) == lval_memory)
2062 {
9ed8604f 2063 if (VALUE_SUBSTRING_MEMADDR (str) == (CORE_ADDR)0)
a91a6192
SS
2064 {
2065 /* This is a regular lval_memory string located in the
2066 inferior */
2067
9ed8604f
PS
2068 VALUE_SUBSTRING_MEMADDR (val) = VALUE_ADDRESS (str) + (from - 1);
2069 target_read_memory (VALUE_SUBSTRING_MEMADDR (val), addr, nelem);
a91a6192
SS
2070 }
2071 else
2072 {
2073
2074#if 0
2075 /* str is a substring allocated in the superior. Just
2076 do a memcpy */
2077
9ed8604f
PS
2078 VALUE_SUBSTRING_MYADDR (val) = VALUE_LITERAL_DATA(str)+(from - 1);
2079 memcpy(addr, VALUE_SUBSTRING_MYADDR (val), nelem);
a91a6192
SS
2080#else
2081 error ("Cannot get substrings of substrings");
2082#endif
2083 }
2084 }
2085 else
2086 if (VALUE_LVAL(str) == lval_internalvar)
2087 {
2088 /* Internal variables of type TYPE_CODE_LITERAL_STRING
2089 have their data located in the superior
2090 process not the inferior */
2091
2092 var = VALUE_INTERNALVAR (str);
2093
9ed8604f
PS
2094 if (VALUE_SUBSTRING_MEMADDR (str) == (CORE_ADDR)0)
2095 VALUE_SUBSTRING_MYADDR (val) =
2096 ((char *) VALUE_LITERAL_DATA (var->value)) + (from - 1);
a91a6192
SS
2097 else
2098#if 0
9ed8604f 2099 VALUE_SUBSTRING_MYADDR (val) = VALUE_LITERAL_DATA(str)+(from -1);
a91a6192
SS
2100#else
2101 error ("Cannot get substrings of substrings");
2102#endif
9ed8604f 2103 memcpy (addr, VALUE_SUBSTRING_MYADDR (val), nelem);
a91a6192
SS
2104 }
2105 else
2106 error ("Substrings can not be applied to this data item");
2107
2108 VALUE_LAZY (val) = 0;
2109 VALUE_LITERAL_DATA (val) = addr;
2110
2111 /* This literal string's *data* is located in the superior BUT
2112 we do need to know where it came from (i.e. was the source
2113 string an internalvar or a regular lval_memory variable), so
2114 we set the lval field to indicate this. This will be useful
2115 when we use this value on the LHS of an expr. */
2116
2117 VALUE_LVAL (val) = VALUE_LVAL (str);
2118 return val;
2119}
2120
2121/* Create a value for a FORTRAN complex number. Currently most of
2122 the time values are coerced to COMPLEX*16 (i.e. a complex number
2123 composed of 2 doubles. This really should be a smarter routine
2124 that figures out precision inteligently as opposed to assuming
2125 doubles. FIXME: fmb */
2126
2127value_ptr
2128f77_value_literal_complex (arg1, arg2, size)
2129 value_ptr arg1;
2130 value_ptr arg2;
2131 int size;
2132{
2133 struct type *complex_type;
2134 register value_ptr val;
2135 char *addr;
2136
2137 if (size != 8 && size != 16 && size != 32)
2138 error ("Cannot create number of type 'complex*%d'", size);
2139
2140 /* If either value comprising a complex number is a non-floating
2141 type, cast to double. */
2142
2143 if (TYPE_CODE (VALUE_TYPE (arg1)) != TYPE_CODE_FLT)
2144 arg1 = value_cast (builtin_type_f_real_s8, arg1);
2145
2146 if (TYPE_CODE (VALUE_TYPE (arg1)) != TYPE_CODE_FLT)
2147 arg2 = value_cast (builtin_type_f_real_s8, arg2);
2148
2149 complex_type = f77_create_literal_complex_type (VALUE_TYPE (arg1),
9ed8604f
PS
2150 VALUE_TYPE (arg2)
2151#if 0
2152/* FIXME: does f77_create_literal_complex_type need to do something with
2153 this? */
2154 ,
2155 size
2156#endif
2157 );
a91a6192
SS
2158
2159 val = allocate_value (complex_type);
2160
2161 /* Now create a pointer to enough memory to hold the the two args */
2162
9ed8604f 2163 addr = xmalloc (TYPE_LENGTH (complex_type));
a91a6192
SS
2164
2165 /* Copy over the two components */
2166
2167 memcpy (addr, VALUE_CONTENTS_RAW (arg1), TYPE_LENGTH (VALUE_TYPE (arg1)));
2168
2169 memcpy (addr + TYPE_LENGTH (VALUE_TYPE (arg1)), VALUE_CONTENTS_RAW (arg2),
2170 TYPE_LENGTH (VALUE_TYPE (arg2)));
2171
2172 VALUE_ADDRESS (val) = 0; /* Not located in the inferior */
2173 VALUE_LAZY (val) = 0;
2174 VALUE_LITERAL_DATA (val) = addr;
2175
2176 /* Since this is a literal value, make sure that value_lval indicates
2177 this fact */
2178
2179 VALUE_LVAL (val) = not_lval;
2180 return val;
2181}
9ed8604f
PS
2182
2183/* Cast a value into the appropriate complex data type. Only works
2184 if both values are complex. */
2185
2186static value_ptr
2187f77_cast_into_complex (type, val)
2188 struct type *type;
2189 register value_ptr val;
2190{
2191 register enum type_code valcode;
2192 float tmp_f;
2193 double tmp_d;
2194 register value_ptr piece1, piece2;
2195
2196 int lenfrom, lento;
2197
2198 valcode = TYPE_CODE (VALUE_TYPE (val));
2199
2200 /* This casting will only work if the right hand side is
2201 either a regular complex type or a literal complex type.
2202 I.e: this casting is only for size adjustment of
2203 complex numbers not anything else. */
2204
2205 if ((valcode != TYPE_CODE_COMPLEX) &&
2206 (valcode != TYPE_CODE_LITERAL_COMPLEX))
2207 error ("Cannot cast from a non complex type!");
2208
2209 lenfrom = TYPE_LENGTH (VALUE_TYPE (val));
2210 lento = TYPE_LENGTH (type);
2211
2212 if (lento == lenfrom)
2213 error ("Value to be cast is already of type %s", TYPE_NAME (type));
2214
2215 if (lento == 32 || lenfrom == 32)
2216 error ("Casting into/out of complex*32 unsupported");
2217
2218 switch (lento)
2219 {
2220 case 16:
2221 {
2222 /* Since we have excluded lenfrom == 32 and
2223 lenfrom == 16, it MUST be 8 */
2224
2225 if (valcode == TYPE_CODE_LITERAL_COMPLEX)
2226 {
2227 /* Located in superior's memory. Routine should
2228 deal with both real literal complex numbers
2229 as well as internal vars */
2230
2231 /* Grab the two 4 byte reals that make up the complex*8 */
2232
2233 tmp_f = *((float *) VALUE_LITERAL_DATA (val));
2234
2235 piece1 = value_from_double(builtin_type_f_real_s8,tmp_f);
2236
2237 tmp_f = *((float *) (((char *) VALUE_LITERAL_DATA (val))
2238 + sizeof(float)));
2239
2240 piece2 = value_from_double (builtin_type_f_real_s8, tmp_f);
2241 }
2242 else
2243 {
2244 /* Located in inferior memory, so first we need
2245 to read the 2 floats that make up the 8 byte
2246 complex we are are casting from */
2247
2248 read_memory ((CORE_ADDR) VALUE_CONTENTS (val),
2249 (char *) &tmp_f, sizeof(float));
2250
2251 piece1 = value_from_double (builtin_type_f_real_s8, tmp_f);
2252
2253 read_memory ((CORE_ADDR) VALUE_CONTENTS (val) + sizeof(float),
2254 (char *) &tmp_f, sizeof(float));
2255
2256 piece2 = value_from_double (builtin_type_f_real_s8, tmp_f);
2257 }
2258 return f77_value_literal_complex (piece1, piece2, 16);
2259 }
2260
2261 case 8:
2262 {
2263 /* Since we have excluded lenfrom == 32 and
2264 lenfrom == 8, it MUST be 16. NOTE: in this
2265 case data may be since we are dropping precison */
2266
2267 if (valcode == TYPE_CODE_LITERAL_COMPLEX)
2268 {
2269 /* Located in superior's memory. Routine should
2270 deal with both real literal complex numbers
2271 as well as internal vars */
2272
2273 /* Grab the two 8 byte reals that make up the complex*16 */
2274
2275 tmp_d = *((double *) VALUE_LITERAL_DATA (val));
2276
2277 piece1 = value_from_double (builtin_type_f_real, tmp_d);
2278
2279 tmp_d = *((double *) (((char *) VALUE_LITERAL_DATA (val))
2280 + sizeof(double)));
2281
2282 piece2 = value_from_double (builtin_type_f_real, tmp_d);
2283 }
2284 else
2285 {
2286 /* Located in inferior memory, so first we need to read the
2287 2 floats that make up the 8 byte complex we are are
2288 casting from. */
2289
2290 read_memory ((CORE_ADDR) VALUE_CONTENTS (val),
2291 (char *) &tmp_d, sizeof(double));
2292
2293 piece1 = value_from_double (builtin_type_f_real, tmp_d);
2294
2295 read_memory ((CORE_ADDR) VALUE_CONTENTS (val) + sizeof(double),
2296 (char *) &tmp_f, sizeof(double));
2297
2298 piece2 = value_from_double (builtin_type_f_real, tmp_d);
2299 }
2300 return f77_value_literal_complex (piece1, piece2, 8);
2301 }
2302
2303 default:
2304 error ("Invalid F77 complex number cast");
2305 }
2306}
2307
2308/* The following function is called in order to assign
2309 a literal F77 array to either an internal GDB variable
2310 or to a real array variable in the inferior.
2311 This function is necessary because in F77, literal
2312 arrays are allocated in the superior's memory space
2313 NOT the inferior's. This function provides a way to
2314 get the F77 stuff to work without messing with the
2315 way C deals with this issue. NOTE: we are assuming
2316 that all F77 array literals are STRING array literals. F77
2317 users have no good way of expressing non-string
2318 literal strings.
2319
2320 This routine now also handles assignment TO literal strings
2321 in the peculiar case of substring assignments of the
2322 form:
2323
2324 STR(2:3) = 'foo'
2325
2326 */
2327
2328static value_ptr
2329f77_assign_from_literal_string (toval, fromval)
2330 register value_ptr toval, fromval;
2331{
2332 register struct type *type = VALUE_TYPE (toval);
2333 register value_ptr val;
2334 struct internalvar *var;
2335 int lenfrom, lento;
2336 CORE_ADDR tmp_addr;
2337 char *c;
2338
2339 lenfrom = TYPE_LENGTH (VALUE_TYPE (fromval));
2340 lento = TYPE_LENGTH (VALUE_TYPE (toval));
2341
2342 if ((VALUE_LVAL (toval) == lval_internalvar
2343 || VALUE_LVAL (toval) == lval_memory)
2344 && VALUE_SUBSTRING_START (toval) != 0)
2345 {
2346 /* We are assigning TO a substring type. This is of the form:
2347
2348 set A(2:5) = 'foov'
2349
2350 The result of this will be a modified toval not a brand new
2351 value. This is high F77 weirdness. */
2352
2353 /* Simply overwrite the relevant memory, wherever it
2354 exists. Use standard F77 character assignment rules
2355 (if len(toval) > len(fromval) pad with blanks,
2356 if len(toval) < len(fromval) truncate else just copy. */
2357
2358 if (VALUE_LVAL (toval) == lval_internalvar)
2359 {
2360 /* Memory in superior. */
2361 var = VALUE_INTERNALVAR (toval);
2362 memcpy ((char *) VALUE_SUBSTRING_START (toval),
2363 (char *) VALUE_LITERAL_DATA (fromval),
2364 (lento > lenfrom) ? lenfrom : lento);
2365
2366 /* Check to see if we have to pad. */
2367
2368 if (lento > lenfrom)
2369 {
2370 memset((char *) VALUE_SUBSTRING_START(toval) + lenfrom,
2371 ' ', lento - lenfrom);
2372 }
2373 }
2374 else
2375 {
2376 /* Memory in inferior. */
2377 write_memory ((CORE_ADDR) VALUE_SUBSTRING_START (toval),
2378 (char *) VALUE_LITERAL_DATA (fromval),
2379 (lento > lenfrom) ? lenfrom : lento);
2380
2381 /* Check to see if we have to pad. */
2382
2383 if (lento > lenfrom)
2384 {
2385 c = alloca (lento-lenfrom);
2386 memset (c, ' ', lento - lenfrom);
2387
2388 tmp_addr = VALUE_SUBSTRING_START (toval) + lenfrom;
2389 write_memory (tmp_addr, c, lento - lenfrom);
2390 }
2391 }
2392 return fromval;
2393 }
2394 else
2395 {
2396 if (VALUE_LVAL (toval) == lval_internalvar)
2397 type = VALUE_TYPE (fromval);
2398
2399 val = allocate_value (type);
2400
2401 switch (VALUE_LVAL (toval))
2402 {
2403 case lval_internalvar:
2404
2405 /* Internal variables are funny. Their value information
2406 is stored in the location.internalvar sub structure. */
2407
2408 var = VALUE_INTERNALVAR (toval);
2409
2410 /* The item in toval is a regular internal variable
2411 and this assignment is of the form:
2412
2413 set var $foo = 'hello' */
2414
2415 /* First free up any old stuff in this internalvar. */
2416
2417 free (VALUE_LITERAL_DATA (var->value));
2418 VALUE_LITERAL_DATA (var->value) = 0;
2419 VALUE_LAZY (var->value) = 0; /* Disable lazy fetches since this
2420 is not located in inferior. */
2421
2422 /* Copy over the relevant value data from 'fromval' */
2423
2424 set_internalvar (VALUE_INTERNALVAR (toval), fromval);
2425
2426 /* Now replicate the VALUE_LITERAL_DATA field so that
2427 we may later safely de-allocate fromval. */
2428
2429 VALUE_LITERAL_DATA (var->value) =
2430 malloc (TYPE_LENGTH (VALUE_TYPE (fromval)));
2431
2432 memcpy((char *) VALUE_LITERAL_DATA (var->value),
2433 (char *) VALUE_LITERAL_DATA (fromval),
2434 lenfrom);
2435
2436 /* Copy over all relevant value data from 'toval'. into
2437 the structure to returned */
2438
2439 memcpy (val, toval, sizeof(struct value));
2440
2441 /* Lastly copy the pointer to the area where the
2442 internalvar data is stored to the VALUE_CONTENTS field.
2443 This will be a helpful shortcut for printout
2444 routines later */
2445
2446 VALUE_LITERAL_DATA (val) = VALUE_LITERAL_DATA (var->value);
2447 break;
2448
2449 case lval_memory:
2450
2451 /* We are copying memory from the local (superior)
2452 literal string to a legitimate address in the
2453 inferior. VALUE_ADDRESS is the address in
2454 the inferior. VALUE_OFFSET is not used because
2455 structs do not exist in F77. */
2456
2457 /* Copy over all relevant value data from 'toval'. */
2458
2459 memcpy (val, toval, sizeof(struct value));
2460
2461 write_memory ((CORE_ADDR) VALUE_ADDRESS (val),
2462 (char *) VALUE_LITERAL_DATA (fromval),
2463 (lento > lenfrom) ? lenfrom : lento);
2464
2465 /* Check to see if we have to pad */
2466
2467 if (lento > lenfrom)
2468 {
2469 c = alloca (lento - lenfrom);
2470 memset (c, ' ', lento - lenfrom);
2471 tmp_addr = VALUE_ADDRESS (val) + lenfrom;
2472 write_memory (tmp_addr, c, lento - lenfrom);
2473 }
2474 break;
2475
2476 default:
2477 error ("Unknown lval type in f77_assign_from_literal_string");
2478 }
2479
2480 /* Now free up the transient literal string's storage. */
2481
2482 free (VALUE_LITERAL_DATA (fromval));
2483
2484 VALUE_TYPE (val) = type;
2485
2486 return val;
2487 }
2488}
2489
2490
2491/* The following function is called in order to assign a literal F77
2492 complex to either an internal GDB variable or to a real complex
2493 variable in the inferior. This function is necessary because in F77,
2494 composite literals are allocated in the superior's memory space
2495 NOT the inferior's. This function provides a way to get the F77 stuff
2496 to work without messing with the way C deals with this issue. */
2497
2498static value_ptr
2499f77_assign_from_literal_complex (toval, fromval)
2500 register value_ptr toval, fromval;
2501{
2502 register struct type *type = VALUE_TYPE (toval);
2503 register value_ptr val;
2504 struct internalvar *var;
2505 float tmp_float=0;
2506 double tmp_double = 0;
2507
2508 if (VALUE_LVAL (toval) == lval_internalvar)
2509 type = VALUE_TYPE (fromval);
2510
2511 /* Allocate a value node for the result. */
2512
2513 val = allocate_value (type);
2514
2515 if (VALUE_LVAL (toval) == lval_internalvar)
2516 {
2517 /* Internal variables are funny. Their value information
2518 is stored in the location.internalvar sub structure. */
2519
2520 var = VALUE_INTERNALVAR (toval);
2521
2522 /* First free up any old stuff in this internalvar. */
2523
2524 free (VALUE_LITERAL_DATA (var->value));
2525 VALUE_LITERAL_DATA (var->value) = 0;
2526 VALUE_LAZY (var->value) = 0; /* Disable lazy fetches since
2527 this is not located in inferior. */
2528
2529 /* Copy over the relevant value data from 'fromval'. */
2530
2531 set_internalvar (VALUE_INTERNALVAR (toval), fromval);
2532
2533 /* Now replicate the VALUE_LITERAL_DATA field so that
2534 we may later safely de-allocate fromval. */
2535
2536 VALUE_LITERAL_DATA (var->value) =
2537 malloc (TYPE_LENGTH (VALUE_TYPE (fromval)));
2538
2539 memcpy ((char *) VALUE_LITERAL_DATA (var->value),
2540 (char *) VALUE_LITERAL_DATA (fromval),
2541 TYPE_LENGTH (VALUE_TYPE (fromval)));
2542
2543 /* Copy over all relevant value data from 'toval' into the
2544 structure to be returned. */
2545
2546 memcpy (val, toval, sizeof(struct value));
2547 }
2548 else
2549 {
2550 /* We are copying memory from the local (superior) process to a
2551 legitimate address in the inferior. VALUE_ADDRESS is the
2552 address in the inferior. */
2553
2554 /* Copy over all relevant value data from 'toval'. */
2555
2556 memcpy (val, toval, sizeof(struct value));
2557
2558 if (TYPE_LENGTH (VALUE_TYPE (fromval))
2559 > TYPE_LENGTH (VALUE_TYPE (toval)))
2560 {
2561 /* Since all literals are actually complex*16 types, deal with
2562 the case when one tries to assign a literal to a complex*8. */
2563
2564 if ((TYPE_LENGTH(VALUE_TYPE(fromval)) == 16) &&
2565 (TYPE_LENGTH(VALUE_TYPE(toval)) == 8))
2566 {
2567 tmp_double = *((double *) VALUE_LITERAL_DATA (fromval));
2568
2569 tmp_float = (float) tmp_double;
2570
2571 write_memory (VALUE_ADDRESS(val),
2572 (char *) &tmp_float, sizeof(float));
2573
2574 tmp_double = *((double *)
2575 (((char *) VALUE_LITERAL_DATA (fromval))
2576 + sizeof(double)));
2577
2578 tmp_float = (float) tmp_double;
2579
2580 write_memory(VALUE_ADDRESS(val) + sizeof(float),
2581 (char *) &tmp_float, sizeof(float));
2582 }
2583 else
2584 error ("Cannot assign literal complex to variable!");
2585 }
2586 else
2587 {
2588 write_memory (VALUE_ADDRESS (val),
2589 (char *) VALUE_LITERAL_DATA (fromval),
2590 TYPE_LENGTH (VALUE_TYPE (fromval)));
2591 }
2592 }
2593
2594 /* Now free up the transient literal string's storage */
2595
2596 free (VALUE_LITERAL_DATA (fromval));
2597
2598 VALUE_TYPE (val) = type;
2599
2600 return val;
2601}
This page took 0.326917 seconds and 4 git commands to generate.