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