2007-08-21 Michael Snyder <msnyder@access-company.com>
[binutils-gdb.git] / gdb / valops.c
1 /* Perform non-arithmetic operations on values, for GDB.
2
3 Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
4 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
5 2006, 2007 Free Software Foundation, Inc.
6
7 This file is part of GDB.
8
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2 of the License, or
12 (at your option) any later version.
13
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License
20 along with this program; if not, write to the Free Software
21 Foundation, Inc., 51 Franklin Street, Fifth Floor,
22 Boston, MA 02110-1301, USA. */
23
24 #include "defs.h"
25 #include "symtab.h"
26 #include "gdbtypes.h"
27 #include "value.h"
28 #include "frame.h"
29 #include "inferior.h"
30 #include "gdbcore.h"
31 #include "target.h"
32 #include "demangle.h"
33 #include "language.h"
34 #include "gdbcmd.h"
35 #include "regcache.h"
36 #include "cp-abi.h"
37 #include "block.h"
38 #include "infcall.h"
39 #include "dictionary.h"
40 #include "cp-support.h"
41
42 #include <errno.h>
43 #include "gdb_string.h"
44 #include "gdb_assert.h"
45 #include "cp-support.h"
46 #include "observer.h"
47
48 extern int overload_debug;
49 /* Local functions. */
50
51 static int typecmp (int staticp, int varargs, int nargs,
52 struct field t1[], struct value *t2[]);
53
54 static struct value *search_struct_field (char *, struct value *,
55 int, struct type *, int);
56
57 static struct value *search_struct_method (char *, struct value **,
58 struct value **,
59 int, int *, struct type *);
60
61 static int find_oload_champ_namespace (struct type **, int,
62 const char *, const char *,
63 struct symbol ***,
64 struct badness_vector **);
65
66 static
67 int find_oload_champ_namespace_loop (struct type **, int,
68 const char *, const char *,
69 int, struct symbol ***,
70 struct badness_vector **, int *);
71
72 static int find_oload_champ (struct type **, int, int, int,
73 struct fn_field *, struct symbol **,
74 struct badness_vector **);
75
76 static int oload_method_static (int, struct fn_field *, int);
77
78 enum oload_classification { STANDARD, NON_STANDARD, INCOMPATIBLE };
79
80 static enum
81 oload_classification classify_oload_match (struct badness_vector *,
82 int, int);
83
84 static int check_field_in (struct type *, const char *);
85
86 static struct value *value_struct_elt_for_reference (struct type *,
87 int, struct type *,
88 char *,
89 struct type *,
90 int, enum noside);
91
92 static struct value *value_namespace_elt (const struct type *,
93 char *, int , enum noside);
94
95 static struct value *value_maybe_namespace_elt (const struct type *,
96 char *, int,
97 enum noside);
98
99 static CORE_ADDR allocate_space_in_inferior (int);
100
101 static struct value *cast_into_complex (struct type *, struct value *);
102
103 static struct fn_field *find_method_list (struct value **, char *,
104 int, struct type *, int *,
105 struct type **, int *);
106
107 void _initialize_valops (void);
108
109 #if 0
110 /* Flag for whether we want to abandon failed expression evals by
111 default. */
112
113 static int auto_abandon = 0;
114 #endif
115
116 int overload_resolution = 0;
117 static void
118 show_overload_resolution (struct ui_file *file, int from_tty,
119 struct cmd_list_element *c,
120 const char *value)
121 {
122 fprintf_filtered (file, _("\
123 Overload resolution in evaluating C++ functions is %s.\n"),
124 value);
125 }
126
127 /* Find the address of function name NAME in the inferior. */
128
129 struct value *
130 find_function_in_inferior (const char *name)
131 {
132 struct symbol *sym;
133 sym = lookup_symbol (name, 0, VAR_DOMAIN, 0, NULL);
134 if (sym != NULL)
135 {
136 if (SYMBOL_CLASS (sym) != LOC_BLOCK)
137 {
138 error (_("\"%s\" exists in this program but is not a function."),
139 name);
140 }
141 return value_of_variable (sym, NULL);
142 }
143 else
144 {
145 struct minimal_symbol *msymbol =
146 lookup_minimal_symbol (name, NULL, NULL);
147 if (msymbol != NULL)
148 {
149 struct type *type;
150 CORE_ADDR maddr;
151 type = lookup_pointer_type (builtin_type_char);
152 type = lookup_function_type (type);
153 type = lookup_pointer_type (type);
154 maddr = SYMBOL_VALUE_ADDRESS (msymbol);
155 return value_from_pointer (type, maddr);
156 }
157 else
158 {
159 if (!target_has_execution)
160 error (_("evaluation of this expression requires the target program to be active"));
161 else
162 error (_("evaluation of this expression requires the program to have a function \"%s\"."), name);
163 }
164 }
165 }
166
167 /* Allocate NBYTES of space in the inferior using the inferior's
168 malloc and return a value that is a pointer to the allocated
169 space. */
170
171 struct value *
172 value_allocate_space_in_inferior (int len)
173 {
174 struct value *blocklen;
175 struct value *val =
176 find_function_in_inferior (gdbarch_name_of_malloc (current_gdbarch));
177
178 blocklen = value_from_longest (builtin_type_int, (LONGEST) len);
179 val = call_function_by_hand (val, 1, &blocklen);
180 if (value_logical_not (val))
181 {
182 if (!target_has_execution)
183 error (_("No memory available to program now: you need to start the target first"));
184 else
185 error (_("No memory available to program: call to malloc failed"));
186 }
187 return val;
188 }
189
190 static CORE_ADDR
191 allocate_space_in_inferior (int len)
192 {
193 return value_as_long (value_allocate_space_in_inferior (len));
194 }
195
196 /* Cast one pointer or reference type to another. Both TYPE and
197 the type of ARG2 should be pointer types, or else both should be
198 reference types. Returns the new pointer or reference. */
199
200 struct value *
201 value_cast_pointers (struct type *type, struct value *arg2)
202 {
203 struct type *type2 = check_typedef (value_type (arg2));
204 struct type *t1 = check_typedef (TYPE_TARGET_TYPE (type));
205 struct type *t2 = check_typedef (TYPE_TARGET_TYPE (type2));
206
207 if (TYPE_CODE (t1) == TYPE_CODE_STRUCT
208 && TYPE_CODE (t2) == TYPE_CODE_STRUCT
209 && !value_logical_not (arg2))
210 {
211 struct value *v;
212
213 /* Look in the type of the source to see if it contains the
214 type of the target as a superclass. If so, we'll need to
215 offset the pointer rather than just change its type. */
216 if (TYPE_NAME (t1) != NULL)
217 {
218 struct value *v2;
219
220 if (TYPE_CODE (type2) == TYPE_CODE_REF)
221 v2 = coerce_ref (arg2);
222 else
223 v2 = value_ind (arg2);
224 v = search_struct_field (type_name_no_tag (t1),
225 v2, 0, t2, 1);
226 if (v)
227 {
228 v = value_addr (v);
229 deprecated_set_value_type (v, type);
230 return v;
231 }
232 }
233
234 /* Look in the type of the target to see if it contains the
235 type of the source as a superclass. If so, we'll need to
236 offset the pointer rather than just change its type.
237 FIXME: This fails silently with virtual inheritance. */
238 if (TYPE_NAME (t2) != NULL)
239 {
240 v = search_struct_field (type_name_no_tag (t2),
241 value_zero (t1, not_lval), 0, t1, 1);
242 if (v)
243 {
244 CORE_ADDR addr2 = value_as_address (arg2);
245 addr2 -= (VALUE_ADDRESS (v)
246 + value_offset (v)
247 + value_embedded_offset (v));
248 return value_from_pointer (type, addr2);
249 }
250 }
251 }
252
253 /* No superclass found, just change the pointer type. */
254 arg2 = value_copy (arg2);
255 deprecated_set_value_type (arg2, type);
256 arg2 = value_change_enclosing_type (arg2, type);
257 set_value_pointed_to_offset (arg2, 0); /* pai: chk_val */
258 return arg2;
259 }
260
261 /* Cast value ARG2 to type TYPE and return as a value.
262 More general than a C cast: accepts any two types of the same length,
263 and if ARG2 is an lvalue it can be cast into anything at all. */
264 /* In C++, casts may change pointer or object representations. */
265
266 struct value *
267 value_cast (struct type *type, struct value *arg2)
268 {
269 enum type_code code1;
270 enum type_code code2;
271 int scalar;
272 struct type *type2;
273
274 int convert_to_boolean = 0;
275
276 if (value_type (arg2) == type)
277 return arg2;
278
279 CHECK_TYPEDEF (type);
280 code1 = TYPE_CODE (type);
281 arg2 = coerce_ref (arg2);
282 type2 = check_typedef (value_type (arg2));
283
284 /* You can't cast to a reference type. See value_cast_pointers
285 instead. */
286 gdb_assert (code1 != TYPE_CODE_REF);
287
288 /* A cast to an undetermined-length array_type, such as
289 (TYPE [])OBJECT, is treated like a cast to (TYPE [N])OBJECT,
290 where N is sizeof(OBJECT)/sizeof(TYPE). */
291 if (code1 == TYPE_CODE_ARRAY)
292 {
293 struct type *element_type = TYPE_TARGET_TYPE (type);
294 unsigned element_length = TYPE_LENGTH (check_typedef (element_type));
295 if (element_length > 0
296 && TYPE_ARRAY_UPPER_BOUND_TYPE (type) == BOUND_CANNOT_BE_DETERMINED)
297 {
298 struct type *range_type = TYPE_INDEX_TYPE (type);
299 int val_length = TYPE_LENGTH (type2);
300 LONGEST low_bound, high_bound, new_length;
301 if (get_discrete_bounds (range_type, &low_bound, &high_bound) < 0)
302 low_bound = 0, high_bound = 0;
303 new_length = val_length / element_length;
304 if (val_length % element_length != 0)
305 warning (_("array element type size does not divide object size in cast"));
306 /* FIXME-type-allocation: need a way to free this type when
307 we are done with it. */
308 range_type = create_range_type ((struct type *) NULL,
309 TYPE_TARGET_TYPE (range_type),
310 low_bound,
311 new_length + low_bound - 1);
312 deprecated_set_value_type (arg2,
313 create_array_type ((struct type *) NULL,
314 element_type,
315 range_type));
316 return arg2;
317 }
318 }
319
320 if (current_language->c_style_arrays
321 && TYPE_CODE (type2) == TYPE_CODE_ARRAY)
322 arg2 = value_coerce_array (arg2);
323
324 if (TYPE_CODE (type2) == TYPE_CODE_FUNC)
325 arg2 = value_coerce_function (arg2);
326
327 type2 = check_typedef (value_type (arg2));
328 code2 = TYPE_CODE (type2);
329
330 if (code1 == TYPE_CODE_COMPLEX)
331 return cast_into_complex (type, arg2);
332 if (code1 == TYPE_CODE_BOOL)
333 {
334 code1 = TYPE_CODE_INT;
335 convert_to_boolean = 1;
336 }
337 if (code1 == TYPE_CODE_CHAR)
338 code1 = TYPE_CODE_INT;
339 if (code2 == TYPE_CODE_BOOL || code2 == TYPE_CODE_CHAR)
340 code2 = TYPE_CODE_INT;
341
342 scalar = (code2 == TYPE_CODE_INT || code2 == TYPE_CODE_FLT
343 || code2 == TYPE_CODE_ENUM || code2 == TYPE_CODE_RANGE);
344
345 if (code1 == TYPE_CODE_STRUCT
346 && code2 == TYPE_CODE_STRUCT
347 && TYPE_NAME (type) != 0)
348 {
349 /* Look in the type of the source to see if it contains the
350 type of the target as a superclass. If so, we'll need to
351 offset the object in addition to changing its type. */
352 struct value *v = search_struct_field (type_name_no_tag (type),
353 arg2, 0, type2, 1);
354 if (v)
355 {
356 deprecated_set_value_type (v, type);
357 return v;
358 }
359 }
360 if (code1 == TYPE_CODE_FLT && scalar)
361 return value_from_double (type, value_as_double (arg2));
362 else if ((code1 == TYPE_CODE_INT || code1 == TYPE_CODE_ENUM
363 || code1 == TYPE_CODE_RANGE)
364 && (scalar || code2 == TYPE_CODE_PTR
365 || code2 == TYPE_CODE_MEMBERPTR))
366 {
367 LONGEST longest;
368
369 /* When we cast pointers to integers, we mustn't use
370 gdbarch_pointer_to_address to find the address the pointer
371 represents, as value_as_long would. GDB should evaluate
372 expressions just as the compiler would --- and the compiler
373 sees a cast as a simple reinterpretation of the pointer's
374 bits. */
375 if (code2 == TYPE_CODE_PTR)
376 longest = extract_unsigned_integer (value_contents (arg2),
377 TYPE_LENGTH (type2));
378 else
379 longest = value_as_long (arg2);
380 return value_from_longest (type, convert_to_boolean ?
381 (LONGEST) (longest ? 1 : 0) : longest);
382 }
383 else if (code1 == TYPE_CODE_PTR && (code2 == TYPE_CODE_INT
384 || code2 == TYPE_CODE_ENUM
385 || code2 == TYPE_CODE_RANGE))
386 {
387 /* TYPE_LENGTH (type) is the length of a pointer, but we really
388 want the length of an address! -- we are really dealing with
389 addresses (i.e., gdb representations) not pointers (i.e.,
390 target representations) here.
391
392 This allows things like "print *(int *)0x01000234" to work
393 without printing a misleading message -- which would
394 otherwise occur when dealing with a target having two byte
395 pointers and four byte addresses. */
396
397 int addr_bit = gdbarch_addr_bit (current_gdbarch);
398
399 LONGEST longest = value_as_long (arg2);
400 if (addr_bit < sizeof (LONGEST) * HOST_CHAR_BIT)
401 {
402 if (longest >= ((LONGEST) 1 << addr_bit)
403 || longest <= -((LONGEST) 1 << addr_bit))
404 warning (_("value truncated"));
405 }
406 return value_from_longest (type, longest);
407 }
408 else if (code1 == TYPE_CODE_METHODPTR && code2 == TYPE_CODE_INT
409 && value_as_long (arg2) == 0)
410 {
411 struct value *result = allocate_value (type);
412 cplus_make_method_ptr (value_contents_writeable (result), 0, 0);
413 return result;
414 }
415 else if (code1 == TYPE_CODE_MEMBERPTR && code2 == TYPE_CODE_INT
416 && value_as_long (arg2) == 0)
417 {
418 /* The Itanium C++ ABI represents NULL pointers to members as
419 minus one, instead of biasing the normal case. */
420 return value_from_longest (type, -1);
421 }
422 else if (TYPE_LENGTH (type) == TYPE_LENGTH (type2))
423 {
424 if (code1 == TYPE_CODE_PTR && code2 == TYPE_CODE_PTR)
425 return value_cast_pointers (type, arg2);
426
427 arg2 = value_copy (arg2);
428 deprecated_set_value_type (arg2, type);
429 arg2 = value_change_enclosing_type (arg2, type);
430 set_value_pointed_to_offset (arg2, 0); /* pai: chk_val */
431 return arg2;
432 }
433 else if (VALUE_LVAL (arg2) == lval_memory)
434 return value_at_lazy (type,
435 VALUE_ADDRESS (arg2) + value_offset (arg2));
436 else if (code1 == TYPE_CODE_VOID)
437 {
438 return value_zero (builtin_type_void, not_lval);
439 }
440 else
441 {
442 error (_("Invalid cast."));
443 return 0;
444 }
445 }
446
447 /* Create a value of type TYPE that is zero, and return it. */
448
449 struct value *
450 value_zero (struct type *type, enum lval_type lv)
451 {
452 struct value *val = allocate_value (type);
453 VALUE_LVAL (val) = lv;
454
455 return val;
456 }
457
458 /* Return a value with type TYPE located at ADDR.
459
460 Call value_at only if the data needs to be fetched immediately;
461 if we can be 'lazy' and defer the fetch, perhaps indefinately, call
462 value_at_lazy instead. value_at_lazy simply records the address of
463 the data and sets the lazy-evaluation-required flag. The lazy flag
464 is tested in the value_contents macro, which is used if and when
465 the contents are actually required.
466
467 Note: value_at does *NOT* handle embedded offsets; perform such
468 adjustments before or after calling it. */
469
470 struct value *
471 value_at (struct type *type, CORE_ADDR addr)
472 {
473 struct value *val;
474
475 if (TYPE_CODE (check_typedef (type)) == TYPE_CODE_VOID)
476 error (_("Attempt to dereference a generic pointer."));
477
478 val = allocate_value (type);
479
480 read_memory (addr, value_contents_all_raw (val), TYPE_LENGTH (type));
481
482 VALUE_LVAL (val) = lval_memory;
483 VALUE_ADDRESS (val) = addr;
484
485 return val;
486 }
487
488 /* Return a lazy value with type TYPE located at ADDR (cf. value_at). */
489
490 struct value *
491 value_at_lazy (struct type *type, CORE_ADDR addr)
492 {
493 struct value *val;
494
495 if (TYPE_CODE (check_typedef (type)) == TYPE_CODE_VOID)
496 error (_("Attempt to dereference a generic pointer."));
497
498 val = allocate_value (type);
499
500 VALUE_LVAL (val) = lval_memory;
501 VALUE_ADDRESS (val) = addr;
502 set_value_lazy (val, 1);
503
504 return val;
505 }
506
507 /* Called only from the value_contents and value_contents_all()
508 macros, if the current data for a variable needs to be loaded into
509 value_contents(VAL). Fetches the data from the user's process, and
510 clears the lazy flag to indicate that the data in the buffer is
511 valid.
512
513 If the value is zero-length, we avoid calling read_memory, which
514 would abort. We mark the value as fetched anyway -- all 0 bytes of
515 it.
516
517 This function returns a value because it is used in the
518 value_contents macro as part of an expression, where a void would
519 not work. The value is ignored. */
520
521 int
522 value_fetch_lazy (struct value *val)
523 {
524 CORE_ADDR addr = VALUE_ADDRESS (val) + value_offset (val);
525 int length = TYPE_LENGTH (value_enclosing_type (val));
526
527 struct type *type = value_type (val);
528 if (length)
529 read_memory (addr, value_contents_all_raw (val), length);
530
531 set_value_lazy (val, 0);
532 return 0;
533 }
534
535
536 /* Store the contents of FROMVAL into the location of TOVAL.
537 Return a new value with the location of TOVAL and contents of FROMVAL. */
538
539 struct value *
540 value_assign (struct value *toval, struct value *fromval)
541 {
542 struct type *type;
543 struct value *val;
544 struct frame_id old_frame;
545
546 if (!deprecated_value_modifiable (toval))
547 error (_("Left operand of assignment is not a modifiable lvalue."));
548
549 toval = coerce_ref (toval);
550
551 type = value_type (toval);
552 if (VALUE_LVAL (toval) != lval_internalvar)
553 fromval = value_cast (type, fromval);
554 else
555 fromval = coerce_array (fromval);
556 CHECK_TYPEDEF (type);
557
558 /* Since modifying a register can trash the frame chain, and
559 modifying memory can trash the frame cache, we save the old frame
560 and then restore the new frame afterwards. */
561 old_frame = get_frame_id (deprecated_safe_get_selected_frame ());
562
563 switch (VALUE_LVAL (toval))
564 {
565 case lval_internalvar:
566 set_internalvar (VALUE_INTERNALVAR (toval), fromval);
567 val = value_copy (VALUE_INTERNALVAR (toval)->value);
568 val = value_change_enclosing_type (val,
569 value_enclosing_type (fromval));
570 set_value_embedded_offset (val, value_embedded_offset (fromval));
571 set_value_pointed_to_offset (val,
572 value_pointed_to_offset (fromval));
573 return val;
574
575 case lval_internalvar_component:
576 set_internalvar_component (VALUE_INTERNALVAR (toval),
577 value_offset (toval),
578 value_bitpos (toval),
579 value_bitsize (toval),
580 fromval);
581 break;
582
583 case lval_memory:
584 {
585 const gdb_byte *dest_buffer;
586 CORE_ADDR changed_addr;
587 int changed_len;
588 gdb_byte buffer[sizeof (LONGEST)];
589
590 if (value_bitsize (toval))
591 {
592 /* We assume that the argument to read_memory is in units
593 of host chars. FIXME: Is that correct? */
594 changed_len = (value_bitpos (toval)
595 + value_bitsize (toval)
596 + HOST_CHAR_BIT - 1)
597 / HOST_CHAR_BIT;
598
599 if (changed_len > (int) sizeof (LONGEST))
600 error (_("Can't handle bitfields which don't fit in a %d bit word."),
601 (int) sizeof (LONGEST) * HOST_CHAR_BIT);
602
603 read_memory (VALUE_ADDRESS (toval) + value_offset (toval),
604 buffer, changed_len);
605 modify_field (buffer, value_as_long (fromval),
606 value_bitpos (toval), value_bitsize (toval));
607 changed_addr = VALUE_ADDRESS (toval) + value_offset (toval);
608 dest_buffer = buffer;
609 }
610 else
611 {
612 changed_addr = VALUE_ADDRESS (toval) + value_offset (toval);
613 changed_len = TYPE_LENGTH (type);
614 dest_buffer = value_contents (fromval);
615 }
616
617 write_memory (changed_addr, dest_buffer, changed_len);
618 if (deprecated_memory_changed_hook)
619 deprecated_memory_changed_hook (changed_addr, changed_len);
620 }
621 break;
622
623 case lval_register:
624 {
625 struct frame_info *frame;
626 int value_reg;
627
628 /* Figure out which frame this is in currently. */
629 frame = frame_find_by_id (VALUE_FRAME_ID (toval));
630 value_reg = VALUE_REGNUM (toval);
631
632 if (!frame)
633 error (_("Value being assigned to is no longer active."));
634
635 if (gdbarch_convert_register_p
636 (current_gdbarch, VALUE_REGNUM (toval), type))
637 {
638 /* If TOVAL is a special machine register requiring
639 conversion of program values to a special raw
640 format. */
641 gdbarch_value_to_register (current_gdbarch, frame,
642 VALUE_REGNUM (toval), type,
643 value_contents (fromval));
644 }
645 else
646 {
647 if (value_bitsize (toval))
648 {
649 int changed_len;
650 gdb_byte buffer[sizeof (LONGEST)];
651
652 changed_len = (value_bitpos (toval)
653 + value_bitsize (toval)
654 + HOST_CHAR_BIT - 1)
655 / HOST_CHAR_BIT;
656
657 if (changed_len > (int) sizeof (LONGEST))
658 error (_("Can't handle bitfields which don't fit in a %d bit word."),
659 (int) sizeof (LONGEST) * HOST_CHAR_BIT);
660
661 get_frame_register_bytes (frame, value_reg,
662 value_offset (toval),
663 changed_len, buffer);
664
665 modify_field (buffer, value_as_long (fromval),
666 value_bitpos (toval),
667 value_bitsize (toval));
668
669 put_frame_register_bytes (frame, value_reg,
670 value_offset (toval),
671 changed_len, buffer);
672 }
673 else
674 {
675 put_frame_register_bytes (frame, value_reg,
676 value_offset (toval),
677 TYPE_LENGTH (type),
678 value_contents (fromval));
679 }
680 }
681
682 if (deprecated_register_changed_hook)
683 deprecated_register_changed_hook (-1);
684 observer_notify_target_changed (&current_target);
685 break;
686 }
687
688 default:
689 error (_("Left operand of assignment is not an lvalue."));
690 }
691
692 /* Assigning to the stack pointer, frame pointer, and other
693 (architecture and calling convention specific) registers may
694 cause the frame cache to be out of date. Assigning to memory
695 also can. We just do this on all assignments to registers or
696 memory, for simplicity's sake; I doubt the slowdown matters. */
697 switch (VALUE_LVAL (toval))
698 {
699 case lval_memory:
700 case lval_register:
701
702 reinit_frame_cache ();
703
704 /* Having destroyed the frame cache, restore the selected
705 frame. */
706
707 /* FIXME: cagney/2002-11-02: There has to be a better way of
708 doing this. Instead of constantly saving/restoring the
709 frame. Why not create a get_selected_frame() function that,
710 having saved the selected frame's ID can automatically
711 re-find the previously selected frame automatically. */
712
713 {
714 struct frame_info *fi = frame_find_by_id (old_frame);
715 if (fi != NULL)
716 select_frame (fi);
717 }
718
719 break;
720 default:
721 break;
722 }
723
724 /* If the field does not entirely fill a LONGEST, then zero the sign
725 bits. If the field is signed, and is negative, then sign
726 extend. */
727 if ((value_bitsize (toval) > 0)
728 && (value_bitsize (toval) < 8 * (int) sizeof (LONGEST)))
729 {
730 LONGEST fieldval = value_as_long (fromval);
731 LONGEST valmask = (((ULONGEST) 1) << value_bitsize (toval)) - 1;
732
733 fieldval &= valmask;
734 if (!TYPE_UNSIGNED (type)
735 && (fieldval & (valmask ^ (valmask >> 1))))
736 fieldval |= ~valmask;
737
738 fromval = value_from_longest (type, fieldval);
739 }
740
741 val = value_copy (toval);
742 memcpy (value_contents_raw (val), value_contents (fromval),
743 TYPE_LENGTH (type));
744 deprecated_set_value_type (val, type);
745 val = value_change_enclosing_type (val,
746 value_enclosing_type (fromval));
747 set_value_embedded_offset (val, value_embedded_offset (fromval));
748 set_value_pointed_to_offset (val, value_pointed_to_offset (fromval));
749
750 return val;
751 }
752
753 /* Extend a value VAL to COUNT repetitions of its type. */
754
755 struct value *
756 value_repeat (struct value *arg1, int count)
757 {
758 struct value *val;
759
760 if (VALUE_LVAL (arg1) != lval_memory)
761 error (_("Only values in memory can be extended with '@'."));
762 if (count < 1)
763 error (_("Invalid number %d of repetitions."), count);
764
765 val = allocate_repeat_value (value_enclosing_type (arg1), count);
766
767 read_memory (VALUE_ADDRESS (arg1) + value_offset (arg1),
768 value_contents_all_raw (val),
769 TYPE_LENGTH (value_enclosing_type (val)));
770 VALUE_LVAL (val) = lval_memory;
771 VALUE_ADDRESS (val) = VALUE_ADDRESS (arg1) + value_offset (arg1);
772
773 return val;
774 }
775
776 struct value *
777 value_of_variable (struct symbol *var, struct block *b)
778 {
779 struct value *val;
780 struct frame_info *frame = NULL;
781
782 if (!b)
783 frame = NULL; /* Use selected frame. */
784 else if (symbol_read_needs_frame (var))
785 {
786 frame = block_innermost_frame (b);
787 if (!frame)
788 {
789 if (BLOCK_FUNCTION (b)
790 && SYMBOL_PRINT_NAME (BLOCK_FUNCTION (b)))
791 error (_("No frame is currently executing in block %s."),
792 SYMBOL_PRINT_NAME (BLOCK_FUNCTION (b)));
793 else
794 error (_("No frame is currently executing in specified block"));
795 }
796 }
797
798 val = read_var_value (var, frame);
799 if (!val)
800 error (_("Address of symbol \"%s\" is unknown."), SYMBOL_PRINT_NAME (var));
801
802 return val;
803 }
804
805 /* Given a value which is an array, return a value which is a pointer
806 to its first element, regardless of whether or not the array has a
807 nonzero lower bound.
808
809 FIXME: A previous comment here indicated that this routine should
810 be substracting the array's lower bound. It's not clear to me that
811 this is correct. Given an array subscripting operation, it would
812 certainly work to do the adjustment here, essentially computing:
813
814 (&array[0] - (lowerbound * sizeof array[0])) + (index * sizeof array[0])
815
816 However I believe a more appropriate and logical place to account
817 for the lower bound is to do so in value_subscript, essentially
818 computing:
819
820 (&array[0] + ((index - lowerbound) * sizeof array[0]))
821
822 As further evidence consider what would happen with operations
823 other than array subscripting, where the caller would get back a
824 value that had an address somewhere before the actual first element
825 of the array, and the information about the lower bound would be
826 lost because of the coercion to pointer type.
827 */
828
829 struct value *
830 value_coerce_array (struct value *arg1)
831 {
832 struct type *type = check_typedef (value_type (arg1));
833
834 if (VALUE_LVAL (arg1) != lval_memory)
835 error (_("Attempt to take address of value not located in memory."));
836
837 return value_from_pointer (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
838 (VALUE_ADDRESS (arg1) + value_offset (arg1)));
839 }
840
841 /* Given a value which is a function, return a value which is a pointer
842 to it. */
843
844 struct value *
845 value_coerce_function (struct value *arg1)
846 {
847 struct value *retval;
848
849 if (VALUE_LVAL (arg1) != lval_memory)
850 error (_("Attempt to take address of value not located in memory."));
851
852 retval = value_from_pointer (lookup_pointer_type (value_type (arg1)),
853 (VALUE_ADDRESS (arg1) + value_offset (arg1)));
854 return retval;
855 }
856
857 /* Return a pointer value for the object for which ARG1 is the
858 contents. */
859
860 struct value *
861 value_addr (struct value *arg1)
862 {
863 struct value *arg2;
864
865 struct type *type = check_typedef (value_type (arg1));
866 if (TYPE_CODE (type) == TYPE_CODE_REF)
867 {
868 /* Copy the value, but change the type from (T&) to (T*). We
869 keep the same location information, which is efficient, and
870 allows &(&X) to get the location containing the reference. */
871 arg2 = value_copy (arg1);
872 deprecated_set_value_type (arg2,
873 lookup_pointer_type (TYPE_TARGET_TYPE (type)));
874 return arg2;
875 }
876 if (TYPE_CODE (type) == TYPE_CODE_FUNC)
877 return value_coerce_function (arg1);
878
879 if (VALUE_LVAL (arg1) != lval_memory)
880 error (_("Attempt to take address of value not located in memory."));
881
882 /* Get target memory address */
883 arg2 = value_from_pointer (lookup_pointer_type (value_type (arg1)),
884 (VALUE_ADDRESS (arg1)
885 + value_offset (arg1)
886 + value_embedded_offset (arg1)));
887
888 /* This may be a pointer to a base subobject; so remember the
889 full derived object's type ... */
890 arg2 = value_change_enclosing_type (arg2, lookup_pointer_type (value_enclosing_type (arg1)));
891 /* ... and also the relative position of the subobject in the full
892 object. */
893 set_value_pointed_to_offset (arg2, value_embedded_offset (arg1));
894 return arg2;
895 }
896
897 /* Return a reference value for the object for which ARG1 is the
898 contents. */
899
900 struct value *
901 value_ref (struct value *arg1)
902 {
903 struct value *arg2;
904
905 struct type *type = check_typedef (value_type (arg1));
906 if (TYPE_CODE (type) == TYPE_CODE_REF)
907 return arg1;
908
909 arg2 = value_addr (arg1);
910 deprecated_set_value_type (arg2, lookup_reference_type (type));
911 return arg2;
912 }
913
914 /* Given a value of a pointer type, apply the C unary * operator to
915 it. */
916
917 struct value *
918 value_ind (struct value *arg1)
919 {
920 struct type *base_type;
921 struct value *arg2;
922
923 arg1 = coerce_array (arg1);
924
925 base_type = check_typedef (value_type (arg1));
926
927 /* Allow * on an integer so we can cast it to whatever we want.
928 This returns an int, which seems like the most C-like thing to
929 do. "long long" variables are rare enough that
930 BUILTIN_TYPE_LONGEST would seem to be a mistake. */
931 if (TYPE_CODE (base_type) == TYPE_CODE_INT)
932 return value_at_lazy (builtin_type_int,
933 (CORE_ADDR) value_as_address (arg1));
934 else if (TYPE_CODE (base_type) == TYPE_CODE_PTR)
935 {
936 struct type *enc_type;
937 /* We may be pointing to something embedded in a larger object.
938 Get the real type of the enclosing object. */
939 enc_type = check_typedef (value_enclosing_type (arg1));
940 enc_type = TYPE_TARGET_TYPE (enc_type);
941
942 if (TYPE_CODE (check_typedef (enc_type)) == TYPE_CODE_FUNC
943 || TYPE_CODE (check_typedef (enc_type)) == TYPE_CODE_METHOD)
944 /* For functions, go through find_function_addr, which knows
945 how to handle function descriptors. */
946 arg2 = value_at_lazy (enc_type,
947 find_function_addr (arg1, NULL));
948 else
949 /* Retrieve the enclosing object pointed to */
950 arg2 = value_at_lazy (enc_type,
951 (value_as_address (arg1)
952 - value_pointed_to_offset (arg1)));
953
954 /* Re-adjust type. */
955 deprecated_set_value_type (arg2, TYPE_TARGET_TYPE (base_type));
956 /* Add embedding info. */
957 arg2 = value_change_enclosing_type (arg2, enc_type);
958 set_value_embedded_offset (arg2, value_pointed_to_offset (arg1));
959
960 /* We may be pointing to an object of some derived type. */
961 arg2 = value_full_object (arg2, NULL, 0, 0, 0);
962 return arg2;
963 }
964
965 error (_("Attempt to take contents of a non-pointer value."));
966 return 0; /* For lint -- never reached. */
967 }
968 \f
969 /* Create a value for an array by allocating space in the inferior,
970 copying the data into that space, and then setting up an array
971 value.
972
973 The array bounds are set from LOWBOUND and HIGHBOUND, and the array
974 is populated from the values passed in ELEMVEC.
975
976 The element type of the array is inherited from the type of the
977 first element, and all elements must have the same size (though we
978 don't currently enforce any restriction on their types). */
979
980 struct value *
981 value_array (int lowbound, int highbound, struct value **elemvec)
982 {
983 int nelem;
984 int idx;
985 unsigned int typelength;
986 struct value *val;
987 struct type *rangetype;
988 struct type *arraytype;
989 CORE_ADDR addr;
990
991 /* Validate that the bounds are reasonable and that each of the
992 elements have the same size. */
993
994 nelem = highbound - lowbound + 1;
995 if (nelem <= 0)
996 {
997 error (_("bad array bounds (%d, %d)"), lowbound, highbound);
998 }
999 typelength = TYPE_LENGTH (value_enclosing_type (elemvec[0]));
1000 for (idx = 1; idx < nelem; idx++)
1001 {
1002 if (TYPE_LENGTH (value_enclosing_type (elemvec[idx])) != typelength)
1003 {
1004 error (_("array elements must all be the same size"));
1005 }
1006 }
1007
1008 rangetype = create_range_type ((struct type *) NULL,
1009 builtin_type_int,
1010 lowbound, highbound);
1011 arraytype = create_array_type ((struct type *) NULL,
1012 value_enclosing_type (elemvec[0]),
1013 rangetype);
1014
1015 if (!current_language->c_style_arrays)
1016 {
1017 val = allocate_value (arraytype);
1018 for (idx = 0; idx < nelem; idx++)
1019 {
1020 memcpy (value_contents_all_raw (val) + (idx * typelength),
1021 value_contents_all (elemvec[idx]),
1022 typelength);
1023 }
1024 return val;
1025 }
1026
1027 /* Allocate space to store the array in the inferior, and then
1028 initialize it by copying in each element. FIXME: Is it worth it
1029 to create a local buffer in which to collect each value and then
1030 write all the bytes in one operation? */
1031
1032 addr = allocate_space_in_inferior (nelem * typelength);
1033 for (idx = 0; idx < nelem; idx++)
1034 {
1035 write_memory (addr + (idx * typelength),
1036 value_contents_all (elemvec[idx]),
1037 typelength);
1038 }
1039
1040 /* Create the array type and set up an array value to be evaluated
1041 lazily. */
1042
1043 val = value_at_lazy (arraytype, addr);
1044 return (val);
1045 }
1046
1047 /* Create a value for a string constant by allocating space in the
1048 inferior, copying the data into that space, and returning the
1049 address with type TYPE_CODE_STRING. PTR points to the string
1050 constant data; LEN is number of characters.
1051
1052 Note that string types are like array of char types with a lower
1053 bound of zero and an upper bound of LEN - 1. Also note that the
1054 string may contain embedded null bytes. */
1055
1056 struct value *
1057 value_string (char *ptr, int len)
1058 {
1059 struct value *val;
1060 int lowbound = current_language->string_lower_bound;
1061 struct type *rangetype = create_range_type ((struct type *) NULL,
1062 builtin_type_int,
1063 lowbound,
1064 len + lowbound - 1);
1065 struct type *stringtype
1066 = create_string_type ((struct type *) NULL, rangetype);
1067 CORE_ADDR addr;
1068
1069 if (current_language->c_style_arrays == 0)
1070 {
1071 val = allocate_value (stringtype);
1072 memcpy (value_contents_raw (val), ptr, len);
1073 return val;
1074 }
1075
1076
1077 /* Allocate space to store the string in the inferior, and then copy
1078 LEN bytes from PTR in gdb to that address in the inferior. */
1079
1080 addr = allocate_space_in_inferior (len);
1081 write_memory (addr, (gdb_byte *) ptr, len);
1082
1083 val = value_at_lazy (stringtype, addr);
1084 return (val);
1085 }
1086
1087 struct value *
1088 value_bitstring (char *ptr, int len)
1089 {
1090 struct value *val;
1091 struct type *domain_type = create_range_type (NULL,
1092 builtin_type_int,
1093 0, len - 1);
1094 struct type *type = create_set_type ((struct type *) NULL,
1095 domain_type);
1096 TYPE_CODE (type) = TYPE_CODE_BITSTRING;
1097 val = allocate_value (type);
1098 memcpy (value_contents_raw (val), ptr, TYPE_LENGTH (type));
1099 return val;
1100 }
1101 \f
1102 /* See if we can pass arguments in T2 to a function which takes
1103 arguments of types T1. T1 is a list of NARGS arguments, and T2 is
1104 a NULL-terminated vector. If some arguments need coercion of some
1105 sort, then the coerced values are written into T2. Return value is
1106 0 if the arguments could be matched, or the position at which they
1107 differ if not.
1108
1109 STATICP is nonzero if the T1 argument list came from a static
1110 member function. T2 will still include the ``this'' pointer, but
1111 it will be skipped.
1112
1113 For non-static member functions, we ignore the first argument,
1114 which is the type of the instance variable. This is because we
1115 want to handle calls with objects from derived classes. This is
1116 not entirely correct: we should actually check to make sure that a
1117 requested operation is type secure, shouldn't we? FIXME. */
1118
1119 static int
1120 typecmp (int staticp, int varargs, int nargs,
1121 struct field t1[], struct value *t2[])
1122 {
1123 int i;
1124
1125 if (t2 == 0)
1126 internal_error (__FILE__, __LINE__,
1127 _("typecmp: no argument list"));
1128
1129 /* Skip ``this'' argument if applicable. T2 will always include
1130 THIS. */
1131 if (staticp)
1132 t2 ++;
1133
1134 for (i = 0;
1135 (i < nargs) && TYPE_CODE (t1[i].type) != TYPE_CODE_VOID;
1136 i++)
1137 {
1138 struct type *tt1, *tt2;
1139
1140 if (!t2[i])
1141 return i + 1;
1142
1143 tt1 = check_typedef (t1[i].type);
1144 tt2 = check_typedef (value_type (t2[i]));
1145
1146 if (TYPE_CODE (tt1) == TYPE_CODE_REF
1147 /* We should be doing hairy argument matching, as below. */
1148 && (TYPE_CODE (check_typedef (TYPE_TARGET_TYPE (tt1))) == TYPE_CODE (tt2)))
1149 {
1150 if (TYPE_CODE (tt2) == TYPE_CODE_ARRAY)
1151 t2[i] = value_coerce_array (t2[i]);
1152 else
1153 t2[i] = value_ref (t2[i]);
1154 continue;
1155 }
1156
1157 /* djb - 20000715 - Until the new type structure is in the
1158 place, and we can attempt things like implicit conversions,
1159 we need to do this so you can take something like a map<const
1160 char *>, and properly access map["hello"], because the
1161 argument to [] will be a reference to a pointer to a char,
1162 and the argument will be a pointer to a char. */
1163 while (TYPE_CODE(tt1) == TYPE_CODE_REF
1164 || TYPE_CODE (tt1) == TYPE_CODE_PTR)
1165 {
1166 tt1 = check_typedef( TYPE_TARGET_TYPE(tt1) );
1167 }
1168 while (TYPE_CODE(tt2) == TYPE_CODE_ARRAY
1169 || TYPE_CODE(tt2) == TYPE_CODE_PTR
1170 || TYPE_CODE(tt2) == TYPE_CODE_REF)
1171 {
1172 tt2 = check_typedef (TYPE_TARGET_TYPE(tt2));
1173 }
1174 if (TYPE_CODE (tt1) == TYPE_CODE (tt2))
1175 continue;
1176 /* Array to pointer is a `trivial conversion' according to the
1177 ARM. */
1178
1179 /* We should be doing much hairier argument matching (see
1180 section 13.2 of the ARM), but as a quick kludge, just check
1181 for the same type code. */
1182 if (TYPE_CODE (t1[i].type) != TYPE_CODE (value_type (t2[i])))
1183 return i + 1;
1184 }
1185 if (varargs || t2[i] == NULL)
1186 return 0;
1187 return i + 1;
1188 }
1189
1190 /* Helper function used by value_struct_elt to recurse through
1191 baseclasses. Look for a field NAME in ARG1. Adjust the address of
1192 ARG1 by OFFSET bytes, and search in it assuming it has (class) type
1193 TYPE. If found, return value, else return NULL.
1194
1195 If LOOKING_FOR_BASECLASS, then instead of looking for struct
1196 fields, look for a baseclass named NAME. */
1197
1198 static struct value *
1199 search_struct_field (char *name, struct value *arg1, int offset,
1200 struct type *type, int looking_for_baseclass)
1201 {
1202 int i;
1203 int nbases = TYPE_N_BASECLASSES (type);
1204
1205 CHECK_TYPEDEF (type);
1206
1207 if (!looking_for_baseclass)
1208 for (i = TYPE_NFIELDS (type) - 1; i >= nbases; i--)
1209 {
1210 char *t_field_name = TYPE_FIELD_NAME (type, i);
1211
1212 if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
1213 {
1214 struct value *v;
1215 if (TYPE_FIELD_STATIC (type, i))
1216 {
1217 v = value_static_field (type, i);
1218 if (v == 0)
1219 error (_("field %s is nonexistent or has been optimised out"),
1220 name);
1221 }
1222 else
1223 {
1224 v = value_primitive_field (arg1, offset, i, type);
1225 if (v == 0)
1226 error (_("there is no field named %s"), name);
1227 }
1228 return v;
1229 }
1230
1231 if (t_field_name
1232 && (t_field_name[0] == '\0'
1233 || (TYPE_CODE (type) == TYPE_CODE_UNION
1234 && (strcmp_iw (t_field_name, "else") == 0))))
1235 {
1236 struct type *field_type = TYPE_FIELD_TYPE (type, i);
1237 if (TYPE_CODE (field_type) == TYPE_CODE_UNION
1238 || TYPE_CODE (field_type) == TYPE_CODE_STRUCT)
1239 {
1240 /* Look for a match through the fields of an anonymous
1241 union, or anonymous struct. C++ provides anonymous
1242 unions.
1243
1244 In the GNU Chill (now deleted from GDB)
1245 implementation of variant record types, each
1246 <alternative field> has an (anonymous) union type,
1247 each member of the union represents a <variant
1248 alternative>. Each <variant alternative> is
1249 represented as a struct, with a member for each
1250 <variant field>. */
1251
1252 struct value *v;
1253 int new_offset = offset;
1254
1255 /* This is pretty gross. In G++, the offset in an
1256 anonymous union is relative to the beginning of the
1257 enclosing struct. In the GNU Chill (now deleted
1258 from GDB) implementation of variant records, the
1259 bitpos is zero in an anonymous union field, so we
1260 have to add the offset of the union here. */
1261 if (TYPE_CODE (field_type) == TYPE_CODE_STRUCT
1262 || (TYPE_NFIELDS (field_type) > 0
1263 && TYPE_FIELD_BITPOS (field_type, 0) == 0))
1264 new_offset += TYPE_FIELD_BITPOS (type, i) / 8;
1265
1266 v = search_struct_field (name, arg1, new_offset,
1267 field_type,
1268 looking_for_baseclass);
1269 if (v)
1270 return v;
1271 }
1272 }
1273 }
1274
1275 for (i = 0; i < nbases; i++)
1276 {
1277 struct value *v;
1278 struct type *basetype = check_typedef (TYPE_BASECLASS (type, i));
1279 /* If we are looking for baseclasses, this is what we get when
1280 we hit them. But it could happen that the base part's member
1281 name is not yet filled in. */
1282 int found_baseclass = (looking_for_baseclass
1283 && TYPE_BASECLASS_NAME (type, i) != NULL
1284 && (strcmp_iw (name,
1285 TYPE_BASECLASS_NAME (type,
1286 i)) == 0));
1287
1288 if (BASETYPE_VIA_VIRTUAL (type, i))
1289 {
1290 int boffset;
1291 struct value *v2 = allocate_value (basetype);
1292
1293 boffset = baseclass_offset (type, i,
1294 value_contents (arg1) + offset,
1295 VALUE_ADDRESS (arg1)
1296 + value_offset (arg1) + offset);
1297 if (boffset == -1)
1298 error (_("virtual baseclass botch"));
1299
1300 /* The virtual base class pointer might have been clobbered
1301 by the user program. Make sure that it still points to a
1302 valid memory location. */
1303
1304 boffset += offset;
1305 if (boffset < 0 || boffset >= TYPE_LENGTH (type))
1306 {
1307 CORE_ADDR base_addr;
1308
1309 base_addr =
1310 VALUE_ADDRESS (arg1) + value_offset (arg1) + boffset;
1311 if (target_read_memory (base_addr,
1312 value_contents_raw (v2),
1313 TYPE_LENGTH (basetype)) != 0)
1314 error (_("virtual baseclass botch"));
1315 VALUE_LVAL (v2) = lval_memory;
1316 VALUE_ADDRESS (v2) = base_addr;
1317 }
1318 else
1319 {
1320 VALUE_LVAL (v2) = VALUE_LVAL (arg1);
1321 VALUE_ADDRESS (v2) = VALUE_ADDRESS (arg1);
1322 VALUE_FRAME_ID (v2) = VALUE_FRAME_ID (arg1);
1323 set_value_offset (v2, value_offset (arg1) + boffset);
1324 if (value_lazy (arg1))
1325 set_value_lazy (v2, 1);
1326 else
1327 memcpy (value_contents_raw (v2),
1328 value_contents_raw (arg1) + boffset,
1329 TYPE_LENGTH (basetype));
1330 }
1331
1332 if (found_baseclass)
1333 return v2;
1334 v = search_struct_field (name, v2, 0,
1335 TYPE_BASECLASS (type, i),
1336 looking_for_baseclass);
1337 }
1338 else if (found_baseclass)
1339 v = value_primitive_field (arg1, offset, i, type);
1340 else
1341 v = search_struct_field (name, arg1,
1342 offset + TYPE_BASECLASS_BITPOS (type,
1343 i) / 8,
1344 basetype, looking_for_baseclass);
1345 if (v)
1346 return v;
1347 }
1348 return NULL;
1349 }
1350
1351
1352 /* Return the offset (in bytes) of the virtual base of type BASETYPE
1353 * in an object pointed to by VALADDR (on the host), assumed to be of
1354 * type TYPE. OFFSET is number of bytes beyond start of ARG to start
1355 * looking (in case VALADDR is the contents of an enclosing object).
1356 *
1357 * This routine recurses on the primary base of the derived class
1358 * because the virtual base entries of the primary base appear before
1359 * the other virtual base entries.
1360 *
1361 * If the virtual base is not found, a negative integer is returned.
1362 * The magnitude of the negative integer is the number of entries in
1363 * the virtual table to skip over (entries corresponding to various
1364 * ancestral classes in the chain of primary bases).
1365 *
1366 * Important: This assumes the HP / Taligent C++ runtime conventions.
1367 * Use baseclass_offset() instead to deal with g++ conventions. */
1368
1369 void
1370 find_rt_vbase_offset (struct type *type, struct type *basetype,
1371 const gdb_byte *valaddr, int offset,
1372 int *boffset_p, int *skip_p)
1373 {
1374 int boffset; /* Offset of virtual base. */
1375 int index; /* Displacement to use in virtual
1376 table. */
1377 int skip;
1378
1379 struct value *vp;
1380 CORE_ADDR vtbl; /* The virtual table pointer. */
1381 struct type *pbc; /* The primary base class. */
1382
1383 /* Look for the virtual base recursively in the primary base, first.
1384 * This is because the derived class object and its primary base
1385 * subobject share the primary virtual table. */
1386
1387 boffset = 0;
1388 pbc = TYPE_PRIMARY_BASE (type);
1389 if (pbc)
1390 {
1391 find_rt_vbase_offset (pbc, basetype, valaddr,
1392 offset, &boffset, &skip);
1393 if (skip < 0)
1394 {
1395 *boffset_p = boffset;
1396 *skip_p = -1;
1397 return;
1398 }
1399 }
1400 else
1401 skip = 0;
1402
1403
1404 /* Find the index of the virtual base according to HP/Taligent
1405 runtime spec. (Depth-first, left-to-right.) */
1406 index = virtual_base_index_skip_primaries (basetype, type);
1407
1408 if (index < 0)
1409 {
1410 *skip_p = skip + virtual_base_list_length_skip_primaries (type);
1411 *boffset_p = 0;
1412 return;
1413 }
1414
1415 /* pai: FIXME -- 32x64 possible problem. */
1416 /* First word (4 bytes) in object layout is the vtable pointer. */
1417 vtbl = *(CORE_ADDR *) (valaddr + offset);
1418
1419 /* Before the constructor is invoked, things are usually zero'd
1420 out. */
1421 if (vtbl == 0)
1422 error (_("Couldn't find virtual table -- object may not be constructed yet."));
1423
1424
1425 /* Find virtual base's offset -- jump over entries for primary base
1426 * ancestors, then use the index computed above. But also adjust by
1427 * HP_ACC_VBASE_START for the vtable slots before the start of the
1428 * virtual base entries. Offset is negative -- virtual base entries
1429 * appear _before_ the address point of the virtual table. */
1430
1431 /* pai: FIXME -- 32x64 problem, if word = 8 bytes, change multiplier
1432 & use long type */
1433
1434 /* epstein : FIXME -- added param for overlay section. May not be
1435 correct. */
1436 vp = value_at (builtin_type_int,
1437 vtbl + 4 * (-skip - index - HP_ACC_VBASE_START));
1438 boffset = value_as_long (vp);
1439 *skip_p = -1;
1440 *boffset_p = boffset;
1441 return;
1442 }
1443
1444
1445 /* Helper function used by value_struct_elt to recurse through
1446 baseclasses. Look for a field NAME in ARG1. Adjust the address of
1447 ARG1 by OFFSET bytes, and search in it assuming it has (class) type
1448 TYPE.
1449
1450 If found, return value, else if name matched and args not return
1451 (value) -1, else return NULL. */
1452
1453 static struct value *
1454 search_struct_method (char *name, struct value **arg1p,
1455 struct value **args, int offset,
1456 int *static_memfuncp, struct type *type)
1457 {
1458 int i;
1459 struct value *v;
1460 int name_matched = 0;
1461 char dem_opname[64];
1462
1463 CHECK_TYPEDEF (type);
1464 for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
1465 {
1466 char *t_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
1467 /* FIXME! May need to check for ARM demangling here */
1468 if (strncmp (t_field_name, "__", 2) == 0 ||
1469 strncmp (t_field_name, "op", 2) == 0 ||
1470 strncmp (t_field_name, "type", 4) == 0)
1471 {
1472 if (cplus_demangle_opname (t_field_name, dem_opname, DMGL_ANSI))
1473 t_field_name = dem_opname;
1474 else if (cplus_demangle_opname (t_field_name, dem_opname, 0))
1475 t_field_name = dem_opname;
1476 }
1477 if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
1478 {
1479 int j = TYPE_FN_FIELDLIST_LENGTH (type, i) - 1;
1480 struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
1481 name_matched = 1;
1482
1483 check_stub_method_group (type, i);
1484 if (j > 0 && args == 0)
1485 error (_("cannot resolve overloaded method `%s': no arguments supplied"), name);
1486 else if (j == 0 && args == 0)
1487 {
1488 v = value_fn_field (arg1p, f, j, type, offset);
1489 if (v != NULL)
1490 return v;
1491 }
1492 else
1493 while (j >= 0)
1494 {
1495 if (!typecmp (TYPE_FN_FIELD_STATIC_P (f, j),
1496 TYPE_VARARGS (TYPE_FN_FIELD_TYPE (f, j)),
1497 TYPE_NFIELDS (TYPE_FN_FIELD_TYPE (f, j)),
1498 TYPE_FN_FIELD_ARGS (f, j), args))
1499 {
1500 if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
1501 return value_virtual_fn_field (arg1p, f, j,
1502 type, offset);
1503 if (TYPE_FN_FIELD_STATIC_P (f, j)
1504 && static_memfuncp)
1505 *static_memfuncp = 1;
1506 v = value_fn_field (arg1p, f, j, type, offset);
1507 if (v != NULL)
1508 return v;
1509 }
1510 j--;
1511 }
1512 }
1513 }
1514
1515 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1516 {
1517 int base_offset;
1518
1519 if (BASETYPE_VIA_VIRTUAL (type, i))
1520 {
1521 if (TYPE_HAS_VTABLE (type))
1522 {
1523 /* HP aCC compiled type, search for virtual base offset
1524 according to HP/Taligent runtime spec. */
1525 int skip;
1526 find_rt_vbase_offset (type, TYPE_BASECLASS (type, i),
1527 value_contents_all (*arg1p),
1528 offset + value_embedded_offset (*arg1p),
1529 &base_offset, &skip);
1530 if (skip >= 0)
1531 error (_("Virtual base class offset not found in vtable"));
1532 }
1533 else
1534 {
1535 struct type *baseclass =
1536 check_typedef (TYPE_BASECLASS (type, i));
1537 const gdb_byte *base_valaddr;
1538
1539 /* The virtual base class pointer might have been
1540 clobbered by the user program. Make sure that it
1541 still points to a valid memory location. */
1542
1543 if (offset < 0 || offset >= TYPE_LENGTH (type))
1544 {
1545 gdb_byte *tmp = alloca (TYPE_LENGTH (baseclass));
1546 if (target_read_memory (VALUE_ADDRESS (*arg1p)
1547 + value_offset (*arg1p) + offset,
1548 tmp, TYPE_LENGTH (baseclass)) != 0)
1549 error (_("virtual baseclass botch"));
1550 base_valaddr = tmp;
1551 }
1552 else
1553 base_valaddr = value_contents (*arg1p) + offset;
1554
1555 base_offset =
1556 baseclass_offset (type, i, base_valaddr,
1557 VALUE_ADDRESS (*arg1p)
1558 + value_offset (*arg1p) + offset);
1559 if (base_offset == -1)
1560 error (_("virtual baseclass botch"));
1561 }
1562 }
1563 else
1564 {
1565 base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
1566 }
1567 v = search_struct_method (name, arg1p, args, base_offset + offset,
1568 static_memfuncp, TYPE_BASECLASS (type, i));
1569 if (v == (struct value *) - 1)
1570 {
1571 name_matched = 1;
1572 }
1573 else if (v)
1574 {
1575 /* FIXME-bothner: Why is this commented out? Why is it here? */
1576 /* *arg1p = arg1_tmp; */
1577 return v;
1578 }
1579 }
1580 if (name_matched)
1581 return (struct value *) - 1;
1582 else
1583 return NULL;
1584 }
1585
1586 /* Given *ARGP, a value of type (pointer to a)* structure/union,
1587 extract the component named NAME from the ultimate target
1588 structure/union and return it as a value with its appropriate type.
1589 ERR is used in the error message if *ARGP's type is wrong.
1590
1591 C++: ARGS is a list of argument types to aid in the selection of
1592 an appropriate method. Also, handle derived types.
1593
1594 STATIC_MEMFUNCP, if non-NULL, points to a caller-supplied location
1595 where the truthvalue of whether the function that was resolved was
1596 a static member function or not is stored.
1597
1598 ERR is an error message to be printed in case the field is not
1599 found. */
1600
1601 struct value *
1602 value_struct_elt (struct value **argp, struct value **args,
1603 char *name, int *static_memfuncp, char *err)
1604 {
1605 struct type *t;
1606 struct value *v;
1607
1608 *argp = coerce_array (*argp);
1609
1610 t = check_typedef (value_type (*argp));
1611
1612 /* Follow pointers until we get to a non-pointer. */
1613
1614 while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
1615 {
1616 *argp = value_ind (*argp);
1617 /* Don't coerce fn pointer to fn and then back again! */
1618 if (TYPE_CODE (value_type (*argp)) != TYPE_CODE_FUNC)
1619 *argp = coerce_array (*argp);
1620 t = check_typedef (value_type (*argp));
1621 }
1622
1623 if (TYPE_CODE (t) != TYPE_CODE_STRUCT
1624 && TYPE_CODE (t) != TYPE_CODE_UNION)
1625 error (_("Attempt to extract a component of a value that is not a %s."), err);
1626
1627 /* Assume it's not, unless we see that it is. */
1628 if (static_memfuncp)
1629 *static_memfuncp = 0;
1630
1631 if (!args)
1632 {
1633 /* if there are no arguments ...do this... */
1634
1635 /* Try as a field first, because if we succeed, there is less
1636 work to be done. */
1637 v = search_struct_field (name, *argp, 0, t, 0);
1638 if (v)
1639 return v;
1640
1641 /* C++: If it was not found as a data field, then try to
1642 return it as a pointer to a method. */
1643
1644 if (destructor_name_p (name, t))
1645 error (_("Cannot get value of destructor"));
1646
1647 v = search_struct_method (name, argp, args, 0,
1648 static_memfuncp, t);
1649
1650 if (v == (struct value *) - 1)
1651 error (_("Cannot take address of method %s."), name);
1652 else if (v == 0)
1653 {
1654 if (TYPE_NFN_FIELDS (t))
1655 error (_("There is no member or method named %s."), name);
1656 else
1657 error (_("There is no member named %s."), name);
1658 }
1659 return v;
1660 }
1661
1662 if (destructor_name_p (name, t))
1663 {
1664 if (!args[1])
1665 {
1666 /* Destructors are a special case. */
1667 int m_index, f_index;
1668
1669 v = NULL;
1670 if (get_destructor_fn_field (t, &m_index, &f_index))
1671 {
1672 v = value_fn_field (NULL,
1673 TYPE_FN_FIELDLIST1 (t, m_index),
1674 f_index, NULL, 0);
1675 }
1676 if (v == NULL)
1677 error (_("could not find destructor function named %s."),
1678 name);
1679 else
1680 return v;
1681 }
1682 else
1683 {
1684 error (_("destructor should not have any argument"));
1685 }
1686 }
1687 else
1688 v = search_struct_method (name, argp, args, 0,
1689 static_memfuncp, t);
1690
1691 if (v == (struct value *) - 1)
1692 {
1693 error (_("One of the arguments you tried to pass to %s could not be converted to what the function wants."), name);
1694 }
1695 else if (v == 0)
1696 {
1697 /* See if user tried to invoke data as function. If so, hand it
1698 back. If it's not callable (i.e., a pointer to function),
1699 gdb should give an error. */
1700 v = search_struct_field (name, *argp, 0, t, 0);
1701 }
1702
1703 if (!v)
1704 error (_("Structure has no component named %s."), name);
1705 return v;
1706 }
1707
1708 /* Search through the methods of an object (and its bases) to find a
1709 specified method. Return the pointer to the fn_field list of
1710 overloaded instances.
1711
1712 Helper function for value_find_oload_list.
1713 ARGP is a pointer to a pointer to a value (the object).
1714 METHOD is a string containing the method name.
1715 OFFSET is the offset within the value.
1716 TYPE is the assumed type of the object.
1717 NUM_FNS is the number of overloaded instances.
1718 BASETYPE is set to the actual type of the subobject where the
1719 method is found.
1720 BOFFSET is the offset of the base subobject where the method is found.
1721 */
1722
1723 static struct fn_field *
1724 find_method_list (struct value **argp, char *method,
1725 int offset, struct type *type, int *num_fns,
1726 struct type **basetype, int *boffset)
1727 {
1728 int i;
1729 struct fn_field *f;
1730 CHECK_TYPEDEF (type);
1731
1732 *num_fns = 0;
1733
1734 /* First check in object itself. */
1735 for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
1736 {
1737 /* pai: FIXME What about operators and type conversions? */
1738 char *fn_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
1739 if (fn_field_name && (strcmp_iw (fn_field_name, method) == 0))
1740 {
1741 int len = TYPE_FN_FIELDLIST_LENGTH (type, i);
1742 struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
1743
1744 *num_fns = len;
1745 *basetype = type;
1746 *boffset = offset;
1747
1748 /* Resolve any stub methods. */
1749 check_stub_method_group (type, i);
1750
1751 return f;
1752 }
1753 }
1754
1755 /* Not found in object, check in base subobjects. */
1756 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1757 {
1758 int base_offset;
1759 if (BASETYPE_VIA_VIRTUAL (type, i))
1760 {
1761 if (TYPE_HAS_VTABLE (type))
1762 {
1763 /* HP aCC compiled type, search for virtual base offset
1764 * according to HP/Taligent runtime spec. */
1765 int skip;
1766 find_rt_vbase_offset (type, TYPE_BASECLASS (type, i),
1767 value_contents_all (*argp),
1768 offset + value_embedded_offset (*argp),
1769 &base_offset, &skip);
1770 if (skip >= 0)
1771 error (_("Virtual base class offset not found in vtable"));
1772 }
1773 else
1774 {
1775 /* probably g++ runtime model */
1776 base_offset = value_offset (*argp) + offset;
1777 base_offset =
1778 baseclass_offset (type, i,
1779 value_contents (*argp) + base_offset,
1780 VALUE_ADDRESS (*argp) + base_offset);
1781 if (base_offset == -1)
1782 error (_("virtual baseclass botch"));
1783 }
1784 }
1785 else /* Non-virtual base, simply use bit position from debug
1786 info. */
1787 {
1788 base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
1789 }
1790 f = find_method_list (argp, method, base_offset + offset,
1791 TYPE_BASECLASS (type, i), num_fns,
1792 basetype, boffset);
1793 if (f)
1794 return f;
1795 }
1796 return NULL;
1797 }
1798
1799 /* Return the list of overloaded methods of a specified name.
1800
1801 ARGP is a pointer to a pointer to a value (the object).
1802 METHOD is the method name.
1803 OFFSET is the offset within the value contents.
1804 NUM_FNS is the number of overloaded instances.
1805 BASETYPE is set to the type of the base subobject that defines the
1806 method.
1807 BOFFSET is the offset of the base subobject which defines the method.
1808 */
1809
1810 struct fn_field *
1811 value_find_oload_method_list (struct value **argp, char *method,
1812 int offset, int *num_fns,
1813 struct type **basetype, int *boffset)
1814 {
1815 struct type *t;
1816
1817 t = check_typedef (value_type (*argp));
1818
1819 /* Code snarfed from value_struct_elt. */
1820 while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
1821 {
1822 *argp = value_ind (*argp);
1823 /* Don't coerce fn pointer to fn and then back again! */
1824 if (TYPE_CODE (value_type (*argp)) != TYPE_CODE_FUNC)
1825 *argp = coerce_array (*argp);
1826 t = check_typedef (value_type (*argp));
1827 }
1828
1829 if (TYPE_CODE (t) != TYPE_CODE_STRUCT
1830 && TYPE_CODE (t) != TYPE_CODE_UNION)
1831 error (_("Attempt to extract a component of a value that is not a struct or union"));
1832
1833 return find_method_list (argp, method, 0, t, num_fns,
1834 basetype, boffset);
1835 }
1836
1837 /* Given an array of argument types (ARGTYPES) (which includes an
1838 entry for "this" in the case of C++ methods), the number of
1839 arguments NARGS, the NAME of a function whether it's a method or
1840 not (METHOD), and the degree of laxness (LAX) in conforming to
1841 overload resolution rules in ANSI C++, find the best function that
1842 matches on the argument types according to the overload resolution
1843 rules.
1844
1845 In the case of class methods, the parameter OBJ is an object value
1846 in which to search for overloaded methods.
1847
1848 In the case of non-method functions, the parameter FSYM is a symbol
1849 corresponding to one of the overloaded functions.
1850
1851 Return value is an integer: 0 -> good match, 10 -> debugger applied
1852 non-standard coercions, 100 -> incompatible.
1853
1854 If a method is being searched for, VALP will hold the value.
1855 If a non-method is being searched for, SYMP will hold the symbol
1856 for it.
1857
1858 If a method is being searched for, and it is a static method,
1859 then STATICP will point to a non-zero value.
1860
1861 Note: This function does *not* check the value of
1862 overload_resolution. Caller must check it to see whether overload
1863 resolution is permitted.
1864 */
1865
1866 int
1867 find_overload_match (struct type **arg_types, int nargs,
1868 char *name, int method, int lax,
1869 struct value **objp, struct symbol *fsym,
1870 struct value **valp, struct symbol **symp,
1871 int *staticp)
1872 {
1873 struct value *obj = (objp ? *objp : NULL);
1874 /* Index of best overloaded function. */
1875 int oload_champ;
1876 /* The measure for the current best match. */
1877 struct badness_vector *oload_champ_bv = NULL;
1878 struct value *temp = obj;
1879 /* For methods, the list of overloaded methods. */
1880 struct fn_field *fns_ptr = NULL;
1881 /* For non-methods, the list of overloaded function symbols. */
1882 struct symbol **oload_syms = NULL;
1883 /* Number of overloaded instances being considered. */
1884 int num_fns = 0;
1885 struct type *basetype = NULL;
1886 int boffset;
1887 int ix;
1888 int static_offset;
1889 struct cleanup *old_cleanups = NULL;
1890
1891 const char *obj_type_name = NULL;
1892 char *func_name = NULL;
1893 enum oload_classification match_quality;
1894
1895 /* Get the list of overloaded methods or functions. */
1896 if (method)
1897 {
1898 gdb_assert (obj);
1899 obj_type_name = TYPE_NAME (value_type (obj));
1900 /* Hack: evaluate_subexp_standard often passes in a pointer
1901 value rather than the object itself, so try again. */
1902 if ((!obj_type_name || !*obj_type_name)
1903 && (TYPE_CODE (value_type (obj)) == TYPE_CODE_PTR))
1904 obj_type_name = TYPE_NAME (TYPE_TARGET_TYPE (value_type (obj)));
1905
1906 fns_ptr = value_find_oload_method_list (&temp, name,
1907 0, &num_fns,
1908 &basetype, &boffset);
1909 if (!fns_ptr || !num_fns)
1910 error (_("Couldn't find method %s%s%s"),
1911 obj_type_name,
1912 (obj_type_name && *obj_type_name) ? "::" : "",
1913 name);
1914 /* If we are dealing with stub method types, they should have
1915 been resolved by find_method_list via
1916 value_find_oload_method_list above. */
1917 gdb_assert (TYPE_DOMAIN_TYPE (fns_ptr[0].type) != NULL);
1918 oload_champ = find_oload_champ (arg_types, nargs, method,
1919 num_fns, fns_ptr,
1920 oload_syms, &oload_champ_bv);
1921 }
1922 else
1923 {
1924 const char *qualified_name = SYMBOL_CPLUS_DEMANGLED_NAME (fsym);
1925
1926 /* If we have a C++ name, try to extract just the function
1927 part. */
1928 if (qualified_name)
1929 func_name = cp_func_name (qualified_name);
1930
1931 /* If there was no C++ name, this must be a C-style function.
1932 Just return the same symbol. Do the same if cp_func_name
1933 fails for some reason. */
1934 if (func_name == NULL)
1935 {
1936 *symp = fsym;
1937 return 0;
1938 }
1939
1940 old_cleanups = make_cleanup (xfree, func_name);
1941 make_cleanup (xfree, oload_syms);
1942 make_cleanup (xfree, oload_champ_bv);
1943
1944 oload_champ = find_oload_champ_namespace (arg_types, nargs,
1945 func_name,
1946 qualified_name,
1947 &oload_syms,
1948 &oload_champ_bv);
1949 }
1950
1951 /* Check how bad the best match is. */
1952
1953 match_quality =
1954 classify_oload_match (oload_champ_bv, nargs,
1955 oload_method_static (method, fns_ptr,
1956 oload_champ));
1957
1958 if (match_quality == INCOMPATIBLE)
1959 {
1960 if (method)
1961 error (_("Cannot resolve method %s%s%s to any overloaded instance"),
1962 obj_type_name,
1963 (obj_type_name && *obj_type_name) ? "::" : "",
1964 name);
1965 else
1966 error (_("Cannot resolve function %s to any overloaded instance"),
1967 func_name);
1968 }
1969 else if (match_quality == NON_STANDARD)
1970 {
1971 if (method)
1972 warning (_("Using non-standard conversion to match method %s%s%s to supplied arguments"),
1973 obj_type_name,
1974 (obj_type_name && *obj_type_name) ? "::" : "",
1975 name);
1976 else
1977 warning (_("Using non-standard conversion to match function %s to supplied arguments"),
1978 func_name);
1979 }
1980
1981 if (method)
1982 {
1983 if (staticp != NULL)
1984 *staticp = oload_method_static (method, fns_ptr, oload_champ);
1985 if (TYPE_FN_FIELD_VIRTUAL_P (fns_ptr, oload_champ))
1986 *valp = value_virtual_fn_field (&temp, fns_ptr, oload_champ,
1987 basetype, boffset);
1988 else
1989 *valp = value_fn_field (&temp, fns_ptr, oload_champ,
1990 basetype, boffset);
1991 }
1992 else
1993 {
1994 *symp = oload_syms[oload_champ];
1995 }
1996
1997 if (objp)
1998 {
1999 if (TYPE_CODE (value_type (temp)) != TYPE_CODE_PTR
2000 && TYPE_CODE (value_type (*objp)) == TYPE_CODE_PTR)
2001 {
2002 temp = value_addr (temp);
2003 }
2004 *objp = temp;
2005 }
2006 if (old_cleanups != NULL)
2007 do_cleanups (old_cleanups);
2008
2009 switch (match_quality)
2010 {
2011 case INCOMPATIBLE:
2012 return 100;
2013 case NON_STANDARD:
2014 return 10;
2015 default: /* STANDARD */
2016 return 0;
2017 }
2018 }
2019
2020 /* Find the best overload match, searching for FUNC_NAME in namespaces
2021 contained in QUALIFIED_NAME until it either finds a good match or
2022 runs out of namespaces. It stores the overloaded functions in
2023 *OLOAD_SYMS, and the badness vector in *OLOAD_CHAMP_BV. The
2024 calling function is responsible for freeing *OLOAD_SYMS and
2025 *OLOAD_CHAMP_BV. */
2026
2027 static int
2028 find_oload_champ_namespace (struct type **arg_types, int nargs,
2029 const char *func_name,
2030 const char *qualified_name,
2031 struct symbol ***oload_syms,
2032 struct badness_vector **oload_champ_bv)
2033 {
2034 int oload_champ;
2035
2036 find_oload_champ_namespace_loop (arg_types, nargs,
2037 func_name,
2038 qualified_name, 0,
2039 oload_syms, oload_champ_bv,
2040 &oload_champ);
2041
2042 return oload_champ;
2043 }
2044
2045 /* Helper function for find_oload_champ_namespace; NAMESPACE_LEN is
2046 how deep we've looked for namespaces, and the champ is stored in
2047 OLOAD_CHAMP. The return value is 1 if the champ is a good one, 0
2048 if it isn't.
2049
2050 It is the caller's responsibility to free *OLOAD_SYMS and
2051 *OLOAD_CHAMP_BV. */
2052
2053 static int
2054 find_oload_champ_namespace_loop (struct type **arg_types, int nargs,
2055 const char *func_name,
2056 const char *qualified_name,
2057 int namespace_len,
2058 struct symbol ***oload_syms,
2059 struct badness_vector **oload_champ_bv,
2060 int *oload_champ)
2061 {
2062 int next_namespace_len = namespace_len;
2063 int searched_deeper = 0;
2064 int num_fns = 0;
2065 struct cleanup *old_cleanups;
2066 int new_oload_champ;
2067 struct symbol **new_oload_syms;
2068 struct badness_vector *new_oload_champ_bv;
2069 char *new_namespace;
2070
2071 if (next_namespace_len != 0)
2072 {
2073 gdb_assert (qualified_name[next_namespace_len] == ':');
2074 next_namespace_len += 2;
2075 }
2076 next_namespace_len +=
2077 cp_find_first_component (qualified_name + next_namespace_len);
2078
2079 /* Initialize these to values that can safely be xfree'd. */
2080 *oload_syms = NULL;
2081 *oload_champ_bv = NULL;
2082
2083 /* First, see if we have a deeper namespace we can search in.
2084 If we get a good match there, use it. */
2085
2086 if (qualified_name[next_namespace_len] == ':')
2087 {
2088 searched_deeper = 1;
2089
2090 if (find_oload_champ_namespace_loop (arg_types, nargs,
2091 func_name, qualified_name,
2092 next_namespace_len,
2093 oload_syms, oload_champ_bv,
2094 oload_champ))
2095 {
2096 return 1;
2097 }
2098 };
2099
2100 /* If we reach here, either we're in the deepest namespace or we
2101 didn't find a good match in a deeper namespace. But, in the
2102 latter case, we still have a bad match in a deeper namespace;
2103 note that we might not find any match at all in the current
2104 namespace. (There's always a match in the deepest namespace,
2105 because this overload mechanism only gets called if there's a
2106 function symbol to start off with.) */
2107
2108 old_cleanups = make_cleanup (xfree, *oload_syms);
2109 old_cleanups = make_cleanup (xfree, *oload_champ_bv);
2110 new_namespace = alloca (namespace_len + 1);
2111 strncpy (new_namespace, qualified_name, namespace_len);
2112 new_namespace[namespace_len] = '\0';
2113 new_oload_syms = make_symbol_overload_list (func_name,
2114 new_namespace);
2115 while (new_oload_syms[num_fns])
2116 ++num_fns;
2117
2118 new_oload_champ = find_oload_champ (arg_types, nargs, 0, num_fns,
2119 NULL, new_oload_syms,
2120 &new_oload_champ_bv);
2121
2122 /* Case 1: We found a good match. Free earlier matches (if any),
2123 and return it. Case 2: We didn't find a good match, but we're
2124 not the deepest function. Then go with the bad match that the
2125 deeper function found. Case 3: We found a bad match, and we're
2126 the deepest function. Then return what we found, even though
2127 it's a bad match. */
2128
2129 if (new_oload_champ != -1
2130 && classify_oload_match (new_oload_champ_bv, nargs, 0) == STANDARD)
2131 {
2132 *oload_syms = new_oload_syms;
2133 *oload_champ = new_oload_champ;
2134 *oload_champ_bv = new_oload_champ_bv;
2135 do_cleanups (old_cleanups);
2136 return 1;
2137 }
2138 else if (searched_deeper)
2139 {
2140 xfree (new_oload_syms);
2141 xfree (new_oload_champ_bv);
2142 discard_cleanups (old_cleanups);
2143 return 0;
2144 }
2145 else
2146 {
2147 gdb_assert (new_oload_champ != -1);
2148 *oload_syms = new_oload_syms;
2149 *oload_champ = new_oload_champ;
2150 *oload_champ_bv = new_oload_champ_bv;
2151 discard_cleanups (old_cleanups);
2152 return 0;
2153 }
2154 }
2155
2156 /* Look for a function to take NARGS args of types ARG_TYPES. Find
2157 the best match from among the overloaded methods or functions
2158 (depending on METHOD) given by FNS_PTR or OLOAD_SYMS, respectively.
2159 The number of methods/functions in the list is given by NUM_FNS.
2160 Return the index of the best match; store an indication of the
2161 quality of the match in OLOAD_CHAMP_BV.
2162
2163 It is the caller's responsibility to free *OLOAD_CHAMP_BV. */
2164
2165 static int
2166 find_oload_champ (struct type **arg_types, int nargs, int method,
2167 int num_fns, struct fn_field *fns_ptr,
2168 struct symbol **oload_syms,
2169 struct badness_vector **oload_champ_bv)
2170 {
2171 int ix;
2172 /* A measure of how good an overloaded instance is. */
2173 struct badness_vector *bv;
2174 /* Index of best overloaded function. */
2175 int oload_champ = -1;
2176 /* Current ambiguity state for overload resolution. */
2177 int oload_ambiguous = 0;
2178 /* 0 => no ambiguity, 1 => two good funcs, 2 => incomparable funcs. */
2179
2180 *oload_champ_bv = NULL;
2181
2182 /* Consider each candidate in turn. */
2183 for (ix = 0; ix < num_fns; ix++)
2184 {
2185 int jj;
2186 int static_offset = oload_method_static (method, fns_ptr, ix);
2187 int nparms;
2188 struct type **parm_types;
2189
2190 if (method)
2191 {
2192 nparms = TYPE_NFIELDS (TYPE_FN_FIELD_TYPE (fns_ptr, ix));
2193 }
2194 else
2195 {
2196 /* If it's not a method, this is the proper place. */
2197 nparms = TYPE_NFIELDS (SYMBOL_TYPE (oload_syms[ix]));
2198 }
2199
2200 /* Prepare array of parameter types. */
2201 parm_types = (struct type **)
2202 xmalloc (nparms * (sizeof (struct type *)));
2203 for (jj = 0; jj < nparms; jj++)
2204 parm_types[jj] = (method
2205 ? (TYPE_FN_FIELD_ARGS (fns_ptr, ix)[jj].type)
2206 : TYPE_FIELD_TYPE (SYMBOL_TYPE (oload_syms[ix]),
2207 jj));
2208
2209 /* Compare parameter types to supplied argument types. Skip
2210 THIS for static methods. */
2211 bv = rank_function (parm_types, nparms,
2212 arg_types + static_offset,
2213 nargs - static_offset);
2214
2215 if (!*oload_champ_bv)
2216 {
2217 *oload_champ_bv = bv;
2218 oload_champ = 0;
2219 }
2220 else /* See whether current candidate is better or worse than
2221 previous best. */
2222 switch (compare_badness (bv, *oload_champ_bv))
2223 {
2224 case 0: /* Top two contenders are equally good. */
2225 oload_ambiguous = 1;
2226 break;
2227 case 1: /* Incomparable top contenders. */
2228 oload_ambiguous = 2;
2229 break;
2230 case 2: /* New champion, record details. */
2231 *oload_champ_bv = bv;
2232 oload_ambiguous = 0;
2233 oload_champ = ix;
2234 break;
2235 case 3:
2236 default:
2237 break;
2238 }
2239 xfree (parm_types);
2240 if (overload_debug)
2241 {
2242 if (method)
2243 fprintf_filtered (gdb_stderr,
2244 "Overloaded method instance %s, # of parms %d\n",
2245 fns_ptr[ix].physname, nparms);
2246 else
2247 fprintf_filtered (gdb_stderr,
2248 "Overloaded function instance %s # of parms %d\n",
2249 SYMBOL_DEMANGLED_NAME (oload_syms[ix]),
2250 nparms);
2251 for (jj = 0; jj < nargs - static_offset; jj++)
2252 fprintf_filtered (gdb_stderr,
2253 "...Badness @ %d : %d\n",
2254 jj, bv->rank[jj]);
2255 fprintf_filtered (gdb_stderr,
2256 "Overload resolution champion is %d, ambiguous? %d\n",
2257 oload_champ, oload_ambiguous);
2258 }
2259 }
2260
2261 return oload_champ;
2262 }
2263
2264 /* Return 1 if we're looking at a static method, 0 if we're looking at
2265 a non-static method or a function that isn't a method. */
2266
2267 static int
2268 oload_method_static (int method, struct fn_field *fns_ptr, int index)
2269 {
2270 if (method && TYPE_FN_FIELD_STATIC_P (fns_ptr, index))
2271 return 1;
2272 else
2273 return 0;
2274 }
2275
2276 /* Check how good an overload match OLOAD_CHAMP_BV represents. */
2277
2278 static enum oload_classification
2279 classify_oload_match (struct badness_vector *oload_champ_bv,
2280 int nargs,
2281 int static_offset)
2282 {
2283 int ix;
2284
2285 for (ix = 1; ix <= nargs - static_offset; ix++)
2286 {
2287 if (oload_champ_bv->rank[ix] >= 100)
2288 return INCOMPATIBLE; /* Truly mismatched types. */
2289 else if (oload_champ_bv->rank[ix] >= 10)
2290 return NON_STANDARD; /* Non-standard type conversions
2291 needed. */
2292 }
2293
2294 return STANDARD; /* Only standard conversions needed. */
2295 }
2296
2297 /* C++: return 1 is NAME is a legitimate name for the destructor of
2298 type TYPE. If TYPE does not have a destructor, or if NAME is
2299 inappropriate for TYPE, an error is signaled. */
2300 int
2301 destructor_name_p (const char *name, const struct type *type)
2302 {
2303 /* Destructors are a special case. */
2304
2305 if (name[0] == '~')
2306 {
2307 char *dname = type_name_no_tag (type);
2308 char *cp = strchr (dname, '<');
2309 unsigned int len;
2310
2311 /* Do not compare the template part for template classes. */
2312 if (cp == NULL)
2313 len = strlen (dname);
2314 else
2315 len = cp - dname;
2316 if (strlen (name + 1) != len || strncmp (dname, name + 1, len) != 0)
2317 error (_("name of destructor must equal name of class"));
2318 else
2319 return 1;
2320 }
2321 return 0;
2322 }
2323
2324 /* Helper function for check_field: Given TYPE, a structure/union,
2325 return 1 if the component named NAME from the ultimate target
2326 structure/union is defined, otherwise, return 0. */
2327
2328 static int
2329 check_field_in (struct type *type, const char *name)
2330 {
2331 int i;
2332
2333 for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
2334 {
2335 char *t_field_name = TYPE_FIELD_NAME (type, i);
2336 if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
2337 return 1;
2338 }
2339
2340 /* C++: If it was not found as a data field, then try to return it
2341 as a pointer to a method. */
2342
2343 /* Destructors are a special case. */
2344 if (destructor_name_p (name, type))
2345 {
2346 int m_index, f_index;
2347
2348 return get_destructor_fn_field (type, &m_index, &f_index);
2349 }
2350
2351 for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; --i)
2352 {
2353 if (strcmp_iw (TYPE_FN_FIELDLIST_NAME (type, i), name) == 0)
2354 return 1;
2355 }
2356
2357 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
2358 if (check_field_in (TYPE_BASECLASS (type, i), name))
2359 return 1;
2360
2361 return 0;
2362 }
2363
2364
2365 /* C++: Given ARG1, a value of type (pointer to a)* structure/union,
2366 return 1 if the component named NAME from the ultimate target
2367 structure/union is defined, otherwise, return 0. */
2368
2369 int
2370 check_field (struct value *arg1, const char *name)
2371 {
2372 struct type *t;
2373
2374 arg1 = coerce_array (arg1);
2375
2376 t = value_type (arg1);
2377
2378 /* Follow pointers until we get to a non-pointer. */
2379
2380 for (;;)
2381 {
2382 CHECK_TYPEDEF (t);
2383 if (TYPE_CODE (t) != TYPE_CODE_PTR
2384 && TYPE_CODE (t) != TYPE_CODE_REF)
2385 break;
2386 t = TYPE_TARGET_TYPE (t);
2387 }
2388
2389 if (TYPE_CODE (t) != TYPE_CODE_STRUCT
2390 && TYPE_CODE (t) != TYPE_CODE_UNION)
2391 error (_("Internal error: `this' is not an aggregate"));
2392
2393 return check_field_in (t, name);
2394 }
2395
2396 /* C++: Given an aggregate type CURTYPE, and a member name NAME,
2397 return the appropriate member (or the address of the member, if
2398 WANT_ADDRESS). This function is used to resolve user expressions
2399 of the form "DOMAIN::NAME". For more details on what happens, see
2400 the comment before value_struct_elt_for_reference. */
2401
2402 struct value *
2403 value_aggregate_elt (struct type *curtype,
2404 char *name, int want_address,
2405 enum noside noside)
2406 {
2407 switch (TYPE_CODE (curtype))
2408 {
2409 case TYPE_CODE_STRUCT:
2410 case TYPE_CODE_UNION:
2411 return value_struct_elt_for_reference (curtype, 0, curtype,
2412 name, NULL,
2413 want_address, noside);
2414 case TYPE_CODE_NAMESPACE:
2415 return value_namespace_elt (curtype, name,
2416 want_address, noside);
2417 default:
2418 internal_error (__FILE__, __LINE__,
2419 _("non-aggregate type in value_aggregate_elt"));
2420 }
2421 }
2422
2423 /* C++: Given an aggregate type CURTYPE, and a member name NAME,
2424 return the address of this member as a "pointer to member" type.
2425 If INTYPE is non-null, then it will be the type of the member we
2426 are looking for. This will help us resolve "pointers to member
2427 functions". This function is used to resolve user expressions of
2428 the form "DOMAIN::NAME". */
2429
2430 static struct value *
2431 value_struct_elt_for_reference (struct type *domain, int offset,
2432 struct type *curtype, char *name,
2433 struct type *intype,
2434 int want_address,
2435 enum noside noside)
2436 {
2437 struct type *t = curtype;
2438 int i;
2439 struct value *v, *result;
2440
2441 if (TYPE_CODE (t) != TYPE_CODE_STRUCT
2442 && TYPE_CODE (t) != TYPE_CODE_UNION)
2443 error (_("Internal error: non-aggregate type to value_struct_elt_for_reference"));
2444
2445 for (i = TYPE_NFIELDS (t) - 1; i >= TYPE_N_BASECLASSES (t); i--)
2446 {
2447 char *t_field_name = TYPE_FIELD_NAME (t, i);
2448
2449 if (t_field_name && strcmp (t_field_name, name) == 0)
2450 {
2451 if (TYPE_FIELD_STATIC (t, i))
2452 {
2453 v = value_static_field (t, i);
2454 if (v == NULL)
2455 error (_("static field %s has been optimized out"),
2456 name);
2457 if (want_address)
2458 v = value_addr (v);
2459 return v;
2460 }
2461 if (TYPE_FIELD_PACKED (t, i))
2462 error (_("pointers to bitfield members not allowed"));
2463
2464 if (want_address)
2465 return value_from_longest
2466 (lookup_memberptr_type (TYPE_FIELD_TYPE (t, i), domain),
2467 offset + (LONGEST) (TYPE_FIELD_BITPOS (t, i) >> 3));
2468 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
2469 return allocate_value (TYPE_FIELD_TYPE (t, i));
2470 else
2471 error (_("Cannot reference non-static field \"%s\""), name);
2472 }
2473 }
2474
2475 /* C++: If it was not found as a data field, then try to return it
2476 as a pointer to a method. */
2477
2478 /* Destructors are a special case. */
2479 if (destructor_name_p (name, t))
2480 {
2481 error (_("member pointers to destructors not implemented yet"));
2482 }
2483
2484 /* Perform all necessary dereferencing. */
2485 while (intype && TYPE_CODE (intype) == TYPE_CODE_PTR)
2486 intype = TYPE_TARGET_TYPE (intype);
2487
2488 for (i = TYPE_NFN_FIELDS (t) - 1; i >= 0; --i)
2489 {
2490 char *t_field_name = TYPE_FN_FIELDLIST_NAME (t, i);
2491 char dem_opname[64];
2492
2493 if (strncmp (t_field_name, "__", 2) == 0
2494 || strncmp (t_field_name, "op", 2) == 0
2495 || strncmp (t_field_name, "type", 4) == 0)
2496 {
2497 if (cplus_demangle_opname (t_field_name,
2498 dem_opname, DMGL_ANSI))
2499 t_field_name = dem_opname;
2500 else if (cplus_demangle_opname (t_field_name,
2501 dem_opname, 0))
2502 t_field_name = dem_opname;
2503 }
2504 if (t_field_name && strcmp (t_field_name, name) == 0)
2505 {
2506 int j = TYPE_FN_FIELDLIST_LENGTH (t, i);
2507 struct fn_field *f = TYPE_FN_FIELDLIST1 (t, i);
2508
2509 check_stub_method_group (t, i);
2510
2511 if (intype == 0 && j > 1)
2512 error (_("non-unique member `%s' requires type instantiation"), name);
2513 if (intype)
2514 {
2515 while (j--)
2516 if (TYPE_FN_FIELD_TYPE (f, j) == intype)
2517 break;
2518 if (j < 0)
2519 error (_("no member function matches that type instantiation"));
2520 }
2521 else
2522 j = 0;
2523
2524 if (TYPE_FN_FIELD_STATIC_P (f, j))
2525 {
2526 struct symbol *s =
2527 lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
2528 0, VAR_DOMAIN, 0, NULL);
2529 if (s == NULL)
2530 return NULL;
2531
2532 if (want_address)
2533 return value_addr (read_var_value (s, 0));
2534 else
2535 return read_var_value (s, 0);
2536 }
2537
2538 if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
2539 {
2540 if (want_address)
2541 {
2542 result = allocate_value
2543 (lookup_methodptr_type (TYPE_FN_FIELD_TYPE (f, j)));
2544 cplus_make_method_ptr (value_contents_writeable (result),
2545 TYPE_FN_FIELD_VOFFSET (f, j), 1);
2546 }
2547 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
2548 return allocate_value (TYPE_FN_FIELD_TYPE (f, j));
2549 else
2550 error (_("Cannot reference virtual member function \"%s\""),
2551 name);
2552 }
2553 else
2554 {
2555 struct symbol *s =
2556 lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
2557 0, VAR_DOMAIN, 0, NULL);
2558 if (s == NULL)
2559 return NULL;
2560
2561 v = read_var_value (s, 0);
2562 if (!want_address)
2563 result = v;
2564 else
2565 {
2566 result = allocate_value (lookup_methodptr_type (TYPE_FN_FIELD_TYPE (f, j)));
2567 cplus_make_method_ptr (value_contents_writeable (result),
2568 VALUE_ADDRESS (v), 0);
2569 }
2570 }
2571 return result;
2572 }
2573 }
2574 for (i = TYPE_N_BASECLASSES (t) - 1; i >= 0; i--)
2575 {
2576 struct value *v;
2577 int base_offset;
2578
2579 if (BASETYPE_VIA_VIRTUAL (t, i))
2580 base_offset = 0;
2581 else
2582 base_offset = TYPE_BASECLASS_BITPOS (t, i) / 8;
2583 v = value_struct_elt_for_reference (domain,
2584 offset + base_offset,
2585 TYPE_BASECLASS (t, i),
2586 name, intype,
2587 want_address, noside);
2588 if (v)
2589 return v;
2590 }
2591
2592 /* As a last chance, pretend that CURTYPE is a namespace, and look
2593 it up that way; this (frequently) works for types nested inside
2594 classes. */
2595
2596 return value_maybe_namespace_elt (curtype, name,
2597 want_address, noside);
2598 }
2599
2600 /* C++: Return the member NAME of the namespace given by the type
2601 CURTYPE. */
2602
2603 static struct value *
2604 value_namespace_elt (const struct type *curtype,
2605 char *name, int want_address,
2606 enum noside noside)
2607 {
2608 struct value *retval = value_maybe_namespace_elt (curtype, name,
2609 want_address,
2610 noside);
2611
2612 if (retval == NULL)
2613 error (_("No symbol \"%s\" in namespace \"%s\"."),
2614 name, TYPE_TAG_NAME (curtype));
2615
2616 return retval;
2617 }
2618
2619 /* A helper function used by value_namespace_elt and
2620 value_struct_elt_for_reference. It looks up NAME inside the
2621 context CURTYPE; this works if CURTYPE is a namespace or if CURTYPE
2622 is a class and NAME refers to a type in CURTYPE itself (as opposed
2623 to, say, some base class of CURTYPE). */
2624
2625 static struct value *
2626 value_maybe_namespace_elt (const struct type *curtype,
2627 char *name, int want_address,
2628 enum noside noside)
2629 {
2630 const char *namespace_name = TYPE_TAG_NAME (curtype);
2631 struct symbol *sym;
2632 struct value *result;
2633
2634 sym = cp_lookup_symbol_namespace (namespace_name, name, NULL,
2635 get_selected_block (0),
2636 VAR_DOMAIN, NULL);
2637
2638 if (sym == NULL)
2639 return NULL;
2640 else if ((noside == EVAL_AVOID_SIDE_EFFECTS)
2641 && (SYMBOL_CLASS (sym) == LOC_TYPEDEF))
2642 result = allocate_value (SYMBOL_TYPE (sym));
2643 else
2644 result = value_of_variable (sym, get_selected_block (0));
2645
2646 if (result && want_address)
2647 result = value_addr (result);
2648
2649 return result;
2650 }
2651
2652 /* Given a pointer value V, find the real (RTTI) type of the object it
2653 points to.
2654
2655 Other parameters FULL, TOP, USING_ENC as with value_rtti_type()
2656 and refer to the values computed for the object pointed to. */
2657
2658 struct type *
2659 value_rtti_target_type (struct value *v, int *full,
2660 int *top, int *using_enc)
2661 {
2662 struct value *target;
2663
2664 target = value_ind (v);
2665
2666 return value_rtti_type (target, full, top, using_enc);
2667 }
2668
2669 /* Given a value pointed to by ARGP, check its real run-time type, and
2670 if that is different from the enclosing type, create a new value
2671 using the real run-time type as the enclosing type (and of the same
2672 type as ARGP) and return it, with the embedded offset adjusted to
2673 be the correct offset to the enclosed object. RTYPE is the type,
2674 and XFULL, XTOP, and XUSING_ENC are the other parameters, computed
2675 by value_rtti_type(). If these are available, they can be supplied
2676 and a second call to value_rtti_type() is avoided. (Pass RTYPE ==
2677 NULL if they're not available. */
2678
2679 struct value *
2680 value_full_object (struct value *argp,
2681 struct type *rtype,
2682 int xfull, int xtop,
2683 int xusing_enc)
2684 {
2685 struct type *real_type;
2686 int full = 0;
2687 int top = -1;
2688 int using_enc = 0;
2689 struct value *new_val;
2690
2691 if (rtype)
2692 {
2693 real_type = rtype;
2694 full = xfull;
2695 top = xtop;
2696 using_enc = xusing_enc;
2697 }
2698 else
2699 real_type = value_rtti_type (argp, &full, &top, &using_enc);
2700
2701 /* If no RTTI data, or if object is already complete, do nothing. */
2702 if (!real_type || real_type == value_enclosing_type (argp))
2703 return argp;
2704
2705 /* If we have the full object, but for some reason the enclosing
2706 type is wrong, set it. */
2707 /* pai: FIXME -- sounds iffy */
2708 if (full)
2709 {
2710 argp = value_change_enclosing_type (argp, real_type);
2711 return argp;
2712 }
2713
2714 /* Check if object is in memory */
2715 if (VALUE_LVAL (argp) != lval_memory)
2716 {
2717 warning (_("Couldn't retrieve complete object of RTTI type %s; object may be in register(s)."),
2718 TYPE_NAME (real_type));
2719
2720 return argp;
2721 }
2722
2723 /* All other cases -- retrieve the complete object. */
2724 /* Go back by the computed top_offset from the beginning of the
2725 object, adjusting for the embedded offset of argp if that's what
2726 value_rtti_type used for its computation. */
2727 new_val = value_at_lazy (real_type, VALUE_ADDRESS (argp) - top +
2728 (using_enc ? 0 : value_embedded_offset (argp)));
2729 deprecated_set_value_type (new_val, value_type (argp));
2730 set_value_embedded_offset (new_val, (using_enc
2731 ? top + value_embedded_offset (argp)
2732 : top));
2733 return new_val;
2734 }
2735
2736
2737 /* Return the value of the local variable, if one exists.
2738 Flag COMPLAIN signals an error if the request is made in an
2739 inappropriate context. */
2740
2741 struct value *
2742 value_of_local (const char *name, int complain)
2743 {
2744 struct symbol *func, *sym;
2745 struct block *b;
2746 struct value * ret;
2747 struct frame_info *frame;
2748
2749 if (complain)
2750 frame = get_selected_frame (_("no frame selected"));
2751 else
2752 {
2753 frame = deprecated_safe_get_selected_frame ();
2754 if (frame == 0)
2755 return 0;
2756 }
2757
2758 func = get_frame_function (frame);
2759 if (!func)
2760 {
2761 if (complain)
2762 error (_("no `%s' in nameless context"), name);
2763 else
2764 return 0;
2765 }
2766
2767 b = SYMBOL_BLOCK_VALUE (func);
2768 if (dict_empty (BLOCK_DICT (b)))
2769 {
2770 if (complain)
2771 error (_("no args, no `%s'"), name);
2772 else
2773 return 0;
2774 }
2775
2776 /* Calling lookup_block_symbol is necessary to get the LOC_REGISTER
2777 symbol instead of the LOC_ARG one (if both exist). */
2778 sym = lookup_block_symbol (b, name, NULL, VAR_DOMAIN);
2779 if (sym == NULL)
2780 {
2781 if (complain)
2782 error (_("current stack frame does not contain a variable named `%s'"),
2783 name);
2784 else
2785 return NULL;
2786 }
2787
2788 ret = read_var_value (sym, frame);
2789 if (ret == 0 && complain)
2790 error (_("`%s' argument unreadable"), name);
2791 return ret;
2792 }
2793
2794 /* C++/Objective-C: return the value of the class instance variable,
2795 if one exists. Flag COMPLAIN signals an error if the request is
2796 made in an inappropriate context. */
2797
2798 struct value *
2799 value_of_this (int complain)
2800 {
2801 if (current_language->la_language == language_objc)
2802 return value_of_local ("self", complain);
2803 else
2804 return value_of_local ("this", complain);
2805 }
2806
2807 /* Create a slice (sub-string, sub-array) of ARRAY, that is LENGTH
2808 elements long, starting at LOWBOUND. The result has the same lower
2809 bound as the original ARRAY. */
2810
2811 struct value *
2812 value_slice (struct value *array, int lowbound, int length)
2813 {
2814 struct type *slice_range_type, *slice_type, *range_type;
2815 LONGEST lowerbound, upperbound;
2816 struct value *slice;
2817 struct type *array_type;
2818
2819 array_type = check_typedef (value_type (array));
2820 if (TYPE_CODE (array_type) != TYPE_CODE_ARRAY
2821 && TYPE_CODE (array_type) != TYPE_CODE_STRING
2822 && TYPE_CODE (array_type) != TYPE_CODE_BITSTRING)
2823 error (_("cannot take slice of non-array"));
2824
2825 range_type = TYPE_INDEX_TYPE (array_type);
2826 if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
2827 error (_("slice from bad array or bitstring"));
2828
2829 if (lowbound < lowerbound || length < 0
2830 || lowbound + length - 1 > upperbound)
2831 error (_("slice out of range"));
2832
2833 /* FIXME-type-allocation: need a way to free this type when we are
2834 done with it. */
2835 slice_range_type = create_range_type ((struct type *) NULL,
2836 TYPE_TARGET_TYPE (range_type),
2837 lowbound,
2838 lowbound + length - 1);
2839 if (TYPE_CODE (array_type) == TYPE_CODE_BITSTRING)
2840 {
2841 int i;
2842
2843 slice_type = create_set_type ((struct type *) NULL,
2844 slice_range_type);
2845 TYPE_CODE (slice_type) = TYPE_CODE_BITSTRING;
2846 slice = value_zero (slice_type, not_lval);
2847
2848 for (i = 0; i < length; i++)
2849 {
2850 int element = value_bit_index (array_type,
2851 value_contents (array),
2852 lowbound + i);
2853 if (element < 0)
2854 error (_("internal error accessing bitstring"));
2855 else if (element > 0)
2856 {
2857 int j = i % TARGET_CHAR_BIT;
2858 if (BITS_BIG_ENDIAN)
2859 j = TARGET_CHAR_BIT - 1 - j;
2860 value_contents_raw (slice)[i / TARGET_CHAR_BIT] |= (1 << j);
2861 }
2862 }
2863 /* We should set the address, bitssize, and bitspos, so the
2864 slice can be used on the LHS, but that may require extensions
2865 to value_assign. For now, just leave as a non_lval.
2866 FIXME. */
2867 }
2868 else
2869 {
2870 struct type *element_type = TYPE_TARGET_TYPE (array_type);
2871 LONGEST offset =
2872 (lowbound - lowerbound) * TYPE_LENGTH (check_typedef (element_type));
2873
2874 slice_type = create_array_type ((struct type *) NULL,
2875 element_type,
2876 slice_range_type);
2877 TYPE_CODE (slice_type) = TYPE_CODE (array_type);
2878
2879 slice = allocate_value (slice_type);
2880 if (value_lazy (array))
2881 set_value_lazy (slice, 1);
2882 else
2883 memcpy (value_contents_writeable (slice),
2884 value_contents (array) + offset,
2885 TYPE_LENGTH (slice_type));
2886
2887 if (VALUE_LVAL (array) == lval_internalvar)
2888 VALUE_LVAL (slice) = lval_internalvar_component;
2889 else
2890 VALUE_LVAL (slice) = VALUE_LVAL (array);
2891
2892 VALUE_ADDRESS (slice) = VALUE_ADDRESS (array);
2893 VALUE_FRAME_ID (slice) = VALUE_FRAME_ID (array);
2894 set_value_offset (slice, value_offset (array) + offset);
2895 }
2896 return slice;
2897 }
2898
2899 /* Create a value for a FORTRAN complex number. Currently most of the
2900 time values are coerced to COMPLEX*16 (i.e. a complex number
2901 composed of 2 doubles. This really should be a smarter routine
2902 that figures out precision inteligently as opposed to assuming
2903 doubles. FIXME: fmb */
2904
2905 struct value *
2906 value_literal_complex (struct value *arg1,
2907 struct value *arg2,
2908 struct type *type)
2909 {
2910 struct value *val;
2911 struct type *real_type = TYPE_TARGET_TYPE (type);
2912
2913 val = allocate_value (type);
2914 arg1 = value_cast (real_type, arg1);
2915 arg2 = value_cast (real_type, arg2);
2916
2917 memcpy (value_contents_raw (val),
2918 value_contents (arg1), TYPE_LENGTH (real_type));
2919 memcpy (value_contents_raw (val) + TYPE_LENGTH (real_type),
2920 value_contents (arg2), TYPE_LENGTH (real_type));
2921 return val;
2922 }
2923
2924 /* Cast a value into the appropriate complex data type. */
2925
2926 static struct value *
2927 cast_into_complex (struct type *type, struct value *val)
2928 {
2929 struct type *real_type = TYPE_TARGET_TYPE (type);
2930
2931 if (TYPE_CODE (value_type (val)) == TYPE_CODE_COMPLEX)
2932 {
2933 struct type *val_real_type = TYPE_TARGET_TYPE (value_type (val));
2934 struct value *re_val = allocate_value (val_real_type);
2935 struct value *im_val = allocate_value (val_real_type);
2936
2937 memcpy (value_contents_raw (re_val),
2938 value_contents (val), TYPE_LENGTH (val_real_type));
2939 memcpy (value_contents_raw (im_val),
2940 value_contents (val) + TYPE_LENGTH (val_real_type),
2941 TYPE_LENGTH (val_real_type));
2942
2943 return value_literal_complex (re_val, im_val, type);
2944 }
2945 else if (TYPE_CODE (value_type (val)) == TYPE_CODE_FLT
2946 || TYPE_CODE (value_type (val)) == TYPE_CODE_INT)
2947 return value_literal_complex (val,
2948 value_zero (real_type, not_lval),
2949 type);
2950 else
2951 error (_("cannot cast non-number to complex"));
2952 }
2953
2954 void
2955 _initialize_valops (void)
2956 {
2957 add_setshow_boolean_cmd ("overload-resolution", class_support,
2958 &overload_resolution, _("\
2959 Set overload resolution in evaluating C++ functions."), _("\
2960 Show overload resolution in evaluating C++ functions."),
2961 NULL, NULL,
2962 show_overload_resolution,
2963 &setlist, &showlist);
2964 overload_resolution = 1;
2965 }