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