GDB (xrefs)
/tmp/gdb-8.1/gdb/valops.c
Go to the documentation of this file.
1 /* Perform non-arithmetic operations on values, for GDB.
2 
3  Copyright (C) 1986-2018 Free Software Foundation, Inc.
4 
5  This file is part of GDB.
6 
7  This program is free software; you can redistribute it and/or modify
8  it under the terms of the GNU General Public License as published by
9  the Free Software Foundation; either version 3 of the License, or
10  (at your option) any later version.
11 
12  This program is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  GNU General Public License for more details.
16 
17  You should have received a copy of the GNU General Public License
18  along with this program. If not, see <http://www.gnu.org/licenses/>. */
19 
20 #include "defs.h"
21 #include "symtab.h"
22 #include "gdbtypes.h"
23 #include "value.h"
24 #include "frame.h"
25 #include "inferior.h"
26 #include "gdbcore.h"
27 #include "target.h"
28 #include "demangle.h"
29 #include "language.h"
30 #include "gdbcmd.h"
31 #include "regcache.h"
32 #include "cp-abi.h"
33 #include "block.h"
34 #include "infcall.h"
35 #include "dictionary.h"
36 #include "cp-support.h"
37 #include "target-float.h"
38 #include "tracepoint.h"
39 #include "observer.h"
40 #include "objfiles.h"
41 #include "extension.h"
42 #include "byte-vector.h"
43 
44 extern unsigned int overload_debug;
45 /* Local functions. */
46 
47 static int typecmp (int staticp, int varargs, int nargs,
48  struct field t1[], struct value *t2[]);
49 
50 static struct value *search_struct_field (const char *, struct value *,
51  struct type *, int);
52 
53 static struct value *search_struct_method (const char *, struct value **,
54  struct value **,
55  LONGEST, int *, struct type *);
56 
57 static int find_oload_champ_namespace (struct value **, int,
58  const char *, const char *,
59  struct symbol ***,
60  struct badness_vector **,
61  const int no_adl);
62 
63 static
64 int find_oload_champ_namespace_loop (struct value **, int,
65  const char *, const char *,
66  int, struct symbol ***,
67  struct badness_vector **, int *,
68  const int no_adl);
69 
70 static int find_oload_champ (struct value **, int, int,
71  struct fn_field *, VEC (xmethod_worker_ptr) *,
72  struct symbol **, struct badness_vector **);
73 
74 static int oload_method_static_p (struct fn_field *, int);
75 
77 
78 static enum
80  int, int);
81 
82 static struct value *value_struct_elt_for_reference (struct type *,
83  int, struct type *,
84  const char *,
85  struct type *,
86  int, enum noside);
87 
88 static struct value *value_namespace_elt (const struct type *,
89  const char *, int , enum noside);
90 
91 static struct value *value_maybe_namespace_elt (const struct type *,
92  const char *, int,
93  enum noside);
94 
96 
97 static struct value *cast_into_complex (struct type *, struct value *);
98 
99 static void find_method_list (struct value **, const char *,
100  LONGEST, struct type *, struct fn_field **, int *,
101  VEC (xmethod_worker_ptr) **,
102  struct type **, LONGEST *);
103 
104 #if 0
105 /* Flag for whether we want to abandon failed expression evals by
106  default. */
107 
108 static int auto_abandon = 0;
109 #endif
110 
112 static void
113 show_overload_resolution (struct ui_file *file, int from_tty,
114  struct cmd_list_element *c,
115  const char *value)
116 {
117  fprintf_filtered (file, _("Overload resolution in evaluating "
118  "C++ functions is %s.\n"),
119  value);
120 }
121 
122 /* Find the address of function name NAME in the inferior. If OBJF_P
123  is non-NULL, *OBJF_P will be set to the OBJFILE where the function
124  is defined. */
125 
126 struct value *
127 find_function_in_inferior (const char *name, struct objfile **objf_p)
128 {
129  struct block_symbol sym;
130 
131  sym = lookup_symbol (name, 0, VAR_DOMAIN, 0);
132  if (sym.symbol != NULL)
133  {
134  if (SYMBOL_CLASS (sym.symbol) != LOC_BLOCK)
135  {
136  error (_("\"%s\" exists in this program but is not a function."),
137  name);
138  }
139 
140  if (objf_p)
141  *objf_p = symbol_objfile (sym.symbol);
142 
143  return value_of_variable (sym.symbol, sym.block);
144  }
145  else
146  {
147  struct bound_minimal_symbol msymbol =
149 
150  if (msymbol.minsym != NULL)
151  {
152  struct objfile *objfile = msymbol.objfile;
154 
155  struct type *type;
156  CORE_ADDR maddr;
157  type = lookup_pointer_type (builtin_type (gdbarch)->builtin_char);
160  maddr = BMSYMBOL_VALUE_ADDRESS (msymbol);
161 
162  if (objf_p)
163  *objf_p = objfile;
164 
165  return value_from_pointer (type, maddr);
166  }
167  else
168  {
170  error (_("evaluation of this expression "
171  "requires the target program to be active"));
172  else
173  error (_("evaluation of this expression requires the "
174  "program to have a function \"%s\"."),
175  name);
176  }
177  }
178 }
179 
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. */
183 
184 struct value *
186 {
187  struct objfile *objf;
188  struct value *val = find_function_in_inferior ("malloc", &objf);
189  struct gdbarch *gdbarch = get_objfile_arch (objf);
190  struct value *blocklen;
191 
192  blocklen = value_from_longest (builtin_type (gdbarch)->builtin_int, len);
193  val = call_function_by_hand (val, NULL, 1, &blocklen);
194  if (value_logical_not (val))
195  {
197  error (_("No memory available to program now: "
198  "you need to start the target first"));
199  else
200  error (_("No memory available to program: call to malloc failed"));
201  }
202  return val;
203 }
204 
205 static CORE_ADDR
207 {
209 }
210 
211 /* Cast struct value VAL to type TYPE and return as a value.
212  Both type and val must be of TYPE_CODE_STRUCT or TYPE_CODE_UNION
213  for this to work. Typedef to one of the codes is permitted.
214  Returns NULL if the cast is neither an upcast nor a downcast. */
215 
216 static struct value *
217 value_cast_structs (struct type *type, struct value *v2)
218 {
219  struct type *t1;
220  struct type *t2;
221  struct value *v;
222 
223  gdb_assert (type != NULL && v2 != NULL);
224 
225  t1 = check_typedef (type);
226  t2 = check_typedef (value_type (v2));
227 
228  /* Check preconditions. */
230  || TYPE_CODE (t1) == TYPE_CODE_UNION)
231  && !!"Precondition is that type is of STRUCT or UNION kind.");
233  || TYPE_CODE (t2) == TYPE_CODE_UNION)
234  && !!"Precondition is that value is of STRUCT or UNION kind");
235 
236  if (TYPE_NAME (t1) != NULL
237  && TYPE_NAME (t2) != NULL
238  && !strcmp (TYPE_NAME (t1), TYPE_NAME (t2)))
239  return NULL;
240 
241  /* Upcasting: look in the type of the source to see if it contains the
242  type of the target as a superclass. If so, we'll need to
243  offset the pointer rather than just change its type. */
244  if (TYPE_NAME (t1) != NULL)
245  {
247  v2, t2, 1);
248  if (v)
249  return v;
250  }
251 
252  /* Downcasting: look in the type of the target to see if it contains the
253  type of the source as a superclass. If so, we'll need to
254  offset the pointer rather than just change its type. */
255  if (TYPE_NAME (t2) != NULL)
256  {
257  /* Try downcasting using the run-time type of the value. */
258  int full, using_enc;
259  LONGEST top;
260  struct type *real_type;
261 
262  real_type = value_rtti_type (v2, &full, &top, &using_enc);
263  if (real_type)
264  {
265  v = value_full_object (v2, real_type, full, top, using_enc);
266  v = value_at_lazy (real_type, value_address (v));
267  real_type = value_type (v);
268 
269  /* We might be trying to cast to the outermost enclosing
270  type, in which case search_struct_field won't work. */
271  if (TYPE_NAME (real_type) != NULL
272  && !strcmp (TYPE_NAME (real_type), TYPE_NAME (t1)))
273  return v;
274 
275  v = search_struct_field (type_name_no_tag (t2), v, real_type, 1);
276  if (v)
277  return v;
278  }
279 
280  /* Try downcasting using information from the destination type
281  T2. This wouldn't work properly for classes with virtual
282  bases, but those were handled above. */
284  value_zero (t1, not_lval), t1, 1);
285  if (v)
286  {
287  /* Downcasting is possible (t1 is superclass of v2). */
288  CORE_ADDR addr2 = value_address (v2);
289 
290  addr2 -= value_address (v) + value_embedded_offset (v);
291  return value_at (type, addr2);
292  }
293  }
294 
295  return NULL;
296 }
297 
298 /* Cast one pointer or reference type to another. Both TYPE and
299  the type of ARG2 should be pointer types, or else both should be
300  reference types. If SUBCLASS_CHECK is non-zero, this will force a
301  check to see whether TYPE is a superclass of ARG2's type. If
302  SUBCLASS_CHECK is zero, then the subclass check is done only when
303  ARG2 is itself non-zero. Returns the new pointer or reference. */
304 
305 struct value *
306 value_cast_pointers (struct type *type, struct value *arg2,
307  int subclass_check)
308 {
309  struct type *type1 = check_typedef (type);
310  struct type *type2 = check_typedef (value_type (arg2));
311  struct type *t1 = check_typedef (TYPE_TARGET_TYPE (type1));
312  struct type *t2 = check_typedef (TYPE_TARGET_TYPE (type2));
313 
314  if (TYPE_CODE (t1) == TYPE_CODE_STRUCT
315  && TYPE_CODE (t2) == TYPE_CODE_STRUCT
316  && (subclass_check || !value_logical_not (arg2)))
317  {
318  struct value *v2;
319 
320  if (TYPE_IS_REFERENCE (type2))
321  v2 = coerce_ref (arg2);
322  else
323  v2 = value_ind (arg2);
325  == TYPE_CODE_STRUCT && !!"Why did coercion fail?");
326  v2 = value_cast_structs (t1, v2);
327  /* At this point we have what we can have, un-dereference if needed. */
328  if (v2)
329  {
330  struct value *v = value_addr (v2);
331 
333  return v;
334  }
335  }
336 
337  /* No superclass found, just change the pointer type. */
338  arg2 = value_copy (arg2);
341  set_value_pointed_to_offset (arg2, 0); /* pai: chk_val */
342  return arg2;
343 }
344 
345 /* Cast value ARG2 to type TYPE and return as a value.
346  More general than a C cast: accepts any two types of the same length,
347  and if ARG2 is an lvalue it can be cast into anything at all. */
348 /* In C++, casts may change pointer or object representations. */
349 
350 struct value *
351 value_cast (struct type *type, struct value *arg2)
352 {
353  enum type_code code1;
354  enum type_code code2;
355  int scalar;
356  struct type *type2;
357 
358  int convert_to_boolean = 0;
359 
360  if (value_type (arg2) == type)
361  return arg2;
362 
363  /* Check if we are casting struct reference to struct reference. */
365  {
366  /* We dereference type; then we recurse and finally
367  we generate value of the given reference. Nothing wrong with
368  that. */
369  struct type *t1 = check_typedef (type);
370  struct type *dereftype = check_typedef (TYPE_TARGET_TYPE (t1));
371  struct value *val = value_cast (dereftype, arg2);
372 
373  return value_ref (val, TYPE_CODE (t1));
374  }
375 
377  /* We deref the value and then do the cast. */
378  return value_cast (type, coerce_ref (arg2));
379 
380  /* Strip typedefs / resolve stubs in order to get at the type's
381  code/length, but remember the original type, to use as the
382  resulting type of the cast, in case it was a typedef. */
383  struct type *to_type = type;
384 
385  type = check_typedef (type);
386  code1 = TYPE_CODE (type);
387  arg2 = coerce_ref (arg2);
388  type2 = check_typedef (value_type (arg2));
389 
390  /* You can't cast to a reference type. See value_cast_pointers
391  instead. */
393 
394  /* A cast to an undetermined-length array_type, such as
395  (TYPE [])OBJECT, is treated like a cast to (TYPE [N])OBJECT,
396  where N is sizeof(OBJECT)/sizeof(TYPE). */
397  if (code1 == TYPE_CODE_ARRAY)
398  {
399  struct type *element_type = TYPE_TARGET_TYPE (type);
400  unsigned element_length = TYPE_LENGTH (check_typedef (element_type));
401 
402  if (element_length > 0 && TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type))
403  {
404  struct type *range_type = TYPE_INDEX_TYPE (type);
405  int val_length = TYPE_LENGTH (type2);
406  LONGEST low_bound, high_bound, new_length;
407 
408  if (get_discrete_bounds (range_type, &low_bound, &high_bound) < 0)
409  low_bound = 0, high_bound = 0;
410  new_length = val_length / element_length;
411  if (val_length % element_length != 0)
412  warning (_("array element type size does not "
413  "divide object size in cast"));
414  /* FIXME-type-allocation: need a way to free this type when
415  we are done with it. */
416  range_type = create_static_range_type ((struct type *) NULL,
418  low_bound,
419  new_length + low_bound - 1);
421  create_array_type ((struct type *) NULL,
422  element_type,
423  range_type));
424  return arg2;
425  }
426  }
427 
429  && TYPE_CODE (type2) == TYPE_CODE_ARRAY
430  && !TYPE_VECTOR (type2))
431  arg2 = value_coerce_array (arg2);
432 
433  if (TYPE_CODE (type2) == TYPE_CODE_FUNC)
434  arg2 = value_coerce_function (arg2);
435 
436  type2 = check_typedef (value_type (arg2));
437  code2 = TYPE_CODE (type2);
438 
439  if (code1 == TYPE_CODE_COMPLEX)
440  return cast_into_complex (to_type, arg2);
441  if (code1 == TYPE_CODE_BOOL)
442  {
443  code1 = TYPE_CODE_INT;
444  convert_to_boolean = 1;
445  }
446  if (code1 == TYPE_CODE_CHAR)
447  code1 = TYPE_CODE_INT;
448  if (code2 == TYPE_CODE_BOOL || code2 == TYPE_CODE_CHAR)
449  code2 = TYPE_CODE_INT;
450 
451  scalar = (code2 == TYPE_CODE_INT || code2 == TYPE_CODE_FLT
452  || code2 == TYPE_CODE_DECFLOAT || code2 == TYPE_CODE_ENUM
453  || code2 == TYPE_CODE_RANGE);
454 
455  if ((code1 == TYPE_CODE_STRUCT || code1 == TYPE_CODE_UNION)
456  && (code2 == TYPE_CODE_STRUCT || code2 == TYPE_CODE_UNION)
457  && TYPE_NAME (type) != 0)
458  {
459  struct value *v = value_cast_structs (to_type, arg2);
460 
461  if (v)
462  return v;
463  }
464 
465  if (is_floating_type (type) && scalar)
466  {
467  if (is_floating_value (arg2))
468  {
469  struct value *v = allocate_value (to_type);
470  target_float_convert (value_contents (arg2), type2,
471  value_contents_raw (v), type);
472  return v;
473  }
474 
475  /* The only option left is an integral type. */
476  if (TYPE_UNSIGNED (type2))
477  return value_from_ulongest (to_type, value_as_long (arg2));
478  else
479  return value_from_longest (to_type, value_as_long (arg2));
480  }
481  else if ((code1 == TYPE_CODE_INT || code1 == TYPE_CODE_ENUM
482  || code1 == TYPE_CODE_RANGE)
483  && (scalar || code2 == TYPE_CODE_PTR
484  || code2 == TYPE_CODE_MEMBERPTR))
485  {
486  LONGEST longest;
487 
488  /* When we cast pointers to integers, we mustn't use
489  gdbarch_pointer_to_address to find the address the pointer
490  represents, as value_as_long would. GDB should evaluate
491  expressions just as the compiler would --- and the compiler
492  sees a cast as a simple reinterpretation of the pointer's
493  bits. */
494  if (code2 == TYPE_CODE_PTR)
495  longest = extract_unsigned_integer
496  (value_contents (arg2), TYPE_LENGTH (type2),
498  else
499  longest = value_as_long (arg2);
500  return value_from_longest (to_type, convert_to_boolean ?
501  (LONGEST) (longest ? 1 : 0) : longest);
502  }
503  else if (code1 == TYPE_CODE_PTR && (code2 == TYPE_CODE_INT
504  || code2 == TYPE_CODE_ENUM
505  || code2 == TYPE_CODE_RANGE))
506  {
507  /* TYPE_LENGTH (type) is the length of a pointer, but we really
508  want the length of an address! -- we are really dealing with
509  addresses (i.e., gdb representations) not pointers (i.e.,
510  target representations) here.
511 
512  This allows things like "print *(int *)0x01000234" to work
513  without printing a misleading message -- which would
514  otherwise occur when dealing with a target having two byte
515  pointers and four byte addresses. */
516 
517  int addr_bit = gdbarch_addr_bit (get_type_arch (type2));
518  LONGEST longest = value_as_long (arg2);
519 
520  if (addr_bit < sizeof (LONGEST) * HOST_CHAR_BIT)
521  {
522  if (longest >= ((LONGEST) 1 << addr_bit)
523  || longest <= -((LONGEST) 1 << addr_bit))
524  warning (_("value truncated"));
525  }
526  return value_from_longest (to_type, longest);
527  }
528  else if (code1 == TYPE_CODE_METHODPTR && code2 == TYPE_CODE_INT
529  && value_as_long (arg2) == 0)
530  {
531  struct value *result = allocate_value (to_type);
532 
533  cplus_make_method_ptr (to_type, value_contents_writeable (result), 0, 0);
534  return result;
535  }
536  else if (code1 == TYPE_CODE_MEMBERPTR && code2 == TYPE_CODE_INT
537  && value_as_long (arg2) == 0)
538  {
539  /* The Itanium C++ ABI represents NULL pointers to members as
540  minus one, instead of biasing the normal case. */
541  return value_from_longest (to_type, -1);
542  }
543  else if (code1 == TYPE_CODE_ARRAY && TYPE_VECTOR (type)
544  && code2 == TYPE_CODE_ARRAY && TYPE_VECTOR (type2)
545  && TYPE_LENGTH (type) != TYPE_LENGTH (type2))
546  error (_("Cannot convert between vector values of different sizes"));
547  else if (code1 == TYPE_CODE_ARRAY && TYPE_VECTOR (type) && scalar
548  && TYPE_LENGTH (type) != TYPE_LENGTH (type2))
549  error (_("can only cast scalar to vector of same size"));
550  else if (code1 == TYPE_CODE_VOID)
551  {
552  return value_zero (to_type, not_lval);
553  }
554  else if (TYPE_LENGTH (type) == TYPE_LENGTH (type2))
555  {
556  if (code1 == TYPE_CODE_PTR && code2 == TYPE_CODE_PTR)
557  return value_cast_pointers (to_type, arg2, 0);
558 
559  arg2 = value_copy (arg2);
560  deprecated_set_value_type (arg2, to_type);
561  set_value_enclosing_type (arg2, to_type);
562  set_value_pointed_to_offset (arg2, 0); /* pai: chk_val */
563  return arg2;
564  }
565  else if (VALUE_LVAL (arg2) == lval_memory)
566  return value_at_lazy (to_type, value_address (arg2));
567  else
568  {
569  error (_("Invalid cast."));
570  return 0;
571  }
572 }
573 
574 /* The C++ reinterpret_cast operator. */
575 
576 struct value *
577 value_reinterpret_cast (struct type *type, struct value *arg)
578 {
579  struct value *result;
580  struct type *real_type = check_typedef (type);
581  struct type *arg_type, *dest_type;
582  int is_ref = 0;
583  enum type_code dest_code, arg_code;
584 
585  /* Do reference, function, and array conversion. */
586  arg = coerce_array (arg);
587 
588  /* Attempt to preserve the type the user asked for. */
589  dest_type = type;
590 
591  /* If we are casting to a reference type, transform
592  reinterpret_cast<T&[&]>(V) to *reinterpret_cast<T*>(&V). */
593  if (TYPE_IS_REFERENCE (real_type))
594  {
595  is_ref = 1;
596  arg = value_addr (arg);
597  dest_type = lookup_pointer_type (TYPE_TARGET_TYPE (dest_type));
598  real_type = lookup_pointer_type (real_type);
599  }
600 
601  arg_type = value_type (arg);
602 
603  dest_code = TYPE_CODE (real_type);
604  arg_code = TYPE_CODE (arg_type);
605 
606  /* We can convert pointer types, or any pointer type to int, or int
607  type to pointer. */
608  if ((dest_code == TYPE_CODE_PTR && arg_code == TYPE_CODE_INT)
609  || (dest_code == TYPE_CODE_INT && arg_code == TYPE_CODE_PTR)
610  || (dest_code == TYPE_CODE_METHODPTR && arg_code == TYPE_CODE_INT)
611  || (dest_code == TYPE_CODE_INT && arg_code == TYPE_CODE_METHODPTR)
612  || (dest_code == TYPE_CODE_MEMBERPTR && arg_code == TYPE_CODE_INT)
613  || (dest_code == TYPE_CODE_INT && arg_code == TYPE_CODE_MEMBERPTR)
614  || (dest_code == arg_code
615  && (dest_code == TYPE_CODE_PTR
616  || dest_code == TYPE_CODE_METHODPTR
617  || dest_code == TYPE_CODE_MEMBERPTR)))
618  result = value_cast (dest_type, arg);
619  else
620  error (_("Invalid reinterpret_cast"));
621 
622  if (is_ref)
623  result = value_cast (type, value_ref (value_ind (result),
624  TYPE_CODE (type)));
625 
626  return result;
627 }
628 
629 /* A helper for value_dynamic_cast. This implements the first of two
630  runtime checks: we iterate over all the base classes of the value's
631  class which are equal to the desired class; if only one of these
632  holds the value, then it is the answer. */
633 
634 static int
635 dynamic_cast_check_1 (struct type *desired_type,
636  const gdb_byte *valaddr,
637  LONGEST embedded_offset,
638  CORE_ADDR address,
639  struct value *val,
640  struct type *search_type,
641  CORE_ADDR arg_addr,
642  struct type *arg_type,
643  struct value **result)
644 {
645  int i, result_count = 0;
646 
647  for (i = 0; i < TYPE_N_BASECLASSES (search_type) && result_count < 2; ++i)
648  {
649  LONGEST offset = baseclass_offset (search_type, i, valaddr,
650  embedded_offset,
651  address, val);
652 
653  if (class_types_same_p (desired_type, TYPE_BASECLASS (search_type, i)))
654  {
655  if (address + embedded_offset + offset >= arg_addr
656  && address + embedded_offset + offset < arg_addr + TYPE_LENGTH (arg_type))
657  {
658  ++result_count;
659  if (!*result)
660  *result = value_at_lazy (TYPE_BASECLASS (search_type, i),
661  address + embedded_offset + offset);
662  }
663  }
664  else
665  result_count += dynamic_cast_check_1 (desired_type,
666  valaddr,
667  embedded_offset + offset,
668  address, val,
669  TYPE_BASECLASS (search_type, i),
670  arg_addr,
671  arg_type,
672  result);
673  }
674 
675  return result_count;
676 }
677 
678 /* A helper for value_dynamic_cast. This implements the second of two
679  runtime checks: we look for a unique public sibling class of the
680  argument's declared class. */
681 
682 static int
683 dynamic_cast_check_2 (struct type *desired_type,
684  const gdb_byte *valaddr,
685  LONGEST embedded_offset,
686  CORE_ADDR address,
687  struct value *val,
688  struct type *search_type,
689  struct value **result)
690 {
691  int i, result_count = 0;
692 
693  for (i = 0; i < TYPE_N_BASECLASSES (search_type) && result_count < 2; ++i)
694  {
695  LONGEST offset;
696 
697  if (! BASETYPE_VIA_PUBLIC (search_type, i))
698  continue;
699 
700  offset = baseclass_offset (search_type, i, valaddr, embedded_offset,
701  address, val);
702  if (class_types_same_p (desired_type, TYPE_BASECLASS (search_type, i)))
703  {
704  ++result_count;
705  if (*result == NULL)
706  *result = value_at_lazy (TYPE_BASECLASS (search_type, i),
707  address + embedded_offset + offset);
708  }
709  else
710  result_count += dynamic_cast_check_2 (desired_type,
711  valaddr,
712  embedded_offset + offset,
713  address, val,
714  TYPE_BASECLASS (search_type, i),
715  result);
716  }
717 
718  return result_count;
719 }
720 
721 /* The C++ dynamic_cast operator. */
722 
723 struct value *
724 value_dynamic_cast (struct type *type, struct value *arg)
725 {
726  int full, using_enc;
727  LONGEST top;
728  struct type *resolved_type = check_typedef (type);
729  struct type *arg_type = check_typedef (value_type (arg));
730  struct type *class_type, *rtti_type;
731  struct value *result, *tem, *original_arg = arg;
732  CORE_ADDR addr;
733  int is_ref = TYPE_IS_REFERENCE (resolved_type);
734 
735  if (TYPE_CODE (resolved_type) != TYPE_CODE_PTR
736  && !TYPE_IS_REFERENCE (resolved_type))
737  error (_("Argument to dynamic_cast must be a pointer or reference type"));
738  if (TYPE_CODE (TYPE_TARGET_TYPE (resolved_type)) != TYPE_CODE_VOID
739  && TYPE_CODE (TYPE_TARGET_TYPE (resolved_type)) != TYPE_CODE_STRUCT)
740  error (_("Argument to dynamic_cast must be pointer to class or `void *'"));
741 
742  class_type = check_typedef (TYPE_TARGET_TYPE (resolved_type));
743  if (TYPE_CODE (resolved_type) == TYPE_CODE_PTR)
744  {
745  if (TYPE_CODE (arg_type) != TYPE_CODE_PTR
746  && ! (TYPE_CODE (arg_type) == TYPE_CODE_INT
747  && value_as_long (arg) == 0))
748  error (_("Argument to dynamic_cast does not have pointer type"));
749  if (TYPE_CODE (arg_type) == TYPE_CODE_PTR)
750  {
751  arg_type = check_typedef (TYPE_TARGET_TYPE (arg_type));
752  if (TYPE_CODE (arg_type) != TYPE_CODE_STRUCT)
753  error (_("Argument to dynamic_cast does "
754  "not have pointer to class type"));
755  }
756 
757  /* Handle NULL pointers. */
758  if (value_as_long (arg) == 0)
759  return value_zero (type, not_lval);
760 
761  arg = value_ind (arg);
762  }
763  else
764  {
765  if (TYPE_CODE (arg_type) != TYPE_CODE_STRUCT)
766  error (_("Argument to dynamic_cast does not have class type"));
767  }
768 
769  /* If the classes are the same, just return the argument. */
770  if (class_types_same_p (class_type, arg_type))
771  return value_cast (type, arg);
772 
773  /* If the target type is a unique base class of the argument's
774  declared type, just cast it. */
775  if (is_ancestor (class_type, arg_type))
776  {
777  if (is_unique_ancestor (class_type, arg))
778  return value_cast (type, original_arg);
779  error (_("Ambiguous dynamic_cast"));
780  }
781 
782  rtti_type = value_rtti_type (arg, &full, &top, &using_enc);
783  if (! rtti_type)
784  error (_("Couldn't determine value's most derived type for dynamic_cast"));
785 
786  /* Compute the most derived object's address. */
787  addr = value_address (arg);
788  if (full)
789  {
790  /* Done. */
791  }
792  else if (using_enc)
793  addr += top;
794  else
795  addr += top + value_embedded_offset (arg);
796 
797  /* dynamic_cast<void *> means to return a pointer to the
798  most-derived object. */
799  if (TYPE_CODE (resolved_type) == TYPE_CODE_PTR
800  && TYPE_CODE (TYPE_TARGET_TYPE (resolved_type)) == TYPE_CODE_VOID)
801  return value_at_lazy (type, addr);
802 
803  tem = value_at (type, addr);
804  type = value_type (tem);
805 
806  /* The first dynamic check specified in 5.2.7. */
807  if (is_public_ancestor (arg_type, TYPE_TARGET_TYPE (resolved_type)))
808  {
809  if (class_types_same_p (rtti_type, TYPE_TARGET_TYPE (resolved_type)))
810  return tem;
811  result = NULL;
812  if (dynamic_cast_check_1 (TYPE_TARGET_TYPE (resolved_type),
814  value_embedded_offset (tem),
815  value_address (tem), tem,
816  rtti_type, addr,
817  arg_type,
818  &result) == 1)
819  return value_cast (type,
820  is_ref
821  ? value_ref (result, TYPE_CODE (resolved_type))
822  : value_addr (result));
823  }
824 
825  /* The second dynamic check specified in 5.2.7. */
826  result = NULL;
827  if (is_public_ancestor (arg_type, rtti_type)
828  && dynamic_cast_check_2 (TYPE_TARGET_TYPE (resolved_type),
830  value_embedded_offset (tem),
831  value_address (tem), tem,
832  rtti_type, &result) == 1)
833  return value_cast (type,
834  is_ref
835  ? value_ref (result, TYPE_CODE (resolved_type))
836  : value_addr (result));
837 
838  if (TYPE_CODE (resolved_type) == TYPE_CODE_PTR)
839  return value_zero (type, not_lval);
840 
841  error (_("dynamic_cast failed"));
842 }
843 
844 /* Create a value of type TYPE that is zero, and return it. */
845 
846 struct value *
847 value_zero (struct type *type, enum lval_type lv)
848 {
849  struct value *val = allocate_value (type);
850 
851  VALUE_LVAL (val) = (lv == lval_computed ? not_lval : lv);
852  return val;
853 }
854 
855 /* Create a not_lval value of numeric type TYPE that is one, and return it. */
856 
857 struct value *
858 value_one (struct type *type)
859 {
860  struct type *type1 = check_typedef (type);
861  struct value *val;
862 
863  if (is_integral_type (type1) || is_floating_type (type1))
864  {
865  val = value_from_longest (type, (LONGEST) 1);
866  }
867  else if (TYPE_CODE (type1) == TYPE_CODE_ARRAY && TYPE_VECTOR (type1))
868  {
869  struct type *eltype = check_typedef (TYPE_TARGET_TYPE (type1));
870  int i;
871  LONGEST low_bound, high_bound;
872  struct value *tmp;
873 
874  if (!get_array_bounds (type1, &low_bound, &high_bound))
875  error (_("Could not determine the vector bounds"));
876 
877  val = allocate_value (type);
878  for (i = 0; i < high_bound - low_bound + 1; i++)
879  {
880  tmp = value_one (eltype);
881  memcpy (value_contents_writeable (val) + i * TYPE_LENGTH (eltype),
882  value_contents_all (tmp), TYPE_LENGTH (eltype));
883  }
884  }
885  else
886  {
887  error (_("Not a numeric type."));
888  }
889 
890  /* value_one result is never used for assignments to. */
891  gdb_assert (VALUE_LVAL (val) == not_lval);
892 
893  return val;
894 }
895 
896 /* Helper function for value_at, value_at_lazy, and value_at_lazy_stack.
897  The type of the created value may differ from the passed type TYPE.
898  Make sure to retrieve the returned values's new type after this call
899  e.g. in case the type is a variable length array. */
900 
901 static struct value *
902 get_value_at (struct type *type, CORE_ADDR addr, int lazy)
903 {
904  struct value *val;
905 
907  error (_("Attempt to dereference a generic pointer."));
908 
909  val = value_from_contents_and_address (type, NULL, addr);
910 
911  if (!lazy)
912  value_fetch_lazy (val);
913 
914  return val;
915 }
916 
917 /* Return a value with type TYPE located at ADDR.
918 
919  Call value_at only if the data needs to be fetched immediately;
920  if we can be 'lazy' and defer the fetch, perhaps indefinately, call
921  value_at_lazy instead. value_at_lazy simply records the address of
922  the data and sets the lazy-evaluation-required flag. The lazy flag
923  is tested in the value_contents macro, which is used if and when
924  the contents are actually required. The type of the created value
925  may differ from the passed type TYPE. Make sure to retrieve the
926  returned values's new type after this call e.g. in case the type
927  is a variable length array.
928 
929  Note: value_at does *NOT* handle embedded offsets; perform such
930  adjustments before or after calling it. */
931 
932 struct value *
933 value_at (struct type *type, CORE_ADDR addr)
934 {
935  return get_value_at (type, addr, 0);
936 }
937 
938 /* Return a lazy value with type TYPE located at ADDR (cf. value_at).
939  The type of the created value may differ from the passed type TYPE.
940  Make sure to retrieve the returned values's new type after this call
941  e.g. in case the type is a variable length array. */
942 
943 struct value *
945 {
946  return get_value_at (type, addr, 1);
947 }
948 
949 void
950 read_value_memory (struct value *val, LONGEST bit_offset,
951  int stack, CORE_ADDR memaddr,
952  gdb_byte *buffer, size_t length)
953 {
954  ULONGEST xfered_total = 0;
955  struct gdbarch *arch = get_value_arch (val);
956  int unit_size = gdbarch_addressable_memory_unit_size (arch);
957  enum target_object object;
958 
960 
961  while (xfered_total < length)
962  {
964  ULONGEST xfered_partial;
965 
967  object, NULL,
968  buffer + xfered_total * unit_size, NULL,
969  memaddr + xfered_total,
970  length - xfered_total,
971  &xfered_partial);
972 
973  if (status == TARGET_XFER_OK)
974  /* nothing */;
975  else if (status == TARGET_XFER_UNAVAILABLE)
976  mark_value_bits_unavailable (val, (xfered_total * HOST_CHAR_BIT
977  + bit_offset),
978  xfered_partial * HOST_CHAR_BIT);
979  else if (status == TARGET_XFER_EOF)
980  memory_error (TARGET_XFER_E_IO, memaddr + xfered_total);
981  else
982  memory_error (status, memaddr + xfered_total);
983 
984  xfered_total += xfered_partial;
985  QUIT;
986  }
987 }
988 
989 /* Store the contents of FROMVAL into the location of TOVAL.
990  Return a new value with the location of TOVAL and contents of FROMVAL. */
991 
992 struct value *
993 value_assign (struct value *toval, struct value *fromval)
994 {
995  struct type *type;
996  struct value *val;
997  struct frame_id old_frame;
998 
999  if (!deprecated_value_modifiable (toval))
1000  error (_("Left operand of assignment is not a modifiable lvalue."));
1001 
1002  toval = coerce_ref (toval);
1003 
1004  type = value_type (toval);
1005  if (VALUE_LVAL (toval) != lval_internalvar)
1006  fromval = value_cast (type, fromval);
1007  else
1008  {
1009  /* Coerce arrays and functions to pointers, except for arrays
1010  which only live in GDB's storage. */
1011  if (!value_must_coerce_to_target (fromval))
1012  fromval = coerce_array (fromval);
1013  }
1014 
1015  type = check_typedef (type);
1016 
1017  /* Since modifying a register can trash the frame chain, and
1018  modifying memory can trash the frame cache, we save the old frame
1019  and then restore the new frame afterwards. */
1021 
1022  switch (VALUE_LVAL (toval))
1023  {
1024  case lval_internalvar:
1025  set_internalvar (VALUE_INTERNALVAR (toval), fromval);
1027  VALUE_INTERNALVAR (toval));
1028 
1030  {
1031  LONGEST offset = value_offset (toval);
1032 
1033  /* Are we dealing with a bitfield?
1034 
1035  It is important to mention that `value_parent (toval)' is
1036  non-NULL iff `value_bitsize (toval)' is non-zero. */
1037  if (value_bitsize (toval))
1038  {
1039  /* VALUE_INTERNALVAR below refers to the parent value, while
1040  the offset is relative to this parent value. */
1041  gdb_assert (value_parent (value_parent (toval)) == NULL);
1042  offset += value_offset (value_parent (toval));
1043  }
1044 
1046  offset,
1047  value_bitpos (toval),
1048  value_bitsize (toval),
1049  fromval);
1050  }
1051  break;
1052 
1053  case lval_memory:
1054  {
1055  const gdb_byte *dest_buffer;
1056  CORE_ADDR changed_addr;
1057  int changed_len;
1058  gdb_byte buffer[sizeof (LONGEST)];
1059 
1060  if (value_bitsize (toval))
1061  {
1062  struct value *parent = value_parent (toval);
1063 
1064  changed_addr = value_address (parent) + value_offset (toval);
1065  changed_len = (value_bitpos (toval)
1066  + value_bitsize (toval)
1067  + HOST_CHAR_BIT - 1)
1068  / HOST_CHAR_BIT;
1069 
1070  /* If we can read-modify-write exactly the size of the
1071  containing type (e.g. short or int) then do so. This
1072  is safer for volatile bitfields mapped to hardware
1073  registers. */
1074  if (changed_len < TYPE_LENGTH (type)
1075  && TYPE_LENGTH (type) <= (int) sizeof (LONGEST)
1076  && ((LONGEST) changed_addr % TYPE_LENGTH (type)) == 0)
1077  changed_len = TYPE_LENGTH (type);
1078 
1079  if (changed_len > (int) sizeof (LONGEST))
1080  error (_("Can't handle bitfields which "
1081  "don't fit in a %d bit word."),
1082  (int) sizeof (LONGEST) * HOST_CHAR_BIT);
1083 
1084  read_memory (changed_addr, buffer, changed_len);
1085  modify_field (type, buffer, value_as_long (fromval),
1086  value_bitpos (toval), value_bitsize (toval));
1087  dest_buffer = buffer;
1088  }
1089  else
1090  {
1091  changed_addr = value_address (toval);
1092  changed_len = type_length_units (type);
1093  dest_buffer = value_contents (fromval);
1094  }
1095 
1096  write_memory_with_notification (changed_addr, dest_buffer, changed_len);
1097  }
1098  break;
1099 
1100  case lval_register:
1101  {
1102  struct frame_info *frame;
1103  struct gdbarch *gdbarch;
1104  int value_reg;
1105 
1106  /* Figure out which frame this is in currently.
1107 
1108  We use VALUE_FRAME_ID for obtaining the value's frame id instead of
1109  VALUE_NEXT_FRAME_ID due to requiring a frame which may be passed to
1110  put_frame_register_bytes() below. That function will (eventually)
1111  perform the necessary unwind operation by first obtaining the next
1112  frame. */
1113  frame = frame_find_by_id (VALUE_FRAME_ID (toval));
1114 
1115  value_reg = VALUE_REGNUM (toval);
1116 
1117  if (!frame)
1118  error (_("Value being assigned to is no longer active."));
1119 
1120  gdbarch = get_frame_arch (frame);
1121 
1122  if (value_bitsize (toval))
1123  {
1124  struct value *parent = value_parent (toval);
1126  int changed_len;
1127  gdb_byte buffer[sizeof (LONGEST)];
1128  int optim, unavail;
1129 
1130  changed_len = (value_bitpos (toval)
1131  + value_bitsize (toval)
1132  + HOST_CHAR_BIT - 1)
1133  / HOST_CHAR_BIT;
1134 
1135  if (changed_len > (int) sizeof (LONGEST))
1136  error (_("Can't handle bitfields which "
1137  "don't fit in a %d bit word."),
1138  (int) sizeof (LONGEST) * HOST_CHAR_BIT);
1139 
1140  if (!get_frame_register_bytes (frame, value_reg, offset,
1141  changed_len, buffer,
1142  &optim, &unavail))
1143  {
1144  if (optim)
1146  _("value has been optimized out"));
1147  if (unavail)
1149  _("value is not available"));
1150  }
1151 
1152  modify_field (type, buffer, value_as_long (fromval),
1153  value_bitpos (toval), value_bitsize (toval));
1154 
1155  put_frame_register_bytes (frame, value_reg, offset,
1156  changed_len, buffer);
1157  }
1158  else
1159  {
1161  type))
1162  {
1163  /* If TOVAL is a special machine register requiring
1164  conversion of program values to a special raw
1165  format. */
1167  VALUE_REGNUM (toval), type,
1168  value_contents (fromval));
1169  }
1170  else
1171  {
1172  put_frame_register_bytes (frame, value_reg,
1173  value_offset (toval),
1174  TYPE_LENGTH (type),
1175  value_contents (fromval));
1176  }
1177  }
1178 
1179  observer_notify_register_changed (frame, value_reg);
1180  break;
1181  }
1182 
1183  case lval_computed:
1184  {
1185  const struct lval_funcs *funcs = value_computed_funcs (toval);
1186 
1187  if (funcs->write != NULL)
1188  {
1189  funcs->write (toval, fromval);
1190  break;
1191  }
1192  }
1193  /* Fall through. */
1194 
1195  default:
1196  error (_("Left operand of assignment is not an lvalue."));
1197  }
1198 
1199  /* Assigning to the stack pointer, frame pointer, and other
1200  (architecture and calling convention specific) registers may
1201  cause the frame cache and regcache to be out of date. Assigning to memory
1202  also can. We just do this on all assignments to registers or
1203  memory, for simplicity's sake; I doubt the slowdown matters. */
1204  switch (VALUE_LVAL (toval))
1205  {
1206  case lval_memory:
1207  case lval_register:
1208  case lval_computed:
1209 
1211 
1212  /* Having destroyed the frame cache, restore the selected
1213  frame. */
1214 
1215  /* FIXME: cagney/2002-11-02: There has to be a better way of
1216  doing this. Instead of constantly saving/restoring the
1217  frame. Why not create a get_selected_frame() function that,
1218  having saved the selected frame's ID can automatically
1219  re-find the previously selected frame automatically. */
1220 
1221  {
1222  struct frame_info *fi = frame_find_by_id (old_frame);
1223 
1224  if (fi != NULL)
1225  select_frame (fi);
1226  }
1227 
1228  break;
1229  default:
1230  break;
1231  }
1232 
1233  /* If the field does not entirely fill a LONGEST, then zero the sign
1234  bits. If the field is signed, and is negative, then sign
1235  extend. */
1236  if ((value_bitsize (toval) > 0)
1237  && (value_bitsize (toval) < 8 * (int) sizeof (LONGEST)))
1238  {
1239  LONGEST fieldval = value_as_long (fromval);
1240  LONGEST valmask = (((ULONGEST) 1) << value_bitsize (toval)) - 1;
1241 
1242  fieldval &= valmask;
1243  if (!TYPE_UNSIGNED (type)
1244  && (fieldval & (valmask ^ (valmask >> 1))))
1245  fieldval |= ~valmask;
1246 
1247  fromval = value_from_longest (type, fieldval);
1248  }
1249 
1250  /* The return value is a copy of TOVAL so it shares its location
1251  information, but its contents are updated from FROMVAL. This
1252  implies the returned value is not lazy, even if TOVAL was. */
1253  val = value_copy (toval);
1254  set_value_lazy (val, 0);
1255  memcpy (value_contents_raw (val), value_contents (fromval),
1256  TYPE_LENGTH (type));
1257 
1258  /* We copy over the enclosing type and pointed-to offset from FROMVAL
1259  in the case of pointer types. For object types, the enclosing type
1260  and embedded offset must *not* be copied: the target object refered
1261  to by TOVAL retains its original dynamic type after assignment. */
1262  if (TYPE_CODE (type) == TYPE_CODE_PTR)
1263  {
1266  }
1267 
1268  return val;
1269 }
1270 
1271 /* Extend a value VAL to COUNT repetitions of its type. */
1272 
1273 struct value *
1274 value_repeat (struct value *arg1, int count)
1275 {
1276  struct value *val;
1277 
1278  if (VALUE_LVAL (arg1) != lval_memory)
1279  error (_("Only values in memory can be extended with '@'."));
1280  if (count < 1)
1281  error (_("Invalid number %d of repetitions."), count);
1282 
1283  val = allocate_repeat_value (value_enclosing_type (arg1), count);
1284 
1285  VALUE_LVAL (val) = lval_memory;
1286  set_value_address (val, value_address (arg1));
1287 
1288  read_value_memory (val, 0, value_stack (val), value_address (val),
1289  value_contents_all_raw (val),
1291 
1292  return val;
1293 }
1294 
1295 struct value *
1296 value_of_variable (struct symbol *var, const struct block *b)
1297 {
1298  struct frame_info *frame = NULL;
1299 
1300  if (symbol_read_needs_frame (var))
1301  frame = get_selected_frame (_("No frame selected."));
1302 
1303  return read_var_value (var, b, frame);
1304 }
1305 
1306 struct value *
1307 address_of_variable (struct symbol *var, const struct block *b)
1308 {
1309  struct type *type = SYMBOL_TYPE (var);
1310  struct value *val;
1311 
1312  /* Evaluate it first; if the result is a memory address, we're fine.
1313  Lazy evaluation pays off here. */
1314 
1315  val = value_of_variable (var, b);
1316  type = value_type (val);
1317 
1318  if ((VALUE_LVAL (val) == lval_memory && value_lazy (val))
1319  || TYPE_CODE (type) == TYPE_CODE_FUNC)
1320  {
1321  CORE_ADDR addr = value_address (val);
1322 
1323  return value_from_pointer (lookup_pointer_type (type), addr);
1324  }
1325 
1326  /* Not a memory address; check what the problem was. */
1327  switch (VALUE_LVAL (val))
1328  {
1329  case lval_register:
1330  {
1331  struct frame_info *frame;
1332  const char *regname;
1333 
1334  frame = frame_find_by_id (VALUE_NEXT_FRAME_ID (val));
1335  gdb_assert (frame);
1336 
1337  regname = gdbarch_register_name (get_frame_arch (frame),
1338  VALUE_REGNUM (val));
1339  gdb_assert (regname && *regname);
1340 
1341  error (_("Address requested for identifier "
1342  "\"%s\" which is in register $%s"),
1343  SYMBOL_PRINT_NAME (var), regname);
1344  break;
1345  }
1346 
1347  default:
1348  error (_("Can't take address of \"%s\" which isn't an lvalue."),
1349  SYMBOL_PRINT_NAME (var));
1350  break;
1351  }
1352 
1353  return val;
1354 }
1355 
1356 /* Return one if VAL does not live in target memory, but should in order
1357  to operate on it. Otherwise return zero. */
1358 
1359 int
1361 {
1362  struct type *valtype;
1363 
1364  /* The only lval kinds which do not live in target memory. */
1365  if (VALUE_LVAL (val) != not_lval
1366  && VALUE_LVAL (val) != lval_internalvar
1367  && VALUE_LVAL (val) != lval_xcallable)
1368  return 0;
1369 
1370  valtype = check_typedef (value_type (val));
1371 
1372  switch (TYPE_CODE (valtype))
1373  {
1374  case TYPE_CODE_ARRAY:
1375  return TYPE_VECTOR (valtype) ? 0 : 1;
1376  case TYPE_CODE_STRING:
1377  return 1;
1378  default:
1379  return 0;
1380  }
1381 }
1382 
1383 /* Make sure that VAL lives in target memory if it's supposed to. For
1384  instance, strings are constructed as character arrays in GDB's
1385  storage, and this function copies them to the target. */
1386 
1387 struct value *
1389 {
1390  LONGEST length;
1391  CORE_ADDR addr;
1392 
1393  if (!value_must_coerce_to_target (val))
1394  return val;
1395 
1396  length = TYPE_LENGTH (check_typedef (value_type (val)));
1397  addr = allocate_space_in_inferior (length);
1398  write_memory (addr, value_contents (val), length);
1399  return value_at_lazy (value_type (val), addr);
1400 }
1401 
1402 /* Given a value which is an array, return a value which is a pointer
1403  to its first element, regardless of whether or not the array has a
1404  nonzero lower bound.
1405 
1406  FIXME: A previous comment here indicated that this routine should
1407  be substracting the array's lower bound. It's not clear to me that
1408  this is correct. Given an array subscripting operation, it would
1409  certainly work to do the adjustment here, essentially computing:
1410 
1411  (&array[0] - (lowerbound * sizeof array[0])) + (index * sizeof array[0])
1412 
1413  However I believe a more appropriate and logical place to account
1414  for the lower bound is to do so in value_subscript, essentially
1415  computing:
1416 
1417  (&array[0] + ((index - lowerbound) * sizeof array[0]))
1418 
1419  As further evidence consider what would happen with operations
1420  other than array subscripting, where the caller would get back a
1421  value that had an address somewhere before the actual first element
1422  of the array, and the information about the lower bound would be
1423  lost because of the coercion to pointer type. */
1424 
1425 struct value *
1427 {
1428  struct type *type = check_typedef (value_type (arg1));
1429 
1430  /* If the user tries to do something requiring a pointer with an
1431  array that has not yet been pushed to the target, then this would
1432  be a good time to do so. */
1433  arg1 = value_coerce_to_target (arg1);
1434 
1435  if (VALUE_LVAL (arg1) != lval_memory)
1436  error (_("Attempt to take address of value not located in memory."));
1437 
1439  value_address (arg1));
1440 }
1441 
1442 /* Given a value which is a function, return a value which is a pointer
1443  to it. */
1444 
1445 struct value *
1447 {
1448  struct value *retval;
1449 
1450  if (VALUE_LVAL (arg1) != lval_memory)
1451  error (_("Attempt to take address of value not located in memory."));
1452 
1454  value_address (arg1));
1455  return retval;
1456 }
1457 
1458 /* Return a pointer value for the object for which ARG1 is the
1459  contents. */
1460 
1461 struct value *
1462 value_addr (struct value *arg1)
1463 {
1464  struct value *arg2;
1465  struct type *type = check_typedef (value_type (arg1));
1466 
1467  if (TYPE_IS_REFERENCE (type))
1468  {
1471  arg1 = coerce_ref (arg1);
1472  else
1473  {
1474  /* Copy the value, but change the type from (T&) to (T*). We
1475  keep the same location information, which is efficient, and
1476  allows &(&X) to get the location containing the reference.
1477  Do the same to its enclosing type for consistency. */
1478  struct type *type_ptr
1480  struct type *enclosing_type
1482  struct type *enclosing_type_ptr
1483  = lookup_pointer_type (TYPE_TARGET_TYPE (enclosing_type));
1484 
1485  arg2 = value_copy (arg1);
1487  set_value_enclosing_type (arg2, enclosing_type_ptr);
1488 
1489  return arg2;
1490  }
1491  }
1492  if (TYPE_CODE (type) == TYPE_CODE_FUNC)
1493  return value_coerce_function (arg1);
1494 
1495  /* If this is an array that has not yet been pushed to the target,
1496  then this would be a good time to force it to memory. */
1497  arg1 = value_coerce_to_target (arg1);
1498 
1499  if (VALUE_LVAL (arg1) != lval_memory)
1500  error (_("Attempt to take address of value not located in memory."));
1501 
1502  /* Get target memory address. */
1504  (value_address (arg1)
1505  + value_embedded_offset (arg1)));
1506 
1507  /* This may be a pointer to a base subobject; so remember the
1508  full derived object's type ... */
1511  /* ... and also the relative position of the subobject in the full
1512  object. */
1514  return arg2;
1515 }
1516 
1517 /* Return a reference value for the object for which ARG1 is the
1518  contents. */
1519 
1520 struct value *
1521 value_ref (struct value *arg1, enum type_code refcode)
1522 {
1523  struct value *arg2;
1524  struct type *type = check_typedef (value_type (arg1));
1525 
1526  gdb_assert (refcode == TYPE_CODE_REF || refcode == TYPE_CODE_RVALUE_REF);
1527 
1528  if ((TYPE_CODE (type) == TYPE_CODE_REF
1530  && TYPE_CODE (type) == refcode)
1531  return arg1;
1532 
1533  arg2 = value_addr (arg1);
1535  return arg2;
1536 }
1537 
1538 /* Given a value of a pointer type, apply the C unary * operator to
1539  it. */
1540 
1541 struct value *
1542 value_ind (struct value *arg1)
1543 {
1544  struct type *base_type;
1545  struct value *arg2;
1546 
1547  arg1 = coerce_array (arg1);
1548 
1549  base_type = check_typedef (value_type (arg1));
1550 
1551  if (VALUE_LVAL (arg1) == lval_computed)
1552  {
1553  const struct lval_funcs *funcs = value_computed_funcs (arg1);
1554 
1555  if (funcs->indirect)
1556  {
1557  struct value *result = funcs->indirect (arg1);
1558 
1559  if (result)
1560  return result;
1561  }
1562  }
1563 
1564  if (TYPE_CODE (base_type) == TYPE_CODE_PTR)
1565  {
1566  struct type *enc_type;
1567 
1568  /* We may be pointing to something embedded in a larger object.
1569  Get the real type of the enclosing object. */
1570  enc_type = check_typedef (value_enclosing_type (arg1));
1571  enc_type = TYPE_TARGET_TYPE (enc_type);
1572 
1573  if (TYPE_CODE (check_typedef (enc_type)) == TYPE_CODE_FUNC
1574  || TYPE_CODE (check_typedef (enc_type)) == TYPE_CODE_METHOD)
1575  /* For functions, go through find_function_addr, which knows
1576  how to handle function descriptors. */
1577  arg2 = value_at_lazy (enc_type,
1578  find_function_addr (arg1, NULL));
1579  else
1580  /* Retrieve the enclosing object pointed to. */
1581  arg2 = value_at_lazy (enc_type,
1582  (value_as_address (arg1)
1583  - value_pointed_to_offset (arg1)));
1584 
1585  enc_type = value_type (arg2);
1586  return readjust_indirect_value_type (arg2, enc_type, base_type, arg1);
1587  }
1588 
1589  error (_("Attempt to take contents of a non-pointer value."));
1590  return 0; /* For lint -- never reached. */
1591 }
1592 
1593 /* Create a value for an array by allocating space in GDB, copying the
1594  data into that space, and then setting up an array value.
1595 
1596  The array bounds are set from LOWBOUND and HIGHBOUND, and the array
1597  is populated from the values passed in ELEMVEC.
1598 
1599  The element type of the array is inherited from the type of the
1600  first element, and all elements must have the same size (though we
1601  don't currently enforce any restriction on their types). */
1602 
1603 struct value *
1604 value_array (int lowbound, int highbound, struct value **elemvec)
1605 {
1606  int nelem;
1607  int idx;
1608  ULONGEST typelength;
1609  struct value *val;
1610  struct type *arraytype;
1611 
1612  /* Validate that the bounds are reasonable and that each of the
1613  elements have the same size. */
1614 
1615  nelem = highbound - lowbound + 1;
1616  if (nelem <= 0)
1617  {
1618  error (_("bad array bounds (%d, %d)"), lowbound, highbound);
1619  }
1620  typelength = type_length_units (value_enclosing_type (elemvec[0]));
1621  for (idx = 1; idx < nelem; idx++)
1622  {
1623  if (type_length_units (value_enclosing_type (elemvec[idx]))
1624  != typelength)
1625  {
1626  error (_("array elements must all be the same size"));
1627  }
1628  }
1629 
1630  arraytype = lookup_array_range_type (value_enclosing_type (elemvec[0]),
1631  lowbound, highbound);
1632 
1634  {
1635  val = allocate_value (arraytype);
1636  for (idx = 0; idx < nelem; idx++)
1637  value_contents_copy (val, idx * typelength, elemvec[idx], 0,
1638  typelength);
1639  return val;
1640  }
1641 
1642  /* Allocate space to store the array, and then initialize it by
1643  copying in each element. */
1644 
1645  val = allocate_value (arraytype);
1646  for (idx = 0; idx < nelem; idx++)
1647  value_contents_copy (val, idx * typelength, elemvec[idx], 0, typelength);
1648  return val;
1649 }
1650 
1651 struct value *
1652 value_cstring (const char *ptr, ssize_t len, struct type *char_type)
1653 {
1654  struct value *val;
1655  int lowbound = current_language->string_lower_bound;
1656  ssize_t highbound = len / TYPE_LENGTH (char_type);
1657  struct type *stringtype
1658  = lookup_array_range_type (char_type, lowbound, highbound + lowbound - 1);
1659 
1660  val = allocate_value (stringtype);
1661  memcpy (value_contents_raw (val), ptr, len);
1662  return val;
1663 }
1664 
1665 /* Create a value for a string constant by allocating space in the
1666  inferior, copying the data into that space, and returning the
1667  address with type TYPE_CODE_STRING. PTR points to the string
1668  constant data; LEN is number of characters.
1669 
1670  Note that string types are like array of char types with a lower
1671  bound of zero and an upper bound of LEN - 1. Also note that the
1672  string may contain embedded null bytes. */
1673 
1674 struct value *
1675 value_string (const char *ptr, ssize_t len, struct type *char_type)
1676 {
1677  struct value *val;
1678  int lowbound = current_language->string_lower_bound;
1679  ssize_t highbound = len / TYPE_LENGTH (char_type);
1680  struct type *stringtype
1681  = lookup_string_range_type (char_type, lowbound, highbound + lowbound - 1);
1682 
1683  val = allocate_value (stringtype);
1684  memcpy (value_contents_raw (val), ptr, len);
1685  return val;
1686 }
1687 
1688 
1689 /* See if we can pass arguments in T2 to a function which takes
1690  arguments of types T1. T1 is a list of NARGS arguments, and T2 is
1691  a NULL-terminated vector. If some arguments need coercion of some
1692  sort, then the coerced values are written into T2. Return value is
1693  0 if the arguments could be matched, or the position at which they
1694  differ if not.
1695 
1696  STATICP is nonzero if the T1 argument list came from a static
1697  member function. T2 will still include the ``this'' pointer, but
1698  it will be skipped.
1699 
1700  For non-static member functions, we ignore the first argument,
1701  which is the type of the instance variable. This is because we
1702  want to handle calls with objects from derived classes. This is
1703  not entirely correct: we should actually check to make sure that a
1704  requested operation is type secure, shouldn't we? FIXME. */
1705 
1706 static int
1707 typecmp (int staticp, int varargs, int nargs,
1708  struct field t1[], struct value *t2[])
1709 {
1710  int i;
1711 
1712  if (t2 == 0)
1713  internal_error (__FILE__, __LINE__,
1714  _("typecmp: no argument list"));
1715 
1716  /* Skip ``this'' argument if applicable. T2 will always include
1717  THIS. */
1718  if (staticp)
1719  t2 ++;
1720 
1721  for (i = 0;
1722  (i < nargs) && TYPE_CODE (t1[i].type) != TYPE_CODE_VOID;
1723  i++)
1724  {
1725  struct type *tt1, *tt2;
1726 
1727  if (!t2[i])
1728  return i + 1;
1729 
1730  tt1 = check_typedef (t1[i].type);
1731  tt2 = check_typedef (value_type (t2[i]));
1732 
1733  if (TYPE_IS_REFERENCE (tt1)
1734  /* We should be doing hairy argument matching, as below. */
1736  == TYPE_CODE (tt2)))
1737  {
1738  if (TYPE_CODE (tt2) == TYPE_CODE_ARRAY)
1739  t2[i] = value_coerce_array (t2[i]);
1740  else
1741  t2[i] = value_ref (t2[i], TYPE_CODE (tt1));
1742  continue;
1743  }
1744 
1745  /* djb - 20000715 - Until the new type structure is in the
1746  place, and we can attempt things like implicit conversions,
1747  we need to do this so you can take something like a map<const
1748  char *>, and properly access map["hello"], because the
1749  argument to [] will be a reference to a pointer to a char,
1750  and the argument will be a pointer to a char. */
1751  while (TYPE_IS_REFERENCE (tt1) || TYPE_CODE (tt1) == TYPE_CODE_PTR)
1752  {
1753  tt1 = check_typedef( TYPE_TARGET_TYPE(tt1) );
1754  }
1755  while (TYPE_CODE(tt2) == TYPE_CODE_ARRAY
1756  || TYPE_CODE(tt2) == TYPE_CODE_PTR
1757  || TYPE_IS_REFERENCE (tt2))
1758  {
1759  tt2 = check_typedef (TYPE_TARGET_TYPE(tt2));
1760  }
1761  if (TYPE_CODE (tt1) == TYPE_CODE (tt2))
1762  continue;
1763  /* Array to pointer is a `trivial conversion' according to the
1764  ARM. */
1765 
1766  /* We should be doing much hairier argument matching (see
1767  section 13.2 of the ARM), but as a quick kludge, just check
1768  for the same type code. */
1769  if (TYPE_CODE (t1[i].type) != TYPE_CODE (value_type (t2[i])))
1770  return i + 1;
1771  }
1772  if (varargs || t2[i] == NULL)
1773  return 0;
1774  return i + 1;
1775 }
1776 
1777 /* Helper class for do_search_struct_field that updates *RESULT_PTR
1778  and *LAST_BOFFSET, and possibly throws an exception if the field
1779  search has yielded ambiguous results. */
1780 
1781 static void
1782 update_search_result (struct value **result_ptr, struct value *v,
1783  LONGEST *last_boffset, LONGEST boffset,
1784  const char *name, struct type *type)
1785 {
1786  if (v != NULL)
1787  {
1788  if (*result_ptr != NULL
1789  /* The result is not ambiguous if all the classes that are
1790  found occupy the same space. */
1791  && *last_boffset != boffset)
1792  error (_("base class '%s' is ambiguous in type '%s'"),
1793  name, TYPE_SAFE_NAME (type));
1794  *result_ptr = v;
1795  *last_boffset = boffset;
1796  }
1797 }
1798 
1799 /* A helper for search_struct_field. This does all the work; most
1800  arguments are as passed to search_struct_field. The result is
1801  stored in *RESULT_PTR, which must be initialized to NULL.
1802  OUTERMOST_TYPE is the type of the initial type passed to
1803  search_struct_field; this is used for error reporting when the
1804  lookup is ambiguous. */
1805 
1806 static void
1807 do_search_struct_field (const char *name, struct value *arg1, LONGEST offset,
1808  struct type *type, int looking_for_baseclass,
1809  struct value **result_ptr,
1810  LONGEST *last_boffset,
1811  struct type *outermost_type)
1812 {
1813  int i;
1814  int nbases;
1815 
1816  type = check_typedef (type);
1817  nbases = TYPE_N_BASECLASSES (type);
1818 
1819  if (!looking_for_baseclass)
1820  for (i = TYPE_NFIELDS (type) - 1; i >= nbases; i--)
1821  {
1822  const char *t_field_name = TYPE_FIELD_NAME (type, i);
1823 
1824  if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
1825  {
1826  struct value *v;
1827 
1828  if (field_is_static (&TYPE_FIELD (type, i)))
1829  v = value_static_field (type, i);
1830  else
1831  v = value_primitive_field (arg1, offset, i, type);
1832  *result_ptr = v;
1833  return;
1834  }
1835 
1836  if (t_field_name
1837  && t_field_name[0] == '\0')
1838  {
1839  struct type *field_type = TYPE_FIELD_TYPE (type, i);
1840 
1841  if (TYPE_CODE (field_type) == TYPE_CODE_UNION
1842  || TYPE_CODE (field_type) == TYPE_CODE_STRUCT)
1843  {
1844  /* Look for a match through the fields of an anonymous
1845  union, or anonymous struct. C++ provides anonymous
1846  unions.
1847 
1848  In the GNU Chill (now deleted from GDB)
1849  implementation of variant record types, each
1850  <alternative field> has an (anonymous) union type,
1851  each member of the union represents a <variant
1852  alternative>. Each <variant alternative> is
1853  represented as a struct, with a member for each
1854  <variant field>. */
1855 
1856  struct value *v = NULL;
1857  LONGEST new_offset = offset;
1858 
1859  /* This is pretty gross. In G++, the offset in an
1860  anonymous union is relative to the beginning of the
1861  enclosing struct. In the GNU Chill (now deleted
1862  from GDB) implementation of variant records, the
1863  bitpos is zero in an anonymous union field, so we
1864  have to add the offset of the union here. */
1865  if (TYPE_CODE (field_type) == TYPE_CODE_STRUCT
1866  || (TYPE_NFIELDS (field_type) > 0
1867  && TYPE_FIELD_BITPOS (field_type, 0) == 0))
1868  new_offset += TYPE_FIELD_BITPOS (type, i) / 8;
1869 
1870  do_search_struct_field (name, arg1, new_offset,
1871  field_type,
1872  looking_for_baseclass, &v,
1873  last_boffset,
1874  outermost_type);
1875  if (v)
1876  {
1877  *result_ptr = v;
1878  return;
1879  }
1880  }
1881  }
1882  }
1883 
1884  for (i = 0; i < nbases; i++)
1885  {
1886  struct value *v = NULL;
1887  struct type *basetype = check_typedef (TYPE_BASECLASS (type, i));
1888  /* If we are looking for baseclasses, this is what we get when
1889  we hit them. But it could happen that the base part's member
1890  name is not yet filled in. */
1891  int found_baseclass = (looking_for_baseclass
1892  && TYPE_BASECLASS_NAME (type, i) != NULL
1893  && (strcmp_iw (name,
1895  i)) == 0));
1896  LONGEST boffset = value_embedded_offset (arg1) + offset;
1897 
1898  if (BASETYPE_VIA_VIRTUAL (type, i))
1899  {
1900  struct value *v2;
1901 
1902  boffset = baseclass_offset (type, i,
1904  value_embedded_offset (arg1) + offset,
1905  value_address (arg1),
1906  arg1);
1907 
1908  /* The virtual base class pointer might have been clobbered
1909  by the user program. Make sure that it still points to a
1910  valid memory location. */
1911 
1912  boffset += value_embedded_offset (arg1) + offset;
1913  if (boffset < 0
1914  || boffset >= TYPE_LENGTH (value_enclosing_type (arg1)))
1915  {
1916  CORE_ADDR base_addr;
1917 
1918  base_addr = value_address (arg1) + boffset;
1919  v2 = value_at_lazy (basetype, base_addr);
1920  if (target_read_memory (base_addr,
1921  value_contents_raw (v2),
1922  TYPE_LENGTH (value_type (v2))) != 0)
1923  error (_("virtual baseclass botch"));
1924  }
1925  else
1926  {
1927  v2 = value_copy (arg1);
1928  deprecated_set_value_type (v2, basetype);
1929  set_value_embedded_offset (v2, boffset);
1930  }
1931 
1932  if (found_baseclass)
1933  v = v2;
1934  else
1935  {
1936  do_search_struct_field (name, v2, 0,
1937  TYPE_BASECLASS (type, i),
1938  looking_for_baseclass,
1939  result_ptr, last_boffset,
1940  outermost_type);
1941  }
1942  }
1943  else if (found_baseclass)
1944  v = value_primitive_field (arg1, offset, i, type);
1945  else
1946  {
1949  i) / 8,
1950  basetype, looking_for_baseclass,
1951  result_ptr, last_boffset,
1952  outermost_type);
1953  }
1954 
1955  update_search_result (result_ptr, v, last_boffset,
1956  boffset, name, outermost_type);
1957  }
1958 }
1959 
1960 /* Helper function used by value_struct_elt to recurse through
1961  baseclasses. Look for a field NAME in ARG1. Search in it assuming
1962  it has (class) type TYPE. If found, return value, else return NULL.
1963 
1964  If LOOKING_FOR_BASECLASS, then instead of looking for struct
1965  fields, look for a baseclass named NAME. */
1966 
1967 static struct value *
1968 search_struct_field (const char *name, struct value *arg1,
1969  struct type *type, int looking_for_baseclass)
1970 {
1971  struct value *result = NULL;
1972  LONGEST boffset = 0;
1973 
1974  do_search_struct_field (name, arg1, 0, type, looking_for_baseclass,
1975  &result, &boffset, type);
1976  return result;
1977 }
1978 
1979 /* Helper function used by value_struct_elt to recurse through
1980  baseclasses. Look for a field NAME in ARG1. Adjust the address of
1981  ARG1 by OFFSET bytes, and search in it assuming it has (class) type
1982  TYPE.
1983 
1984  If found, return value, else if name matched and args not return
1985  (value) -1, else return NULL. */
1986 
1987 static struct value *
1988 search_struct_method (const char *name, struct value **arg1p,
1989  struct value **args, LONGEST offset,
1990  int *static_memfuncp, struct type *type)
1991 {
1992  int i;
1993  struct value *v;
1994  int name_matched = 0;
1995  char dem_opname[64];
1996 
1997  type = check_typedef (type);
1998  for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
1999  {
2000  const char *t_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
2001 
2002  /* FIXME! May need to check for ARM demangling here. */
2003  if (startswith (t_field_name, "__") ||
2004  startswith (t_field_name, "op") ||
2005  startswith (t_field_name, "type"))
2006  {
2007  if (cplus_demangle_opname (t_field_name, dem_opname, DMGL_ANSI))
2008  t_field_name = dem_opname;
2009  else if (cplus_demangle_opname (t_field_name, dem_opname, 0))
2010  t_field_name = dem_opname;
2011  }
2012  if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
2013  {
2014  int j = TYPE_FN_FIELDLIST_LENGTH (type, i) - 1;
2015  struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
2016 
2017  name_matched = 1;
2019  if (j > 0 && args == 0)
2020  error (_("cannot resolve overloaded method "
2021  "`%s': no arguments supplied"), name);
2022  else if (j == 0 && args == 0)
2023  {
2024  v = value_fn_field (arg1p, f, j, type, offset);
2025  if (v != NULL)
2026  return v;
2027  }
2028  else
2029  while (j >= 0)
2030  {
2031  if (!typecmp (TYPE_FN_FIELD_STATIC_P (f, j),
2034  TYPE_FN_FIELD_ARGS (f, j), args))
2035  {
2036  if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
2037  return value_virtual_fn_field (arg1p, f, j,
2038  type, offset);
2039  if (TYPE_FN_FIELD_STATIC_P (f, j)
2040  && static_memfuncp)
2041  *static_memfuncp = 1;
2042  v = value_fn_field (arg1p, f, j, type, offset);
2043  if (v != NULL)
2044  return v;
2045  }
2046  j--;
2047  }
2048  }
2049  }
2050 
2051  for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
2052  {
2053  LONGEST base_offset;
2054  LONGEST this_offset;
2055 
2056  if (BASETYPE_VIA_VIRTUAL (type, i))
2057  {
2058  struct type *baseclass = check_typedef (TYPE_BASECLASS (type, i));
2059  struct value *base_val;
2060  const gdb_byte *base_valaddr;
2061 
2062  /* The virtual base class pointer might have been
2063  clobbered by the user program. Make sure that it
2064  still points to a valid memory location. */
2065 
2066  if (offset < 0 || offset >= TYPE_LENGTH (type))
2067  {
2069 
2070  gdb::byte_vector tmp (TYPE_LENGTH (baseclass));
2071  address = value_address (*arg1p);
2072 
2074  tmp.data (), TYPE_LENGTH (baseclass)) != 0)
2075  error (_("virtual baseclass botch"));
2076 
2077  base_val = value_from_contents_and_address (baseclass,
2078  tmp.data (),
2079  address + offset);
2080  base_valaddr = value_contents_for_printing (base_val);
2081  this_offset = 0;
2082  }
2083  else
2084  {
2085  base_val = *arg1p;
2086  base_valaddr = value_contents_for_printing (*arg1p);
2087  this_offset = offset;
2088  }
2089 
2090  base_offset = baseclass_offset (type, i, base_valaddr,
2091  this_offset, value_address (base_val),
2092  base_val);
2093  }
2094  else
2095  {
2096  base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
2097  }
2098  v = search_struct_method (name, arg1p, args, base_offset + offset,
2099  static_memfuncp, TYPE_BASECLASS (type, i));
2100  if (v == (struct value *) - 1)
2101  {
2102  name_matched = 1;
2103  }
2104  else if (v)
2105  {
2106  /* FIXME-bothner: Why is this commented out? Why is it here? */
2107  /* *arg1p = arg1_tmp; */
2108  return v;
2109  }
2110  }
2111  if (name_matched)
2112  return (struct value *) - 1;
2113  else
2114  return NULL;
2115 }
2116 
2117 /* Given *ARGP, a value of type (pointer to a)* structure/union,
2118  extract the component named NAME from the ultimate target
2119  structure/union and return it as a value with its appropriate type.
2120  ERR is used in the error message if *ARGP's type is wrong.
2121 
2122  C++: ARGS is a list of argument types to aid in the selection of
2123  an appropriate method. Also, handle derived types.
2124 
2125  STATIC_MEMFUNCP, if non-NULL, points to a caller-supplied location
2126  where the truthvalue of whether the function that was resolved was
2127  a static member function or not is stored.
2128 
2129  ERR is an error message to be printed in case the field is not
2130  found. */
2131 
2132 struct value *
2133 value_struct_elt (struct value **argp, struct value **args,
2134  const char *name, int *static_memfuncp, const char *err)
2135 {
2136  struct type *t;
2137  struct value *v;
2138 
2139  *argp = coerce_array (*argp);
2140 
2141  t = check_typedef (value_type (*argp));
2142 
2143  /* Follow pointers until we get to a non-pointer. */
2144 
2145  while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_IS_REFERENCE (t))
2146  {
2147  *argp = value_ind (*argp);
2148  /* Don't coerce fn pointer to fn and then back again! */
2149  if (TYPE_CODE (check_typedef (value_type (*argp))) != TYPE_CODE_FUNC)
2150  *argp = coerce_array (*argp);
2151  t = check_typedef (value_type (*argp));
2152  }
2153 
2154  if (TYPE_CODE (t) != TYPE_CODE_STRUCT
2155  && TYPE_CODE (t) != TYPE_CODE_UNION)
2156  error (_("Attempt to extract a component of a value that is not a %s."),
2157  err);
2158 
2159  /* Assume it's not, unless we see that it is. */
2160  if (static_memfuncp)
2161  *static_memfuncp = 0;
2162 
2163  if (!args)
2164  {
2165  /* if there are no arguments ...do this... */
2166 
2167  /* Try as a field first, because if we succeed, there is less
2168  work to be done. */
2169  v = search_struct_field (name, *argp, t, 0);
2170  if (v)
2171  return v;
2172 
2173  /* C++: If it was not found as a data field, then try to
2174  return it as a pointer to a method. */
2175  v = search_struct_method (name, argp, args, 0,
2176  static_memfuncp, t);
2177 
2178  if (v == (struct value *) - 1)
2179  error (_("Cannot take address of method %s."), name);
2180  else if (v == 0)
2181  {
2182  if (TYPE_NFN_FIELDS (t))
2183  error (_("There is no member or method named %s."), name);
2184  else
2185  error (_("There is no member named %s."), name);
2186  }
2187  return v;
2188  }
2189 
2190  v = search_struct_method (name, argp, args, 0,
2191  static_memfuncp, t);
2192 
2193  if (v == (struct value *) - 1)
2194  {
2195  error (_("One of the arguments you tried to pass to %s could not "
2196  "be converted to what the function wants."), name);
2197  }
2198  else if (v == 0)
2199  {
2200  /* See if user tried to invoke data as function. If so, hand it
2201  back. If it's not callable (i.e., a pointer to function),
2202  gdb should give an error. */
2203  v = search_struct_field (name, *argp, t, 0);
2204  /* If we found an ordinary field, then it is not a method call.
2205  So, treat it as if it were a static member function. */
2206  if (v && static_memfuncp)
2207  *static_memfuncp = 1;
2208  }
2209 
2210  if (!v)
2212  _("Structure has no component named %s."), name);
2213  return v;
2214 }
2215 
2216 /* Given *ARGP, a value of type structure or union, or a pointer/reference
2217  to a structure or union, extract and return its component (field) of
2218  type FTYPE at the specified BITPOS.
2219  Throw an exception on error. */
2220 
2221 struct value *
2222 value_struct_elt_bitpos (struct value **argp, int bitpos, struct type *ftype,
2223  const char *err)
2224 {
2225  struct type *t;
2226  int i;
2227 
2228  *argp = coerce_array (*argp);
2229 
2230  t = check_typedef (value_type (*argp));
2231 
2232  while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_IS_REFERENCE (t))
2233  {
2234  *argp = value_ind (*argp);
2235  if (TYPE_CODE (check_typedef (value_type (*argp))) != TYPE_CODE_FUNC)
2236  *argp = coerce_array (*argp);
2237  t = check_typedef (value_type (*argp));
2238  }
2239 
2240  if (TYPE_CODE (t) != TYPE_CODE_STRUCT
2241  && TYPE_CODE (t) != TYPE_CODE_UNION)
2242  error (_("Attempt to extract a component of a value that is not a %s."),
2243  err);
2244 
2245  for (i = TYPE_N_BASECLASSES (t); i < TYPE_NFIELDS (t); i++)
2246  {
2247  if (!field_is_static (&TYPE_FIELD (t, i))
2248  && bitpos == TYPE_FIELD_BITPOS (t, i)
2249  && types_equal (ftype, TYPE_FIELD_TYPE (t, i)))
2250  return value_primitive_field (*argp, 0, i, t);
2251  }
2252 
2253  error (_("No field with matching bitpos and type."));
2254 
2255  /* Never hit. */
2256  return NULL;
2257 }
2258 
2259 /* Search through the methods of an object (and its bases) to find a
2260  specified method. Return the pointer to the fn_field list FN_LIST of
2261  overloaded instances defined in the source language. If available
2262  and matching, a vector of matching xmethods defined in extension
2263  languages are also returned in XM_WORKER_VEC
2264 
2265  Helper function for value_find_oload_list.
2266  ARGP is a pointer to a pointer to a value (the object).
2267  METHOD is a string containing the method name.
2268  OFFSET is the offset within the value.
2269  TYPE is the assumed type of the object.
2270  FN_LIST is the pointer to matching overloaded instances defined in
2271  source language. Since this is a recursive function, *FN_LIST
2272  should be set to NULL when calling this function.
2273  NUM_FNS is the number of overloaded instances. *NUM_FNS should be set to
2274  0 when calling this function.
2275  XM_WORKER_VEC is the vector of matching xmethod workers. *XM_WORKER_VEC
2276  should also be set to NULL when calling this function.
2277  BASETYPE is set to the actual type of the subobject where the
2278  method is found.
2279  BOFFSET is the offset of the base subobject where the method is found. */
2280 
2281 static void
2282 find_method_list (struct value **argp, const char *method,
2283  LONGEST offset, struct type *type,
2284  struct fn_field **fn_list, int *num_fns,
2285  VEC (xmethod_worker_ptr) **xm_worker_vec,
2286  struct type **basetype, LONGEST *boffset)
2287 {
2288  int i;
2289  struct fn_field *f = NULL;
2290  VEC (xmethod_worker_ptr) *worker_vec = NULL, *new_vec = NULL;
2291 
2292  gdb_assert (fn_list != NULL && xm_worker_vec != NULL);
2293  type = check_typedef (type);
2294 
2295  /* First check in object itself.
2296  This function is called recursively to search through base classes.
2297  If there is a source method match found at some stage, then we need not
2298  look for source methods in consequent recursive calls. */
2299  if ((*fn_list) == NULL)
2300  {
2301  for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
2302  {
2303  /* pai: FIXME What about operators and type conversions? */
2304  const char *fn_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
2305 
2306  if (fn_field_name && (strcmp_iw (fn_field_name, method) == 0))
2307  {
2308  int len = TYPE_FN_FIELDLIST_LENGTH (type, i);
2309  f = TYPE_FN_FIELDLIST1 (type, i);
2310  *fn_list = f;
2311 
2312  *num_fns = len;
2313  *basetype = type;
2314  *boffset = offset;
2315 
2316  /* Resolve any stub methods. */
2318 
2319  break;
2320  }
2321  }
2322  }
2323 
2324  /* Unlike source methods, xmethods can be accumulated over successive
2325  recursive calls. In other words, an xmethod named 'm' in a class
2326  will not hide an xmethod named 'm' in its base class(es). We want
2327  it to be this way because xmethods are after all convenience functions
2328  and hence there is no point restricting them with something like method
2329  hiding. Moreover, if hiding is done for xmethods as well, then we will
2330  have to provide a mechanism to un-hide (like the 'using' construct). */
2331  worker_vec = get_matching_xmethod_workers (type, method);
2332  new_vec = VEC_merge (xmethod_worker_ptr, *xm_worker_vec, worker_vec);
2333 
2334  VEC_free (xmethod_worker_ptr, *xm_worker_vec);
2335  VEC_free (xmethod_worker_ptr, worker_vec);
2336  *xm_worker_vec = new_vec;
2337 
2338  /* If source methods are not found in current class, look for them in the
2339  base classes. We also have to go through the base classes to gather
2340  extension methods. */
2341  for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
2342  {
2343  LONGEST base_offset;
2344 
2345  if (BASETYPE_VIA_VIRTUAL (type, i))
2346  {
2347  base_offset = baseclass_offset (type, i,
2349  value_offset (*argp) + offset,
2350  value_address (*argp), *argp);
2351  }
2352  else /* Non-virtual base, simply use bit position from debug
2353  info. */
2354  {
2355  base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
2356  }
2357 
2358  find_method_list (argp, method, base_offset + offset,
2359  TYPE_BASECLASS (type, i), fn_list, num_fns,
2360  xm_worker_vec, basetype, boffset);
2361  }
2362 }
2363 
2364 /* Return the list of overloaded methods of a specified name. The methods
2365  could be those GDB finds in the binary, or xmethod. Methods found in
2366  the binary are returned in FN_LIST, and xmethods are returned in
2367  XM_WORKER_VEC.
2368 
2369  ARGP is a pointer to a pointer to a value (the object).
2370  METHOD is the method name.
2371  OFFSET is the offset within the value contents.
2372  FN_LIST is the pointer to matching overloaded instances defined in
2373  source language.
2374  NUM_FNS is the number of overloaded instances.
2375  XM_WORKER_VEC is the vector of matching xmethod workers defined in
2376  extension languages.
2377  BASETYPE is set to the type of the base subobject that defines the
2378  method.
2379  BOFFSET is the offset of the base subobject which defines the method. */
2380 
2381 static void
2382 value_find_oload_method_list (struct value **argp, const char *method,
2383  LONGEST offset, struct fn_field **fn_list,
2384  int *num_fns,
2385  VEC (xmethod_worker_ptr) **xm_worker_vec,
2386  struct type **basetype, LONGEST *boffset)
2387 {
2388  struct type *t;
2389 
2390  t = check_typedef (value_type (*argp));
2391 
2392  /* Code snarfed from value_struct_elt. */
2393  while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_IS_REFERENCE (t))
2394  {
2395  *argp = value_ind (*argp);
2396  /* Don't coerce fn pointer to fn and then back again! */
2397  if (TYPE_CODE (check_typedef (value_type (*argp))) != TYPE_CODE_FUNC)
2398  *argp = coerce_array (*argp);
2399  t = check_typedef (value_type (*argp));
2400  }
2401 
2402  if (TYPE_CODE (t) != TYPE_CODE_STRUCT
2403  && TYPE_CODE (t) != TYPE_CODE_UNION)
2404  error (_("Attempt to extract a component of a "
2405  "value that is not a struct or union"));
2406 
2407  gdb_assert (fn_list != NULL && xm_worker_vec != NULL);
2408 
2409  /* Clear the lists. */
2410  *fn_list = NULL;
2411  *num_fns = 0;
2412  *xm_worker_vec = NULL;
2413 
2414  find_method_list (argp, method, 0, t, fn_list, num_fns, xm_worker_vec,
2415  basetype, boffset);
2416 }
2417 
2418 /* Given an array of arguments (ARGS) (which includes an
2419  entry for "this" in the case of C++ methods), the number of
2420  arguments NARGS, the NAME of a function, and whether it's a method or
2421  not (METHOD), find the best function that matches on the argument types
2422  according to the overload resolution rules.
2423 
2424  METHOD can be one of three values:
2425  NON_METHOD for non-member functions.
2426  METHOD: for member functions.
2427  BOTH: used for overload resolution of operators where the
2428  candidates are expected to be either member or non member
2429  functions. In this case the first argument ARGTYPES
2430  (representing 'this') is expected to be a reference to the
2431  target object, and will be dereferenced when attempting the
2432  non-member search.
2433 
2434  In the case of class methods, the parameter OBJ is an object value
2435  in which to search for overloaded methods.
2436 
2437  In the case of non-method functions, the parameter FSYM is a symbol
2438  corresponding to one of the overloaded functions.
2439 
2440  Return value is an integer: 0 -> good match, 10 -> debugger applied
2441  non-standard coercions, 100 -> incompatible.
2442 
2443  If a method is being searched for, VALP will hold the value.
2444  If a non-method is being searched for, SYMP will hold the symbol
2445  for it.
2446 
2447  If a method is being searched for, and it is a static method,
2448  then STATICP will point to a non-zero value.
2449 
2450  If NO_ADL argument dependent lookup is disabled. This is used to prevent
2451  ADL overload candidates when performing overload resolution for a fully
2452  qualified name.
2453 
2454  If NOSIDE is EVAL_AVOID_SIDE_EFFECTS, then OBJP's memory cannot be
2455  read while picking the best overload match (it may be all zeroes and thus
2456  not have a vtable pointer), in which case skip virtual function lookup.
2457  This is ok as typically EVAL_AVOID_SIDE_EFFECTS is only used to determine
2458  the result type.
2459 
2460  Note: This function does *not* check the value of
2461  overload_resolution. Caller must check it to see whether overload
2462  resolution is permitted. */
2463 
2464 int
2465 find_overload_match (struct value **args, int nargs,
2466  const char *name, enum oload_search_type method,
2467  struct value **objp, struct symbol *fsym,
2468  struct value **valp, struct symbol **symp,
2469  int *staticp, const int no_adl,
2470  const enum noside noside)
2471 {
2472  struct value *obj = (objp ? *objp : NULL);
2473  struct type *obj_type = obj ? value_type (obj) : NULL;
2474  /* Index of best overloaded function. */
2475  int func_oload_champ = -1;
2476  int method_oload_champ = -1;
2477  int src_method_oload_champ = -1;
2478  int ext_method_oload_champ = -1;
2479 
2480  /* The measure for the current best match. */
2481  struct badness_vector *method_badness = NULL;
2482  struct badness_vector *func_badness = NULL;
2483  struct badness_vector *ext_method_badness = NULL;
2484  struct badness_vector *src_method_badness = NULL;
2485 
2486  struct value *temp = obj;
2487  /* For methods, the list of overloaded methods. */
2488  struct fn_field *fns_ptr = NULL;
2489  /* For non-methods, the list of overloaded function symbols. */
2490  struct symbol **oload_syms = NULL;
2491  /* For xmethods, the VEC of xmethod workers. */
2492  VEC (xmethod_worker_ptr) *xm_worker_vec = NULL;
2493  /* Number of overloaded instances being considered. */
2494  int num_fns = 0;
2495  struct type *basetype = NULL;
2496  LONGEST boffset;
2497 
2498  struct cleanup *all_cleanups = make_cleanup (null_cleanup, NULL);
2499 
2500  const char *obj_type_name = NULL;
2501  const char *func_name = NULL;
2502  enum oload_classification match_quality;
2503  enum oload_classification method_match_quality = INCOMPATIBLE;
2504  enum oload_classification src_method_match_quality = INCOMPATIBLE;
2505  enum oload_classification ext_method_match_quality = INCOMPATIBLE;
2506  enum oload_classification func_match_quality = INCOMPATIBLE;
2507 
2508  /* Get the list of overloaded methods or functions. */
2509  if (method == METHOD || method == BOTH)
2510  {
2511  gdb_assert (obj);
2512 
2513  /* OBJ may be a pointer value rather than the object itself. */
2514  obj = coerce_ref (obj);
2515  while (TYPE_CODE (check_typedef (value_type (obj))) == TYPE_CODE_PTR)
2516  obj = coerce_ref (value_ind (obj));
2517  obj_type_name = TYPE_NAME (value_type (obj));
2518 
2519  /* First check whether this is a data member, e.g. a pointer to
2520  a function. */
2522  {
2523  *valp = search_struct_field (name, obj,
2524  check_typedef (value_type (obj)), 0);
2525  if (*valp)
2526  {
2527  *staticp = 1;
2529  return 0;
2530  }
2531  }
2532 
2533  /* Retrieve the list of methods with the name NAME. */
2534  value_find_oload_method_list (&temp, name, 0, &fns_ptr, &num_fns,
2535  &xm_worker_vec, &basetype, &boffset);
2536  /* If this is a method only search, and no methods were found
2537  the search has faild. */
2538  if (method == METHOD && (!fns_ptr || !num_fns) && !xm_worker_vec)
2539  error (_("Couldn't find method %s%s%s"),
2540  obj_type_name,
2541  (obj_type_name && *obj_type_name) ? "::" : "",
2542  name);
2543  /* If we are dealing with stub method types, they should have
2544  been resolved by find_method_list via
2545  value_find_oload_method_list above. */
2546  if (fns_ptr)
2547  {
2548  gdb_assert (TYPE_SELF_TYPE (fns_ptr[0].type) != NULL);
2549 
2550  src_method_oload_champ = find_oload_champ (args, nargs,
2551  num_fns, fns_ptr, NULL,
2552  NULL, &src_method_badness);
2553 
2554  src_method_match_quality = classify_oload_match
2555  (src_method_badness, nargs,
2556  oload_method_static_p (fns_ptr, src_method_oload_champ));
2557 
2558  make_cleanup (xfree, src_method_badness);
2559  }
2560 
2561  if (VEC_length (xmethod_worker_ptr, xm_worker_vec) > 0)
2562  {
2563  ext_method_oload_champ = find_oload_champ (args, nargs,
2564  0, NULL, xm_worker_vec,
2565  NULL, &ext_method_badness);
2566  ext_method_match_quality = classify_oload_match (ext_method_badness,
2567  nargs, 0);
2568  make_cleanup (xfree, ext_method_badness);
2569  make_cleanup (free_xmethod_worker_vec, xm_worker_vec);
2570  }
2571 
2572  if (src_method_oload_champ >= 0 && ext_method_oload_champ >= 0)
2573  {
2574  switch (compare_badness (ext_method_badness, src_method_badness))
2575  {
2576  case 0: /* Src method and xmethod are equally good. */
2577  /* If src method and xmethod are equally good, then
2578  xmethod should be the winner. Hence, fall through to the
2579  case where a xmethod is better than the source
2580  method, except when the xmethod match quality is
2581  non-standard. */
2582  /* FALLTHROUGH */
2583  case 1: /* Src method and ext method are incompatible. */
2584  /* If ext method match is not standard, then let source method
2585  win. Otherwise, fallthrough to let xmethod win. */
2586  if (ext_method_match_quality != STANDARD)
2587  {
2588  method_oload_champ = src_method_oload_champ;
2589  method_badness = src_method_badness;
2590  ext_method_oload_champ = -1;
2591  method_match_quality = src_method_match_quality;
2592  break;
2593  }
2594  /* FALLTHROUGH */
2595  case 2: /* Ext method is champion. */
2596  method_oload_champ = ext_method_oload_champ;
2597  method_badness = ext_method_badness;
2598  src_method_oload_champ = -1;
2599  method_match_quality = ext_method_match_quality;
2600  break;
2601  case 3: /* Src method is champion. */
2602  method_oload_champ = src_method_oload_champ;
2603  method_badness = src_method_badness;
2604  ext_method_oload_champ = -1;
2605  method_match_quality = src_method_match_quality;
2606  break;
2607  default:
2608  gdb_assert_not_reached ("Unexpected overload comparison "
2609  "result");
2610  break;
2611  }
2612  }
2613  else if (src_method_oload_champ >= 0)
2614  {
2615  method_oload_champ = src_method_oload_champ;
2616  method_badness = src_method_badness;
2617  method_match_quality = src_method_match_quality;
2618  }
2619  else if (ext_method_oload_champ >= 0)
2620  {
2621  method_oload_champ = ext_method_oload_champ;
2622  method_badness = ext_method_badness;
2623  method_match_quality = ext_method_match_quality;
2624  }
2625  }
2626 
2627  if (method == NON_METHOD || method == BOTH)
2628  {
2629  const char *qualified_name = NULL;
2630 
2631  /* If the overload match is being search for both as a method
2632  and non member function, the first argument must now be
2633  dereferenced. */
2634  if (method == BOTH)
2635  args[0] = value_ind (args[0]);
2636 
2637  if (fsym)
2638  {
2639  qualified_name = SYMBOL_NATURAL_NAME (fsym);
2640 
2641  /* If we have a function with a C++ name, try to extract just
2642  the function part. Do not try this for non-functions (e.g.
2643  function pointers). */
2644  if (qualified_name
2645  && TYPE_CODE (check_typedef (SYMBOL_TYPE (fsym)))
2646  == TYPE_CODE_FUNC)
2647  {
2648  char *temp;
2649 
2650  temp = cp_func_name (qualified_name);
2651 
2652  /* If cp_func_name did not remove anything, the name of the
2653  symbol did not include scope or argument types - it was
2654  probably a C-style function. */
2655  if (temp)
2656  {
2657  make_cleanup (xfree, temp);
2658  if (strcmp (temp, qualified_name) == 0)
2659  func_name = NULL;
2660  else
2661  func_name = temp;
2662  }
2663  }
2664  }
2665  else
2666  {
2667  func_name = name;
2668  qualified_name = name;
2669  }
2670 
2671  /* If there was no C++ name, this must be a C-style function or
2672  not a function at all. Just return the same symbol. Do the
2673  same if cp_func_name fails for some reason. */
2674  if (func_name == NULL)
2675  {
2676  *symp = fsym;
2678  return 0;
2679  }
2680 
2681  func_oload_champ = find_oload_champ_namespace (args, nargs,
2682  func_name,
2683  qualified_name,
2684  &oload_syms,
2685  &func_badness,
2686  no_adl);
2687 
2688  if (func_oload_champ >= 0)
2689  func_match_quality = classify_oload_match (func_badness, nargs, 0);
2690 
2691  make_cleanup (xfree, oload_syms);
2692  make_cleanup (xfree, func_badness);
2693  }
2694 
2695  /* Did we find a match ? */
2696  if (method_oload_champ == -1 && func_oload_champ == -1)
2698  _("No symbol \"%s\" in current context."),
2699  name);
2700 
2701  /* If we have found both a method match and a function
2702  match, find out which one is better, and calculate match
2703  quality. */
2704  if (method_oload_champ >= 0 && func_oload_champ >= 0)
2705  {
2706  switch (compare_badness (func_badness, method_badness))
2707  {
2708  case 0: /* Top two contenders are equally good. */
2709  /* FIXME: GDB does not support the general ambiguous case.
2710  All candidates should be collected and presented the
2711  user. */
2712  error (_("Ambiguous overload resolution"));
2713  break;
2714  case 1: /* Incomparable top contenders. */
2715  /* This is an error incompatible candidates
2716  should not have been proposed. */
2717  error (_("Internal error: incompatible "
2718  "overload candidates proposed"));
2719  break;
2720  case 2: /* Function champion. */
2721  method_oload_champ = -1;
2722  match_quality = func_match_quality;
2723  break;
2724  case 3: /* Method champion. */
2725  func_oload_champ = -1;
2726  match_quality = method_match_quality;
2727  break;
2728  default:
2729  error (_("Internal error: unexpected overload comparison result"));
2730  break;
2731  }
2732  }
2733  else
2734  {
2735  /* We have either a method match or a function match. */
2736  if (method_oload_champ >= 0)
2737  match_quality = method_match_quality;
2738  else
2739  match_quality = func_match_quality;
2740  }
2741 
2742  if (match_quality == INCOMPATIBLE)
2743  {
2744  if (method == METHOD)
2745  error (_("Cannot resolve method %s%s%s to any overloaded instance"),
2746  obj_type_name,
2747  (obj_type_name && *obj_type_name) ? "::" : "",
2748  name);
2749  else
2750  error (_("Cannot resolve function %s to any overloaded instance"),
2751  func_name);
2752  }
2753  else if (match_quality == NON_STANDARD)
2754  {
2755  if (method == METHOD)
2756  warning (_("Using non-standard conversion to match "
2757  "method %s%s%s to supplied arguments"),
2758  obj_type_name,
2759  (obj_type_name && *obj_type_name) ? "::" : "",
2760  name);
2761  else
2762  warning (_("Using non-standard conversion to match "
2763  "function %s to supplied arguments"),
2764  func_name);
2765  }
2766 
2767  if (staticp != NULL)
2768  *staticp = oload_method_static_p (fns_ptr, method_oload_champ);
2769 
2770  if (method_oload_champ >= 0)
2771  {
2772  if (src_method_oload_champ >= 0)
2773  {
2774  if (TYPE_FN_FIELD_VIRTUAL_P (fns_ptr, method_oload_champ)
2776  {
2777  *valp = value_virtual_fn_field (&temp, fns_ptr,
2778  method_oload_champ, basetype,
2779  boffset);
2780  }
2781  else
2782  *valp = value_fn_field (&temp, fns_ptr, method_oload_champ,
2783  basetype, boffset);
2784  }
2785  else
2786  {
2788  (VEC_index (xmethod_worker_ptr, xm_worker_vec,
2789  ext_method_oload_champ)));
2790  }
2791  }
2792  else
2793  *symp = oload_syms[func_oload_champ];
2794 
2795  if (objp)
2796  {
2797  struct type *temp_type = check_typedef (value_type (temp));
2798  struct type *objtype = check_typedef (obj_type);
2799 
2800  if (TYPE_CODE (temp_type) != TYPE_CODE_PTR
2801  && (TYPE_CODE (objtype) == TYPE_CODE_PTR
2802  || TYPE_IS_REFERENCE (objtype)))
2803  {
2804  temp = value_addr (temp);
2805  }
2806  *objp = temp;
2807  }
2808 
2810 
2811  switch (match_quality)
2812  {
2813  case INCOMPATIBLE:
2814  return 100;
2815  case NON_STANDARD:
2816  return 10;
2817  default: /* STANDARD */
2818  return 0;
2819  }
2820 }
2821 
2822 /* Find the best overload match, searching for FUNC_NAME in namespaces
2823  contained in QUALIFIED_NAME until it either finds a good match or
2824  runs out of namespaces. It stores the overloaded functions in
2825  *OLOAD_SYMS, and the badness vector in *OLOAD_CHAMP_BV. The
2826  calling function is responsible for freeing *OLOAD_SYMS and
2827  *OLOAD_CHAMP_BV. If NO_ADL, argument dependent lookup is not
2828  performned. */
2829 
2830 static int
2831 find_oload_champ_namespace (struct value **args, int nargs,
2832  const char *func_name,
2833  const char *qualified_name,
2834  struct symbol ***oload_syms,
2835  struct badness_vector **oload_champ_bv,
2836  const int no_adl)
2837 {
2838  int oload_champ;
2839 
2840  find_oload_champ_namespace_loop (args, nargs,
2841  func_name,
2842  qualified_name, 0,
2843  oload_syms, oload_champ_bv,
2844  &oload_champ,
2845  no_adl);
2846 
2847  return oload_champ;
2848 }
2849 
2850 /* Helper function for find_oload_champ_namespace; NAMESPACE_LEN is
2851  how deep we've looked for namespaces, and the champ is stored in
2852  OLOAD_CHAMP. The return value is 1 if the champ is a good one, 0
2853  if it isn't. Other arguments are the same as in
2854  find_oload_champ_namespace
2855 
2856  It is the caller's responsibility to free *OLOAD_SYMS and
2857  *OLOAD_CHAMP_BV. */
2858 
2859 static int
2860 find_oload_champ_namespace_loop (struct value **args, int nargs,
2861  const char *func_name,
2862  const char *qualified_name,
2863  int namespace_len,
2864  struct symbol ***oload_syms,
2865  struct badness_vector **oload_champ_bv,
2866  int *oload_champ,
2867  const int no_adl)
2868 {
2869  int next_namespace_len = namespace_len;
2870  int searched_deeper = 0;
2871  int num_fns = 0;
2872  struct cleanup *old_cleanups;
2873  int new_oload_champ;
2874  struct symbol **new_oload_syms;
2875  struct badness_vector *new_oload_champ_bv;
2876  char *new_namespace;
2877 
2878  if (next_namespace_len != 0)
2879  {
2880  gdb_assert (qualified_name[next_namespace_len] == ':');
2881  next_namespace_len += 2;
2882  }
2883  next_namespace_len +=
2884  cp_find_first_component (qualified_name + next_namespace_len);
2885 
2886  /* Initialize these to values that can safely be xfree'd. */
2887  *oload_syms = NULL;
2888  *oload_champ_bv = NULL;
2889 
2890  /* First, see if we have a deeper namespace we can search in.
2891  If we get a good match there, use it. */
2892 
2893  if (qualified_name[next_namespace_len] == ':')
2894  {
2895  searched_deeper = 1;
2896 
2897  if (find_oload_champ_namespace_loop (args, nargs,
2898  func_name, qualified_name,
2899  next_namespace_len,
2900  oload_syms, oload_champ_bv,
2901  oload_champ, no_adl))
2902  {
2903  return 1;
2904  }
2905  };
2906 
2907  /* If we reach here, either we're in the deepest namespace or we
2908  didn't find a good match in a deeper namespace. But, in the
2909  latter case, we still have a bad match in a deeper namespace;
2910  note that we might not find any match at all in the current
2911  namespace. (There's always a match in the deepest namespace,
2912  because this overload mechanism only gets called if there's a
2913  function symbol to start off with.) */
2914 
2915  old_cleanups = make_cleanup (xfree, *oload_syms);
2916  make_cleanup (xfree, *oload_champ_bv);
2917  new_namespace = (char *) alloca (namespace_len + 1);
2918  strncpy (new_namespace, qualified_name, namespace_len);
2919  new_namespace[namespace_len] = '\0';
2920  new_oload_syms = make_symbol_overload_list (func_name,
2921  new_namespace);
2922 
2923  /* If we have reached the deepest level perform argument
2924  determined lookup. */
2925  if (!searched_deeper && !no_adl)
2926  {
2927  int ix;
2928  struct type **arg_types;
2929 
2930  /* Prepare list of argument types for overload resolution. */
2931  arg_types = (struct type **)
2932  alloca (nargs * (sizeof (struct type *)));
2933  for (ix = 0; ix < nargs; ix++)
2934  arg_types[ix] = value_type (args[ix]);
2935  make_symbol_overload_list_adl (arg_types, nargs, func_name);
2936  }
2937 
2938  while (new_oload_syms[num_fns])
2939  ++num_fns;
2940 
2941  new_oload_champ = find_oload_champ (args, nargs, num_fns,
2942  NULL, NULL, new_oload_syms,
2943  &new_oload_champ_bv);
2944 
2945  /* Case 1: We found a good match. Free earlier matches (if any),
2946  and return it. Case 2: We didn't find a good match, but we're
2947  not the deepest function. Then go with the bad match that the
2948  deeper function found. Case 3: We found a bad match, and we're
2949  the deepest function. Then return what we found, even though
2950  it's a bad match. */
2951 
2952  if (new_oload_champ != -1
2953  && classify_oload_match (new_oload_champ_bv, nargs, 0) == STANDARD)
2954  {
2955  *oload_syms = new_oload_syms;
2956  *oload_champ = new_oload_champ;
2957  *oload_champ_bv = new_oload_champ_bv;
2958  do_cleanups (old_cleanups);
2959  return 1;
2960  }
2961  else if (searched_deeper)
2962  {
2963  xfree (new_oload_syms);
2964  xfree (new_oload_champ_bv);
2965  discard_cleanups (old_cleanups);
2966  return 0;
2967  }
2968  else
2969  {
2970  *oload_syms = new_oload_syms;
2971  *oload_champ = new_oload_champ;
2972  *oload_champ_bv = new_oload_champ_bv;
2973  do_cleanups (old_cleanups);
2974  return 0;
2975  }
2976 }
2977 
2978 /* Look for a function to take NARGS args of ARGS. Find
2979  the best match from among the overloaded methods or functions
2980  given by FNS_PTR or OLOAD_SYMS or XM_WORKER_VEC, respectively.
2981  One, and only one of FNS_PTR, OLOAD_SYMS and XM_WORKER_VEC can be
2982  non-NULL.
2983 
2984  If XM_WORKER_VEC is NULL, then the length of the arrays FNS_PTR
2985  or OLOAD_SYMS (whichever is non-NULL) is specified in NUM_FNS.
2986 
2987  Return the index of the best match; store an indication of the
2988  quality of the match in OLOAD_CHAMP_BV.
2989 
2990  It is the caller's responsibility to free *OLOAD_CHAMP_BV. */
2991 
2992 static int
2993 find_oload_champ (struct value **args, int nargs,
2994  int num_fns, struct fn_field *fns_ptr,
2995  VEC (xmethod_worker_ptr) *xm_worker_vec,
2996  struct symbol **oload_syms,
2997  struct badness_vector **oload_champ_bv)
2998 {
2999  int ix;
3000  int fn_count;
3001  /* A measure of how good an overloaded instance is. */
3002  struct badness_vector *bv;
3003  /* Index of best overloaded function. */
3004  int oload_champ = -1;
3005  /* Current ambiguity state for overload resolution. */
3006  int oload_ambiguous = 0;
3007  /* 0 => no ambiguity, 1 => two good funcs, 2 => incomparable funcs. */
3008 
3009  /* A champion can be found among methods alone, or among functions
3010  alone, or in xmethods alone, but not in more than one of these
3011  groups. */
3012  gdb_assert ((fns_ptr != NULL) + (oload_syms != NULL) + (xm_worker_vec != NULL)
3013  == 1);
3014 
3015  *oload_champ_bv = NULL;
3016 
3017  fn_count = (xm_worker_vec != NULL
3018  ? VEC_length (xmethod_worker_ptr, xm_worker_vec)
3019  : num_fns);
3020  /* Consider each candidate in turn. */
3021  for (ix = 0; ix < fn_count; ix++)
3022  {
3023  int jj;
3024  int static_offset = 0;
3025  int nparms;
3026  struct type **parm_types;
3027  struct xmethod_worker *worker = NULL;
3028 
3029  if (xm_worker_vec != NULL)
3030  {
3031  worker = VEC_index (xmethod_worker_ptr, xm_worker_vec, ix);
3032  parm_types = get_xmethod_arg_types (worker, &nparms);
3033  }
3034  else
3035  {
3036  if (fns_ptr != NULL)
3037  {
3038  nparms = TYPE_NFIELDS (TYPE_FN_FIELD_TYPE (fns_ptr, ix));
3039  static_offset = oload_method_static_p (fns_ptr, ix);
3040  }
3041  else
3042  nparms = TYPE_NFIELDS (SYMBOL_TYPE (oload_syms[ix]));
3043 
3044  parm_types = XNEWVEC (struct type *, nparms);
3045  for (jj = 0; jj < nparms; jj++)
3046  parm_types[jj] = (fns_ptr != NULL
3047  ? (TYPE_FN_FIELD_ARGS (fns_ptr, ix)[jj].type)
3048  : TYPE_FIELD_TYPE (SYMBOL_TYPE (oload_syms[ix]),
3049  jj));
3050  }
3051 
3052  /* Compare parameter types to supplied argument types. Skip
3053  THIS for static methods. */
3054  bv = rank_function (parm_types, nparms,
3055  args + static_offset,
3056  nargs - static_offset);
3057 
3058  if (!*oload_champ_bv)
3059  {
3060  *oload_champ_bv = bv;
3061  oload_champ = 0;
3062  }
3063  else /* See whether current candidate is better or worse than
3064  previous best. */
3065  switch (compare_badness (bv, *oload_champ_bv))
3066  {
3067  case 0: /* Top two contenders are equally good. */
3068  oload_ambiguous = 1;
3069  break;
3070  case 1: /* Incomparable top contenders. */
3071  oload_ambiguous = 2;
3072  break;
3073  case 2: /* New champion, record details. */
3074  *oload_champ_bv = bv;
3075  oload_ambiguous = 0;
3076  oload_champ = ix;
3077  break;
3078  case 3:
3079  default:
3080  break;
3081  }
3082  xfree (parm_types);
3083  if (overload_debug)
3084  {
3085  if (fns_ptr != NULL)
3087  "Overloaded method instance %s, # of parms %d\n",
3088  fns_ptr[ix].physname, nparms);
3089  else if (xm_worker_vec != NULL)
3091  "Xmethod worker, # of parms %d\n",
3092  nparms);
3093  else
3095  "Overloaded function instance "
3096  "%s # of parms %d\n",
3097  SYMBOL_DEMANGLED_NAME (oload_syms[ix]),
3098  nparms);
3099  for (jj = 0; jj < nargs - static_offset; jj++)
3101  "...Badness @ %d : %d\n",
3102  jj, bv->rank[jj].rank);
3103  fprintf_filtered (gdb_stderr, "Overload resolution "
3104  "champion is %d, ambiguous? %d\n",
3105  oload_champ, oload_ambiguous);
3106  }
3107  }
3108 
3109  return oload_champ;
3110 }
3111 
3112 /* Return 1 if we're looking at a static method, 0 if we're looking at
3113  a non-static method or a function that isn't a method. */
3114 
3115 static int
3116 oload_method_static_p (struct fn_field *fns_ptr, int index)
3117 {
3118  if (fns_ptr && index >= 0 && TYPE_FN_FIELD_STATIC_P (fns_ptr, index))
3119  return 1;
3120  else
3121  return 0;
3122 }
3123 
3124 /* Check how good an overload match OLOAD_CHAMP_BV represents. */
3125 
3126 static enum oload_classification
3127 classify_oload_match (struct badness_vector *oload_champ_bv,
3128  int nargs,
3129  int static_offset)
3130 {
3131  int ix;
3132  enum oload_classification worst = STANDARD;
3133 
3134  for (ix = 1; ix <= nargs - static_offset; ix++)
3135  {
3136  /* If this conversion is as bad as INCOMPATIBLE_TYPE_BADNESS
3137  or worse return INCOMPATIBLE. */
3138  if (compare_ranks (oload_champ_bv->rank[ix],
3140  return INCOMPATIBLE; /* Truly mismatched types. */
3141  /* Otherwise If this conversion is as bad as
3142  NS_POINTER_CONVERSION_BADNESS or worse return NON_STANDARD. */
3143  else if (compare_ranks (oload_champ_bv->rank[ix],
3145  worst = NON_STANDARD; /* Non-standard type conversions
3146  needed. */
3147  }
3148 
3149  /* If no INCOMPATIBLE classification was found, return the worst one
3150  that was found (if any). */
3151  return worst;
3152 }
3153 
3154 /* C++: return 1 is NAME is a legitimate name for the destructor of
3155  type TYPE. If TYPE does not have a destructor, or if NAME is
3156  inappropriate for TYPE, an error is signaled. Parameter TYPE should not yet
3157  have CHECK_TYPEDEF applied, this function will apply it itself. */
3158 
3159 int
3160 destructor_name_p (const char *name, struct type *type)
3161 {
3162  if (name[0] == '~')
3163  {
3164  const char *dname = type_name_no_tag_or_error (type);
3165  const char *cp = strchr (dname, '<');
3166  unsigned int len;
3167 
3168  /* Do not compare the template part for template classes. */
3169  if (cp == NULL)
3170  len = strlen (dname);
3171  else
3172  len = cp - dname;
3173  if (strlen (name + 1) != len || strncmp (dname, name + 1, len) != 0)
3174  error (_("name of destructor must equal name of class"));
3175  else
3176  return 1;
3177  }
3178  return 0;
3179 }
3180 
3181 /* Find an enum constant named NAME in TYPE. TYPE must be an "enum
3182  class". If the name is found, return a value representing it;
3183  otherwise throw an exception. */
3184 
3185 static struct value *
3186 enum_constant_from_type (struct type *type, const char *name)
3187 {
3188  int i;
3189  int name_len = strlen (name);
3190 
3192  && TYPE_DECLARED_CLASS (type));
3193 
3194  for (i = TYPE_N_BASECLASSES (type); i < TYPE_NFIELDS (type); ++i)
3195  {
3196  const char *fname = TYPE_FIELD_NAME (type, i);
3197  int len;
3198 
3200  || fname == NULL)
3201  continue;
3202 
3203  /* Look for the trailing "::NAME", since enum class constant
3204  names are qualified here. */
3205  len = strlen (fname);
3206  if (len + 2 >= name_len
3207  && fname[len - name_len - 2] == ':'
3208  && fname[len - name_len - 1] == ':'
3209  && strcmp (&fname[len - name_len], name) == 0)
3211  }
3212 
3213  error (_("no constant named \"%s\" in enum \"%s\""),
3214  name, TYPE_TAG_NAME (type));
3215 }
3216 
3217 /* C++: Given an aggregate type CURTYPE, and a member name NAME,
3218  return the appropriate member (or the address of the member, if
3219  WANT_ADDRESS). This function is used to resolve user expressions
3220  of the form "DOMAIN::NAME". For more details on what happens, see
3221  the comment before value_struct_elt_for_reference. */
3222 
3223 struct value *
3224 value_aggregate_elt (struct type *curtype, const char *name,
3225  struct type *expect_type, int want_address,
3226  enum noside noside)
3227 {
3228  switch (TYPE_CODE (curtype))
3229  {
3230  case TYPE_CODE_STRUCT:
3231  case TYPE_CODE_UNION:
3232  return value_struct_elt_for_reference (curtype, 0, curtype,
3233  name, expect_type,
3234  want_address, noside);
3235  case TYPE_CODE_NAMESPACE:
3236  return value_namespace_elt (curtype, name,
3237  want_address, noside);
3238 
3239  case TYPE_CODE_ENUM:
3240  return enum_constant_from_type (curtype, name);
3241 
3242  default:
3243  internal_error (__FILE__, __LINE__,
3244  _("non-aggregate type in value_aggregate_elt"));
3245  }
3246 }
3247 
3248 /* Compares the two method/function types T1 and T2 for "equality"
3249  with respect to the methods' parameters. If the types of the
3250  two parameter lists are the same, returns 1; 0 otherwise. This
3251  comparison may ignore any artificial parameters in T1 if
3252  SKIP_ARTIFICIAL is non-zero. This function will ALWAYS skip
3253  the first artificial parameter in T1, assumed to be a 'this' pointer.
3254 
3255  The type T2 is expected to have come from make_params (in eval.c). */
3256 
3257 static int
3258 compare_parameters (struct type *t1, struct type *t2, int skip_artificial)
3259 {
3260  int start = 0;
3261 
3262  if (TYPE_NFIELDS (t1) > 0 && TYPE_FIELD_ARTIFICIAL (t1, 0))
3263  ++start;
3264 
3265  /* If skipping artificial fields, find the first real field
3266  in T1. */
3267  if (skip_artificial)
3268  {
3269  while (start < TYPE_NFIELDS (t1)
3270  && TYPE_FIELD_ARTIFICIAL (t1, start))
3271  ++start;
3272  }
3273 
3274  /* Now compare parameters. */
3275 
3276  /* Special case: a method taking void. T1 will contain no
3277  non-artificial fields, and T2 will contain TYPE_CODE_VOID. */
3278  if ((TYPE_NFIELDS (t1) - start) == 0 && TYPE_NFIELDS (t2) == 1
3279  && TYPE_CODE (TYPE_FIELD_TYPE (t2, 0)) == TYPE_CODE_VOID)
3280  return 1;
3281 
3282  if ((TYPE_NFIELDS (t1) - start) == TYPE_NFIELDS (t2))
3283  {
3284  int i;
3285 
3286  for (i = 0; i < TYPE_NFIELDS (t2); ++i)
3287  {
3288  if (compare_ranks (rank_one_type (TYPE_FIELD_TYPE (t1, start + i),
3289  TYPE_FIELD_TYPE (t2, i), NULL),
3290  EXACT_MATCH_BADNESS) != 0)
3291  return 0;
3292  }
3293 
3294  return 1;
3295  }
3296 
3297  return 0;
3298 }
3299 
3300 /* C++: Given an aggregate type CURTYPE, and a member name NAME,
3301  return the address of this member as a "pointer to member" type.
3302  If INTYPE is non-null, then it will be the type of the member we
3303  are looking for. This will help us resolve "pointers to member
3304  functions". This function is used to resolve user expressions of
3305  the form "DOMAIN::NAME". */
3306 
3307 static struct value *
3309  struct type *curtype, const char *name,
3310  struct type *intype,
3311  int want_address,
3312  enum noside noside)
3313 {
3314  struct type *t = curtype;
3315  int i;
3316  struct value *v, *result;
3317 
3318  if (TYPE_CODE (t) != TYPE_CODE_STRUCT
3319  && TYPE_CODE (t) != TYPE_CODE_UNION)
3320  error (_("Internal error: non-aggregate type "
3321  "to value_struct_elt_for_reference"));
3322 
3323  for (i = TYPE_NFIELDS (t) - 1; i >= TYPE_N_BASECLASSES (t); i--)
3324  {
3325  const char *t_field_name = TYPE_FIELD_NAME (t, i);
3326 
3327  if (t_field_name && strcmp (t_field_name, name) == 0)
3328  {
3329  if (field_is_static (&TYPE_FIELD (t, i)))
3330  {
3331  v = value_static_field (t, i);
3332  if (want_address)
3333  v = value_addr (v);
3334  return v;
3335  }
3336  if (TYPE_FIELD_PACKED (t, i))
3337  error (_("pointers to bitfield members not allowed"));
3338 
3339  if (want_address)
3340  return value_from_longest
3341  (lookup_memberptr_type (TYPE_FIELD_TYPE (t, i), domain),
3342  offset + (LONGEST) (TYPE_FIELD_BITPOS (t, i) >> 3));
3343  else if (noside != EVAL_NORMAL)
3344  return allocate_value (TYPE_FIELD_TYPE (t, i));
3345  else
3346  {
3347  /* Try to evaluate NAME as a qualified name with implicit
3348  this pointer. In this case, attempt to return the
3349  equivalent to `this->*(&TYPE::NAME)'. */
3351  if (v != NULL)
3352  {
3353  struct value *ptr;
3354  long mem_offset;
3355  struct type *type, *tmp;
3356 
3357  ptr = value_aggregate_elt (domain, name, NULL, 1, noside);
3358  type = check_typedef (value_type (ptr));
3359  gdb_assert (type != NULL
3362  v = value_cast_pointers (tmp, v, 1);
3363  mem_offset = value_as_long (ptr);
3365  result = value_from_pointer (tmp,
3366  value_as_long (v) + mem_offset);
3367  return value_ind (result);
3368  }
3369 
3370  error (_("Cannot reference non-static field \"%s\""), name);
3371  }
3372  }
3373  }
3374 
3375  /* C++: If it was not found as a data field, then try to return it
3376  as a pointer to a method. */
3377 
3378  /* Perform all necessary dereferencing. */
3379  while (intype && TYPE_CODE (intype) == TYPE_CODE_PTR)
3380  intype = TYPE_TARGET_TYPE (intype);
3381 
3382  for (i = TYPE_NFN_FIELDS (t) - 1; i >= 0; --i)
3383  {
3384  const char *t_field_name = TYPE_FN_FIELDLIST_NAME (t, i);
3385  char dem_opname[64];
3386 
3387  if (startswith (t_field_name, "__")
3388  || startswith (t_field_name, "op")
3389  || startswith (t_field_name, "type"))
3390  {
3391  if (cplus_demangle_opname (t_field_name,
3392  dem_opname, DMGL_ANSI))
3393  t_field_name = dem_opname;
3394  else if (cplus_demangle_opname (t_field_name,
3395  dem_opname, 0))
3396  t_field_name = dem_opname;
3397  }
3398  if (t_field_name && strcmp (t_field_name, name) == 0)
3399  {
3400  int j;
3401  int len = TYPE_FN_FIELDLIST_LENGTH (t, i);
3402  struct fn_field *f = TYPE_FN_FIELDLIST1 (t, i);
3403 
3404  check_stub_method_group (t, i);
3405 
3406  if (intype)
3407  {
3408  for (j = 0; j < len; ++j)
3409  {
3410  if (TYPE_CONST (intype) != TYPE_FN_FIELD_CONST (f, j))
3411  continue;
3412  if (TYPE_VOLATILE (intype) != TYPE_FN_FIELD_VOLATILE (f, j))
3413  continue;
3414 
3415  if (compare_parameters (TYPE_FN_FIELD_TYPE (f, j), intype, 0)
3417  intype, 1))
3418  break;
3419  }
3420 
3421  if (j == len)
3422  error (_("no member function matches "
3423  "that type instantiation"));
3424  }
3425  else
3426  {
3427  int ii;
3428 
3429  j = -1;
3430  for (ii = 0; ii < len; ++ii)
3431  {
3432  /* Skip artificial methods. This is necessary if,
3433  for example, the user wants to "print
3434  subclass::subclass" with only one user-defined
3435  constructor. There is no ambiguity in this case.
3436  We are careful here to allow artificial methods
3437  if they are the unique result. */
3438  if (TYPE_FN_FIELD_ARTIFICIAL (f, ii))
3439  {
3440  if (j == -1)
3441  j = ii;
3442  continue;
3443  }
3444 
3445  /* Desired method is ambiguous if more than one
3446  method is defined. */
3447  if (j != -1 && !TYPE_FN_FIELD_ARTIFICIAL (f, j))
3448  error (_("non-unique member `%s' requires "
3449  "type instantiation"), name);
3450 
3451  j = ii;
3452  }
3453 
3454  if (j == -1)
3455  error (_("no matching member function"));
3456  }
3457 
3458  if (TYPE_FN_FIELD_STATIC_P (f, j))
3459  {
3460  struct symbol *s =
3462  0, VAR_DOMAIN, 0).symbol;
3463 
3464  if (s == NULL)
3465  return NULL;
3466 
3467  if (want_address)
3468  return value_addr (read_var_value (s, 0, 0));
3469  else
3470  return read_var_value (s, 0, 0);
3471  }
3472 
3473  if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
3474  {
3475  if (want_address)
3476  {
3477  result = allocate_value
3480  value_contents_writeable (result),
3481  TYPE_FN_FIELD_VOFFSET (f, j), 1);
3482  }
3483  else if (noside == EVAL_AVOID_SIDE_EFFECTS)
3484  return allocate_value (TYPE_FN_FIELD_TYPE (f, j));
3485  else
3486  error (_("Cannot reference virtual member function \"%s\""),
3487  name);
3488  }
3489  else
3490  {
3491  struct symbol *s =
3493  0, VAR_DOMAIN, 0).symbol;
3494 
3495  if (s == NULL)
3496  return NULL;
3497 
3498  v = read_var_value (s, 0, 0);
3499  if (!want_address)
3500  result = v;
3501  else
3502  {
3505  value_contents_writeable (result),
3506  value_address (v), 0);
3507  }
3508  }
3509  return result;
3510  }
3511  }
3512  for (i = TYPE_N_BASECLASSES (t) - 1; i >= 0; i--)
3513  {
3514  struct value *v;
3515  int base_offset;
3516 
3517  if (BASETYPE_VIA_VIRTUAL (t, i))
3518  base_offset = 0;
3519  else
3520  base_offset = TYPE_BASECLASS_BITPOS (t, i) / 8;
3521  v = value_struct_elt_for_reference (domain,
3522  offset + base_offset,
3523  TYPE_BASECLASS (t, i),
3524  name, intype,
3525  want_address, noside);
3526  if (v)
3527  return v;
3528  }
3529 
3530  /* As a last chance, pretend that CURTYPE is a namespace, and look
3531  it up that way; this (frequently) works for types nested inside
3532  classes. */
3533 
3534  return value_maybe_namespace_elt (curtype, name,
3535  want_address, noside);
3536 }
3537 
3538 /* C++: Return the member NAME of the namespace given by the type
3539  CURTYPE. */
3540 
3541 static struct value *
3542 value_namespace_elt (const struct type *curtype,
3543  const char *name, int want_address,
3544  enum noside noside)
3545 {
3546  struct value *retval = value_maybe_namespace_elt (curtype, name,
3547  want_address,
3548  noside);
3549 
3550  if (retval == NULL)
3551  error (_("No symbol \"%s\" in namespace \"%s\"."),
3552  name, TYPE_TAG_NAME (curtype));
3553 
3554  return retval;
3555 }
3556 
3557 /* A helper function used by value_namespace_elt and
3558  value_struct_elt_for_reference. It looks up NAME inside the
3559  context CURTYPE; this works if CURTYPE is a namespace or if CURTYPE
3560  is a class and NAME refers to a type in CURTYPE itself (as opposed
3561  to, say, some base class of CURTYPE). */
3562 
3563 static struct value *
3564 value_maybe_namespace_elt (const struct type *curtype,
3565  const char *name, int want_address,
3566  enum noside noside)
3567 {
3568  const char *namespace_name = TYPE_TAG_NAME (curtype);
3569  struct block_symbol sym;
3570  struct value *result;
3571 
3574 
3575  if (sym.symbol == NULL)
3576  return NULL;
3577  else if ((noside == EVAL_AVOID_SIDE_EFFECTS)
3578  && (SYMBOL_CLASS (sym.symbol) == LOC_TYPEDEF))
3579  result = allocate_value (SYMBOL_TYPE (sym.symbol));
3580  else
3581  result = value_of_variable (sym.symbol, sym.block);
3582 
3583  if (want_address)
3584  result = value_addr (result);
3585 
3586  return result;
3587 }
3588 
3589 /* Given a pointer or a reference value V, find its real (RTTI) type.
3590 
3591  Other parameters FULL, TOP, USING_ENC as with value_rtti_type()
3592  and refer to the values computed for the object pointed to. */
3593 
3594 struct type *
3595 value_rtti_indirect_type (struct value *v, int *full,
3596  LONGEST *top, int *using_enc)
3597 {
3598  struct value *target = NULL;
3599  struct type *type, *real_type, *target_type;
3600 
3601  type = value_type (v);
3602  type = check_typedef (type);
3603  if (TYPE_IS_REFERENCE (type))
3604  target = coerce_ref (v);
3605  else if (TYPE_CODE (type) == TYPE_CODE_PTR)
3606  {
3607 
3608  TRY
3609  {
3610  target = value_ind (v);
3611  }
3612  CATCH (except, RETURN_MASK_ERROR)
3613  {
3614  if (except.error == MEMORY_ERROR)
3615  {
3616  /* value_ind threw a memory error. The pointer is NULL or
3617  contains an uninitialized value: we can't determine any
3618  type. */
3619  return NULL;
3620  }
3621  throw_exception (except);
3622  }
3623  END_CATCH
3624  }
3625  else
3626  return NULL;
3627 
3628  real_type = value_rtti_type (target, full, top, using_enc);
3629 
3630  if (real_type)
3631  {
3632  /* Copy qualifiers to the referenced object. */
3633  target_type = value_type (target);
3634  real_type = make_cv_type (TYPE_CONST (target_type),
3635  TYPE_VOLATILE (target_type), real_type, NULL);
3636  if (TYPE_IS_REFERENCE (type))
3637  real_type = lookup_reference_type (real_type, TYPE_CODE (type));
3638  else if (TYPE_CODE (type) == TYPE_CODE_PTR)
3639  real_type = lookup_pointer_type (real_type);
3640  else
3641  internal_error (__FILE__, __LINE__, _("Unexpected value type."));
3642 
3643  /* Copy qualifiers to the pointer/reference. */
3644  real_type = make_cv_type (TYPE_CONST (type), TYPE_VOLATILE (type),
3645  real_type, NULL);
3646  }
3647 
3648  return real_type;
3649 }
3650 
3651 /* Given a value pointed to by ARGP, check its real run-time type, and
3652  if that is different from the enclosing type, create a new value
3653  using the real run-time type as the enclosing type (and of the same
3654  type as ARGP) and return it, with the embedded offset adjusted to
3655  be the correct offset to the enclosed object. RTYPE is the type,
3656  and XFULL, XTOP, and XUSING_ENC are the other parameters, computed
3657  by value_rtti_type(). If these are available, they can be supplied
3658  and a second call to value_rtti_type() is avoided. (Pass RTYPE ==
3659  NULL if they're not available. */
3660 
3661 struct value *
3662 value_full_object (struct value *argp,
3663  struct type *rtype,
3664  int xfull, int xtop,
3665  int xusing_enc)
3666 {
3667  struct type *real_type;
3668  int full = 0;
3669  LONGEST top = -1;
3670  int using_enc = 0;
3671  struct value *new_val;
3672 
3673  if (rtype)
3674  {
3675  real_type = rtype;
3676  full = xfull;
3677  top = xtop;
3678  using_enc = xusing_enc;
3679  }
3680  else
3681  real_type = value_rtti_type (argp, &full, &top, &using_enc);
3682 
3683  /* If no RTTI data, or if object is already complete, do nothing. */
3684  if (!real_type || real_type == value_enclosing_type (argp))
3685  return argp;
3686 
3687  /* In a destructor we might see a real type that is a superclass of
3688  the object's type. In this case it is better to leave the object
3689  as-is. */
3690  if (full
3691  && TYPE_LENGTH (real_type) < TYPE_LENGTH (value_enclosing_type (argp)))
3692  return argp;
3693 
3694  /* If we have the full object, but for some reason the enclosing
3695  type is wrong, set it. */
3696  /* pai: FIXME -- sounds iffy */
3697  if (full)
3698  {
3699  argp = value_copy (argp);
3700  set_value_enclosing_type (argp, real_type);
3701  return argp;
3702  }
3703 
3704  /* Check if object is in memory. */
3705  if (VALUE_LVAL (argp) != lval_memory)
3706  {
3707  warning (_("Couldn't retrieve complete object of RTTI "
3708  "type %s; object may be in register(s)."),
3709  TYPE_NAME (real_type));
3710 
3711  return argp;
3712  }
3713 
3714  /* All other cases -- retrieve the complete object. */
3715  /* Go back by the computed top_offset from the beginning of the
3716  object, adjusting for the embedded offset of argp if that's what
3717  value_rtti_type used for its computation. */
3718  new_val = value_at_lazy (real_type, value_address (argp) - top +
3719  (using_enc ? 0 : value_embedded_offset (argp)));
3720  deprecated_set_value_type (new_val, value_type (argp));
3721  set_value_embedded_offset (new_val, (using_enc
3722  ? top + value_embedded_offset (argp)
3723  : top));
3724  return new_val;
3725 }
3726 
3727 
3728 /* Return the value of the local variable, if one exists. Throw error
3729  otherwise, such as if the request is made in an inappropriate context. */
3730 
3731 struct value *
3732 value_of_this (const struct language_defn *lang)
3733 {
3734  struct block_symbol sym;
3735  const struct block *b;
3736  struct frame_info *frame;
3737 
3738  if (!lang->la_name_of_this)
3739  error (_("no `this' in current language"));
3740 
3741  frame = get_selected_frame (_("no frame selected"));
3742 
3743  b = get_frame_block (frame, NULL);
3744 
3745  sym = lookup_language_this (lang, b);
3746  if (sym.symbol == NULL)
3747  error (_("current stack frame does not contain a variable named `%s'"),
3748  lang->la_name_of_this);
3749 
3750  return read_var_value (sym.symbol, sym.block, frame);
3751 }
3752 
3753 /* Return the value of the local variable, if one exists. Return NULL
3754  otherwise. Never throw error. */
3755 
3756 struct value *
3758 {
3759  struct value *ret = NULL;
3760 
3761  TRY
3762  {
3763  ret = value_of_this (lang);
3764  }
3765  CATCH (except, RETURN_MASK_ERROR)
3766  {
3767  }
3768  END_CATCH
3769 
3770  return ret;
3771 }
3772 
3773 /* Create a slice (sub-string, sub-array) of ARRAY, that is LENGTH
3774  elements long, starting at LOWBOUND. The result has the same lower
3775  bound as the original ARRAY. */
3776 
3777 struct value *
3778 value_slice (struct value *array, int lowbound, int length)
3779 {
3780  struct type *slice_range_type, *slice_type, *range_type;
3781  LONGEST lowerbound, upperbound;
3782  struct value *slice;
3783  struct type *array_type;
3784 
3785  array_type = check_typedef (value_type (array));
3786  if (TYPE_CODE (array_type) != TYPE_CODE_ARRAY
3787  && TYPE_CODE (array_type) != TYPE_CODE_STRING)
3788  error (_("cannot take slice of non-array"));
3789 
3790  range_type = TYPE_INDEX_TYPE (array_type);
3791  if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
3792  error (_("slice from bad array or bitstring"));
3793 
3794  if (lowbound < lowerbound || length < 0
3795  || lowbound + length - 1 > upperbound)
3796  error (_("slice out of range"));
3797 
3798  /* FIXME-type-allocation: need a way to free this type when we are
3799  done with it. */
3800  slice_range_type = create_static_range_type ((struct type *) NULL,
3802  lowbound,
3803  lowbound + length - 1);
3804 
3805  {
3806  struct type *element_type = TYPE_TARGET_TYPE (array_type);
3807  LONGEST offset
3808  = (lowbound - lowerbound) * TYPE_LENGTH (check_typedef (element_type));
3809 
3810  slice_type = create_array_type ((struct type *) NULL,
3811  element_type,
3812  slice_range_type);
3813  TYPE_CODE (slice_type) = TYPE_CODE (array_type);
3814 
3815  if (VALUE_LVAL (array) == lval_memory && value_lazy (array))
3816  slice = allocate_value_lazy (slice_type);
3817  else
3818  {
3819  slice = allocate_value (slice_type);
3820  value_contents_copy (slice, 0, array, offset,
3821  type_length_units (slice_type));
3822  }
3823 
3824  set_value_component_location (slice, array);
3825  set_value_offset (slice, value_offset (array) + offset);
3826  }
3827 
3828  return slice;
3829 }
3830 
3831 /* Create a value for a FORTRAN complex number. Currently most of the
3832  time values are coerced to COMPLEX*16 (i.e. a complex number
3833  composed of 2 doubles. This really should be a smarter routine
3834  that figures out precision inteligently as opposed to assuming
3835  doubles. FIXME: fmb */
3836 
3837 struct value *
3839  struct value *arg2,
3840  struct type *type)
3841 {
3842  struct value *val;
3843  struct type *real_type = TYPE_TARGET_TYPE (type);
3844 
3845  val = allocate_value (type);
3846  arg1 = value_cast (real_type, arg1);
3847  arg2 = value_cast (real_type, arg2);
3848 
3849  memcpy (value_contents_raw (val),
3850  value_contents (arg1), TYPE_LENGTH (real_type));
3851  memcpy (value_contents_raw (val) + TYPE_LENGTH (real_type),
3852  value_contents (arg2), TYPE_LENGTH (real_type));
3853  return val;
3854 }
3855 
3856 /* Cast a value into the appropriate complex data type. */
3857 
3858 static struct value *
3859 cast_into_complex (struct type *type, struct value *val)
3860 {
3861  struct type *real_type = TYPE_TARGET_TYPE (type);
3862 
3863  if (TYPE_CODE (value_type (val)) == TYPE_CODE_COMPLEX)
3864  {
3865  struct type *val_real_type = TYPE_TARGET_TYPE (value_type (val));
3866  struct value *re_val = allocate_value (val_real_type);
3867  struct value *im_val = allocate_value (val_real_type);
3868 
3869  memcpy (value_contents_raw (re_val),
3870  value_contents (val), TYPE_LENGTH (val_real_type));
3871  memcpy (value_contents_raw (im_val),
3872  value_contents (val) + TYPE_LENGTH (val_real_type),
3873  TYPE_LENGTH (val_real_type));
3874 
3875  return value_literal_complex (re_val, im_val, type);
3876  }
3877  else if (TYPE_CODE (value_type (val)) == TYPE_CODE_FLT
3878  || TYPE_CODE (value_type (val)) == TYPE_CODE_INT)
3879  return value_literal_complex (val,
3880  value_zero (real_type, not_lval),
3881  type);
3882  else
3883  error (_("cannot cast non-number to complex"));
3884 }
3885 
3886 void
3888 {
3889  add_setshow_boolean_cmd ("overload-resolution", class_support,
3890  &overload_resolution, _("\
3891 Set overload resolution in evaluating C++ functions."), _("\
3892 Show overload resolution in evaluating C++ functions."),
3893  NULL, NULL,
3895  &setlist, &showlist);
3896  overload_resolution = 1;
3897 }
const struct rank INCOMPATIBLE_TYPE_BADNESS
Definition: gdbtypes.c:48
mach_port_t mach_port_t name mach_port_t mach_port_t name kern_return_t err
Definition: gnu-nat.c:1822
struct frame_info * frame_find_by_id(struct frame_id id)
Definition: frame.c:803
unsigned int length
Definition: gdbtypes.h:803
struct value * value_virtual_fn_field(struct value **arg1p, struct fn_field *f, int j, struct type *type, int offset)
Definition: cp-abi.c:97
struct value * value_zero(struct type *type, enum lval_type lv)
Definition: valops.c:847
struct type * value_rtti_type(struct value *v, int *full, LONGEST *top, int *using_enc)
Definition: cp-abi.c:108
#define VEC_merge(T, V1, V2)
Definition: vec.h:229
struct value * value_array(int lowbound, int highbound, struct value **elemvec)
Definition: valops.c:1604
type_code
Definition: gdbtypes.h:80
static struct value * value_namespace_elt(const struct type *, const char *, int, enum noside)
Definition: valops.c:3542
char string_lower_bound
Definition: language.h:312
struct type * lookup_string_range_type(struct type *string_char_type, LONGEST low_bound, LONGEST high_bound)
Definition: gdbtypes.c:1268
struct type * lookup_array_range_type(struct type *element_type, LONGEST low_bound, LONGEST high_bound)
Definition: gdbtypes.c:1232
void set_value_embedded_offset(struct value *value, LONGEST val)
Definition: value.c:1483
void mark_value_bits_unavailable(struct value *value, LONGEST offset, LONGEST length)
Definition: value.c:594
static struct value * cast_into_complex(struct type *, struct value *)
Definition: valops.c:3859
struct value * value_addr(struct value *arg1)
Definition: valops.c:1462
struct type * lookup_reference_type(struct type *type, enum type_code refcode)
Definition: gdbtypes.c:462
struct frame_info * get_selected_frame(const char *message)
Definition: frame.c:1638
#define VALUE_FRAME_ID(val)
Definition: value.h:447
static int typecmp(int staticp, int varargs, int nargs, struct field t1[], struct value *t2[])
Definition: valops.c:1707
struct type * create_static_range_type(struct type *result_type, struct type *index_type, LONGEST low_bound, LONGEST high_bound)
Definition: gdbtypes.c:945
struct value * value_aggregate_elt(struct type *curtype, const char *name, struct type *expect_type, int want_address, enum noside noside)
Definition: valops.c:3224
const struct rank NS_POINTER_CONVERSION_BADNESS
Definition: gdbtypes.c:64
#define SYMBOL_PRINT_NAME(symbol)
Definition: symtab.h:542
static int find_oload_champ(struct value **, int, int, struct fn_field *, VEC(xmethod_worker_ptr) *, struct symbol **, struct badness_vector **)
Definition: valops.c:2993
oload_search_type
Definition: value.h:807
struct value * value_from_contents_and_address(struct type *type, const gdb_byte *valaddr, CORE_ADDR address)
Definition: value.c:3599
bfd_vma CORE_ADDR
Definition: common-types.h:41
noside
Definition: expression.h:123
#define TYPE_FIELD_NAME(thistype, n)
Definition: gdbtypes.h:1372
#define TYPE_N_BASECLASSES(thistype)
Definition: gdbtypes.h:1331
unsigned int overload_debug
Definition: gdbtypes.c:124
struct value * value_struct_elt_bitpos(struct value **argp, int bitpos, struct type *ftype, const char *err)
Definition: valops.c:2222
void set_internalvar_component(struct internalvar *var, LONGEST offset, LONGEST bitpos, LONGEST bitsize, struct value *newval)
Definition: value.c:2351
void xfree(void *)
int strcmp_iw(const char *string1, const char *string2)
Definition: utils.c:2517
#define TYPE_NFN_FIELDS(thistype)
Definition: gdbtypes.h:1311
struct value * value_reinterpret_cast(struct type *type, struct value *arg)
Definition: valops.c:577
LONGEST value_as_long(struct value *val)
Definition: value.c:2749
const char * type_name_no_tag_or_error(struct type *type)
Definition: gdbtypes.c:1485
#define BMSYMBOL_VALUE_ADDRESS(symbol)
Definition: symtab.h:691
void warning(const char *fmt,...)
Definition: errors.c:26
#define VALUE_NEXT_FRAME_ID(val)
Definition: value.h:441
void observer_notify_register_changed(struct frame_info *frame, int regnum)
LONGEST value_embedded_offset(const struct value *value)
Definition: value.c:1477
struct type * create_array_type(struct type *result_type, struct type *element_type, struct type *range_type)
Definition: gdbtypes.c:1223
Definition: value.h:807
struct value * value_coerce_array(struct value *arg1)
Definition: valops.c:1426
#define TYPE_NAME(thistype)
Definition: gdbtypes.h:1224
unsigned int lazy
Definition: value.c:192
struct value * address_of_variable(struct symbol *var, const struct block *b)
Definition: valops.c:1307
struct value * value_of_this_silent(const struct language_defn *lang)
Definition: valops.c:3757
#define TYPE_FIELD_ARTIFICIAL(thistype, n)
Definition: gdbtypes.h:1379
LONGEST value_bitsize(const struct value *value)
Definition: value.c:1128
int deprecated_value_modifiable(const struct value *value)
Definition: value.c:1580
struct type * value_enclosing_type(const struct value *value)
Definition: value.c:1175
struct value * value_at(struct type *type, CORE_ADDR addr)
Definition: valops.c:933
char * cp_func_name(const char *full_name)
Definition: cp-support.c:816
#define TYPE_VOLATILE(t)
Definition: gdbtypes.h:315
void put_frame_register_bytes(struct frame_info *frame, int regnum, CORE_ADDR offset, int len, const gdb_byte *myaddr)
Definition: frame.c:1470
struct block_symbol cp_lookup_symbol_namespace(const char *scope, const char *name, const struct block *block, const domain_enum domain)
Definition: cp-namespace.c:632
struct value * allocate_value_lazy(struct type *type)
Definition: value.c:916
void select_frame(struct frame_info *fi)
Definition: frame.c:1677
#define SYMBOL_CLASS(symbol)
Definition: symtab.h:1155
void internal_error(const char *file, int line, const char *fmt,...)
Definition: errors.c:50
#define BASETYPE_VIA_VIRTUAL(thistype, index)
Definition: gdbtypes.h:1338
#define VALUE_INTERNALVAR(val)
Definition: value.h:434
unsigned int type_length_units(struct type *type)
Definition: gdbtypes.c:260
int value_lazy(const struct value *value)
Definition: value.c:1383
struct value * value_coerce_function(struct value *arg1)
Definition: valops.c:1446
void target_float_convert(const gdb_byte *from, const struct type *from_type, gdb_byte *to, const struct type *to_type)
struct value * coerce_ref(struct value *arg)
Definition: value.c:3755
#define TYPE_FN_FIELD_STATIC_P(thisfn, n)
Definition: gdbtypes.h:1439
void read_value_memory(struct value *val, LONGEST bit_offset, int stack, CORE_ADDR memaddr, gdb_byte *buffer, size_t length)
Definition: valops.c:950
int baseclass_offset(struct type *type, int index, const gdb_byte *valaddr, LONGEST embedded_offset, CORE_ADDR address, const struct value *val)
Definition: cp-abi.c:68
struct rank * rank
Definition: gdbtypes.h:1044
void set_value_lazy(struct value *value, int val)
Definition: value.c:1389
struct value * value_ind(struct value *arg1)
Definition: valops.c:1542
struct value * value_copy(struct value *arg)
Definition: value.c:1757
short rank
Definition: gdbtypes.h:1026
struct value * value_of_this(const struct language_defn *lang)
Definition: valops.c:3732
static int find_oload_champ_namespace(struct value **, int, const char *, const char *, struct symbol ***, struct badness_vector **, const int no_adl)
Definition: valops.c:2831
struct block_symbol lookup_symbol(const char *name, const struct block *block, domain_enum domain, struct field_of_this_result *is_a_field_of_this)
Definition: symtab.c:1893
#define VEC(T)
Definition: vec.h:414
int is_public_ancestor(struct type *base, struct type *dclass)
Definition: gdbtypes.c:3194
static int dynamic_cast_check_1(struct type *desired_type, const gdb_byte *valaddr, LONGEST embedded_offset, CORE_ADDR address, struct value *val, struct type *search_type, CORE_ADDR arg_addr, struct type *arg_type, struct value **result)
Definition: valops.c:635
#define _(String)
Definition: gdb_locale.h:35
const gdb_byte * value_contents_for_printing(struct value *value)
Definition: value.c:1250
#define TYPE_FIELD(thistype, n)
Definition: gdbtypes.h:1370
lval_type
Definition: defs.h:378
#define TYPE_FN_FIELD_ARGS(thisfn, n)
Definition: gdbtypes.h:1428
#define TYPE_FIELD_ENUMVAL(thistype, n)
Definition: gdbtypes.h:1375
#define END_CATCH
#define TYPE_FIELD_TYPE(thistype, n)
Definition: gdbtypes.h:1371
static void update_search_result(struct value **result_ptr, struct value *v, LONGEST *last_boffset, LONGEST boffset, const char *name, struct type *type)
Definition: valops.c:1782
#define VALUE_LVAL(val)
Definition: value.h:414
struct value * allocate_value(struct type *type)
Definition: value.c:1036
static struct value * enum_constant_from_type(struct type *type, const char *name)
Definition: valops.c:3186
struct objfile * symbol_objfile(const struct symbol *symbol)
Definition: symtab.c:5784
static int oload_method_static_p(struct fn_field *, int)
Definition: valops.c:3116
#define TYPE_FN_FIELD_VOLATILE(thisfn, n)
Definition: gdbtypes.h:1430
int gdbarch_convert_register_p(struct gdbarch *gdbarch, int regnum, struct type *type)
Definition: gdbarch.c:2595
int value_stack(const struct value *value)
Definition: value.c:1395
const char * la_name_of_this
Definition: language.h:265
static struct value * search_struct_field(const char *, struct value *, struct type *, int)
Definition: valops.c:1968
#define TYPE_IS_REFERENCE(t)
Definition: gdbtypes.h:332
static int compare_parameters(struct type *t1, struct type *t2, int skip_artificial)
Definition: valops.c:3258
const struct rank EXACT_MATCH_BADNESS
Definition: gdbtypes.c:50
void deprecated_set_value_type(struct value *value, struct type *type)
Definition: value.c:1100
Definition: value.h:807
struct symbol ** make_symbol_overload_list_adl(struct type **arg_types, int nargs, const char *func_name)
Definition: cp-support.c:1326
void set_value_address(struct value *value, CORE_ADDR addr)
Definition: value.c:1553
struct cleanup * all_cleanups(void)
Definition: cleanups.c:165
int gdbarch_addressable_memory_unit_size(struct gdbarch *gdbarch)
Definition: gdbarch.c:5030
LONGEST value_offset(const struct value *value)
Definition: value.c:1106
void null_cleanup(void *arg)
Definition: cleanups.c:294
#define TRY
void memory_error(enum target_xfer_status err, CORE_ADDR memaddr)
Definition: corefile.c:205
struct cmd_list_element * setlist
Definition: cli-cmds.c:111
const char *const name
Definition: aarch64-tdep.c:76
struct value * value_struct_elt(struct value **argp, struct value **args, const char *name, int *static_memfuncp, const char *err)
Definition: valops.c:2133
#define TYPE_FN_FIELD_PHYSNAME(thisfn, n)
Definition: gdbtypes.h:1426
struct frame_id get_frame_id(struct frame_info *fi)
Definition: frame.c:520
struct type * check_typedef(struct type *type)
Definition: gdbtypes.c:2421
#define TYPE_FN_FIELD_VIRTUAL_P(thisfn, n)
Definition: gdbtypes.h:1438
const gdb_byte * value_contents(struct value *value)
Definition: value.c:1407
static int dynamic_cast_check_2(struct type *desired_type, const gdb_byte *valaddr, LONGEST embedded_offset, CORE_ADDR address, struct value *val, struct type *search_type, struct value **result)
Definition: valops.c:683
#define CATCH(EXCEPTION, MASK)
struct type * lookup_memberptr_type(struct type *type, struct type *domain)
Definition: gdbtypes.c:820
struct target_ops current_target
#define TYPE_FN_FIELD_ARTIFICIAL(thisfn, n)
Definition: gdbtypes.h:1433
int field_is_static(struct field *f)
Definition: gdbtypes.c:4224
struct value * value_static_field(struct type *type, int fieldno)
Definition: value.c:2961
struct symbol ** make_symbol_overload_list(const char *func_name, const char *the_namespace)
Definition: cp-support.c:1189
int compare_badness(struct badness_vector *a, struct badness_vector *b)
Definition: gdbtypes.c:3312
void fprintf_filtered(struct ui_file *stream, const char *format,...)
Definition: utils.c:2008
#define SYMBOL_DEMANGLED_NAME(symbol)
Definition: symtab.h:527
void cplus_make_method_ptr(struct type *type, gdb_byte *contents, CORE_ADDR value, int is_virtual)
Definition: cp-abi.c:147
struct value * read_var_value(struct symbol *var, const struct block *var_block, struct frame_info *frame)
Definition: findvar.c:807
struct value * find_function_in_inferior(const char *name, struct objfile **objf_p)
Definition: valops.c:127
static ULONGEST extract_unsigned_integer(const gdb_byte *addr, int len, enum bfd_endian byte_order)
Definition: defs.h:577
unsigned int cp_find_first_component(const char *name)
Definition: cp-support.c:970
const struct block * block
Definition: symtab.h:1140
const struct block * get_frame_block(struct frame_info *frame, CORE_ADDR *addr_in_block)
Definition: blockframe.c:55
struct value * value_cast_pointers(struct type *type, struct value *arg2, int subclass_check)
Definition: valops.c:306
void(* write)(struct value *toval, struct value *fromval)
Definition: value.h:233
void set_value_enclosing_type(struct value *val, struct type *new_encl_type)
Definition: value.c:3010
int symbol_read_needs_frame(struct symbol *sym)
Definition: findvar.c:392
int is_ancestor(struct type *base, struct type *dclass)
Definition: gdbtypes.c:3185
struct cmd_list_element * showlist
Definition: cli-cmds.c:119
const gdb_byte * value_contents_all(struct value *value)
Definition: value.c:1265
#define TYPE_VECTOR(t)
Definition: gdbtypes.h:252
#define gdb_assert_not_reached(message)
Definition: gdb_assert.h:55
int is_integral_type(struct type *t)
Definition: gdbtypes.c:3027
enum bfd_endian gdbarch_byte_order(struct gdbarch *gdbarch)
Definition: gdbarch.c:1509
#define VEC_length(T, V)
Definition: vec.h:140
void set_internalvar(struct internalvar *var, struct value *val)
Definition: value.c:2381
struct cleanup * make_cleanup(make_cleanup_ftype *function, void *arg)
Definition: cleanups.c:116
struct frame_info * deprecated_safe_get_selected_frame(void)
Definition: frame.c:1667
target_xfer_status
Definition: target.h:206
struct gdbarch * get_objfile_arch(const struct objfile *objfile)
Definition: objfiles.c:445
#define TARGET_CHAR_BIT
Definition: host-defs.h:29
struct value * value_coerce_to_target(struct value *val)
Definition: valops.c:1388
Definition: gdbtypes.h:749
struct value * value_of_xmethod(struct xmethod_worker *worker)
Definition: value.c:2703
#define VALUE_REGNUM(val)
Definition: value.h:451
#define VEC_index(T, V, I)
Definition: vec.h:167
struct value * parent
Definition: value.c:263
struct gdbarch * get_type_arch(const struct type *type)
Definition: gdbtypes.c:234
gdb_byte * value_contents_writeable(struct value *value)
Definition: value.c:1416
struct value * coerce_array(struct value *arg)
Definition: value.c:3780
struct value * value_assign(struct value *toval, struct value *fromval)
Definition: valops.c:993
static const char * type
Definition: language.c:113
struct value * value_from_longest(struct type *type, LONGEST num)
Definition: value.c:3534
const char * gdbarch_register_name(struct gdbarch *gdbarch, int regnr)
Definition: gdbarch.c:2282
mach_port_t mach_port_t name mach_port_t mach_port_t name kern_return_t int status
Definition: gnu-nat.c:1822
static int startswith(const char *string, const char *pattern)
Definition: common-utils.h:107
struct value * value_at_lazy(struct type *type, CORE_ADDR addr)
Definition: valops.c:944
void free_xmethod_worker_vec(void *vec)
Definition: extension.c:1021
struct value * value_cast(struct type *type, struct value *arg2)
Definition: valops.c:351
int gdbarch_addr_bit(struct gdbarch *gdbarch)
Definition: gdbarch.c:1848
#define target_has_execution
Definition: target.h:1756
gdb_byte * value_contents_all_raw(struct value *value)
Definition: value.c:1168
int class_types_same_p(const struct type *a, const struct type *b)
Definition: gdbtypes.c:3125
void set_value_offset(struct value *value, LONGEST offset)
Definition: value.c:1111
#define TYPE_BASECLASS(thistype, index)
Definition: gdbtypes.h:1330
char c_style_arrays
Definition: language.h:309
#define TYPE_FIELD_PACKED(thistype, n)
Definition: gdbtypes.h:1381
LONGEST value_bitpos(const struct value *value)
Definition: value.c:1117
struct value * value_dynamic_cast(struct type *type, struct value *arg)
Definition: valops.c:724
void read_memory(CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
Definition: corefile.c:258
#define TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED(arraytype)
Definition: gdbtypes.h:1286
struct badness_vector * rank_function(struct type **parms, int nparms, struct value **args, int nargs)
Definition: gdbtypes.c:3356
static struct value * value_cast_structs(struct type *type, struct value *v2)
Definition: valops.c:217
static struct value * value_struct_elt_for_reference(struct type *, int, struct type *, const char *, struct type *, int, enum noside)
Definition: valops.c:3308
static const char * namespace_name(struct die_info *die, int *is_anonymous, struct dwarf2_cu *)
Definition: dwarf2read.c:16796
struct value * value_full_object(struct value *argp, struct type *rtype, int xfull, int xtop, int xusing_enc)
Definition: valops.c:3662
target_object
Definition: target.h:132
struct value * value_of_internalvar(struct gdbarch *gdbarch, struct internalvar *var)
Definition: value.c:2227
#define TYPE_FIELD_BITPOS(thistype, n)
Definition: gdbtypes.h:1374
#define TYPE_UNSIGNED(t)
Definition: gdbtypes.h:205
struct symbol * symbol
Definition: symtab.h:1136
int destructor_name_p(const char *name, struct type *type)
Definition: valops.c:3160
int find_overload_match(struct value **args, int nargs, const char *name, enum oload_search_type method, struct value **objp, struct symbol *fsym, struct value **valp, struct symbol **symp, int *staticp, const int no_adl, const enum noside noside)
Definition: valops.c:2465
#define gdb_assert(expr)
Definition: gdb_assert.h:32
Definition: block.h:60
Definition: value.c:169
static void show_overload_resolution(struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
Definition: valops.c:113
int value_must_coerce_to_target(struct value *val)
Definition: valops.c:1360
struct value *(* indirect)(struct value *value)
Definition: value.h:238
#define TYPE_FN_FIELD_VOFFSET(thisfn, n)
Definition: gdbtypes.h:1437
struct value * value_fn_field(struct value **arg1p, struct fn_field *f, int j, struct type *type, LONGEST offset)
Definition: value.c:3165
struct value * value_ref(struct value *arg1, enum type_code refcode)
Definition: valops.c:1521
int value_bits_synthetic_pointer(const struct value *value, LONGEST offset, LONGEST length)
Definition: value.c:1465
void throw_exception(struct gdb_exception exception)
oload_classification
Definition: valops.c:76
int is_floating_type(struct type *t)
Definition: gdbtypes.c:3041
bfd_byte gdb_byte
Definition: common-types.h:38
int types_equal(struct type *a, struct type *b)
Definition: gdbtypes.c:3431
#define TYPE_FN_FIELD_TYPE(thisfn, n)
Definition: gdbtypes.h:1427
struct value * allocate_repeat_value(struct type *type, int count)
Definition: value.c:1049
struct value * value_from_pointer(struct type *type, CORE_ADDR addr)
Definition: value.c:3560
#define XNEWVEC(T, N)
Definition: poison.h:145
xmethod_worker_vec * get_matching_xmethod_workers(struct type *, const char *)
struct type * make_cv_type(int cnst, int voltl, struct type *type, struct type **typeptr)
Definition: gdbtypes.c:691
void discard_cleanups(struct cleanup *old_chain)
Definition: cleanups.c:212
void observer_notify_target_changed(struct target_ops *target)
#define TYPE_VARARGS(t)
Definition: gdbtypes.h:247
const struct language_defn * current_language
Definition: language.c:81
#define TYPE_TARGET_TYPE(thistype)
Definition: gdbtypes.h:1226
void value_fetch_lazy(struct value *val)
Definition: value.c:3860
void gdbarch_value_to_register(struct gdbarch *gdbarch, struct frame_info *frame, int regnum, struct type *type, const gdb_byte *buf)
Definition: gdbarch.c:2629
#define gdb_stderr
Definition: utils.h:344
#define TYPE_CODE(thistype)
Definition: gdbtypes.h:1238
struct rank rank_one_type(struct type *parm, struct type *arg, struct value *value)
Definition: gdbtypes.c:3746
#define TYPE_INDEX_TYPE(type)
Definition: gdbtypes.h:1242
#define TYPE_BASECLASS_NAME(thistype, index)
Definition: gdbtypes.h:1332
int target_read_memory(CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
Definition: target.c:1370
struct value * value_of_variable(struct symbol *var, const struct block *b)
Definition: valops.c:1296
CORE_ADDR find_function_addr(struct value *function, struct type **retval_type)
Definition: infcall.c:250
void value_contents_copy(struct value *dst, LONGEST dst_offset, struct value *src, LONGEST src_offset, LONGEST length)
Definition: value.c:1373
struct minimal_symbol * minsym
Definition: minsyms.h:34
static void find_method_list(struct value **, const char *, LONGEST, struct type *, struct fn_field **, int *, VEC(xmethod_worker_ptr) **, struct type **, LONGEST *)
Definition: valops.c:2282
struct value * value_repeat(struct value *arg1, int count)
Definition: valops.c:1274
static struct value * search_struct_method(const char *, struct value **, struct value **, LONGEST, int *, struct type *)
Definition: valops.c:1988
static CORE_ADDR allocate_space_in_inferior(int)
Definition: valops.c:206
int offset
Definition: agent.c:65
void add_setshow_boolean_cmd(const char *name, enum command_class theclass, int *var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_const_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
Definition: cli-decode.c:569
int overload_resolution
Definition: valops.c:111
struct bound_minimal_symbol lookup_bound_minimal_symbol(const char *name)
Definition: minsyms.c:430
unsigned int stack
Definition: value.c:199
#define TYPE_NFIELDS(thistype)
Definition: gdbtypes.h:1239
Definition: buffer.h:23
static enum oload_classification classify_oload_match(struct badness_vector *, int, int)
Definition: valops.c:3127
#define VEC_free(T, V)
Definition: vec.h:196
void set_value_pointed_to_offset(struct value *value, LONGEST val)
Definition: value.c:1495
struct value * value_one(struct type *type)
Definition: valops.c:858
LONGEST bitpos
Definition: value.c:251
#define TYPE_FN_FIELD_CONST(thisfn, n)
Definition: gdbtypes.h:1429
LONGEST value_pointed_to_offset(const struct value *value)
Definition: value.c:1489
int value_logical_not(struct value *arg1)
Definition: valarith.c:1416
void check_stub_method_group(struct type *type, int method_id)
Definition: gdbtypes.c:2740
#define TYPE_TAG_NAME(type)
Definition: gdbtypes.h:1225
struct block_symbol lookup_language_this(const struct language_defn *lang, const struct block *block)
Definition: symtab.c:1915
gdb::def_vector< gdb_byte > byte_vector
Definition: byte-vector.h:58
static struct value * get_value_at(struct type *type, CORE_ADDR addr, int lazy)
Definition: valops.c:902
const struct block * get_selected_block(CORE_ADDR *addr_in_block)
Definition: stack.c:2216
struct value * value_string(const char *ptr, ssize_t len, struct type *char_type)
Definition: valops.c:1675
int get_frame_register_bytes(struct frame_info *frame, int regnum, CORE_ADDR offset, int len, gdb_byte *myaddr, int *optimizedp, int *unavailablep)
Definition: frame.c:1388
const struct lval_funcs * funcs
Definition: value.c:233
void _initialize_valops(void)
Definition: valops.c:3887
#define SYMBOL_NATURAL_NAME(symbol)
Definition: symtab.h:513
struct value * value_parent(const struct value *value)
Definition: value.c:1139
unsigned long long ULONGEST
Definition: common-types.h:53
#define BASETYPE_VIA_PUBLIC(thistype, index)
Definition: gdbtypes.h:1334
target_xfer_partial_ftype target_xfer_partial
struct value * call_function_by_hand(struct value *function, type *default_return_type, int nargs, struct value **args)
Definition: infcall.c:690
struct value * value_allocate_space_in_inferior(int len)
Definition: valops.c:185
struct value * value_slice(struct value *array, int lowbound, int length)
Definition: valops.c:3778
struct value * value_primitive_field(struct value *arg1, LONGEST offset, int fieldno, struct type *arg_type)
Definition: value.c:3028
struct type * value_type(const struct value *value)
Definition: value.c:1095
range_type
Definition: expression.h:161
#define SYMBOL_TYPE(symbol)
Definition: symtab.h:1161
struct value * value_from_ulongest(struct type *type, ULONGEST num)
Definition: value.c:3546
struct type ** get_xmethod_arg_types(struct xmethod_worker *worker, int *nargs)
Definition: extension.c:949
CORE_ADDR value_as_address(struct value *val)
Definition: value.c:2762
int is_unique_ancestor(struct type *base, struct value *val)
Definition: gdbtypes.c:3254
struct type * lookup_methodptr_type(struct type *to_type)
Definition: gdbtypes.c:832
gdb_byte * value_contents_raw(struct value *value)
Definition: value.c:1158
static struct value * value_maybe_namespace_elt(const struct type *, const char *, int, enum noside)
Definition: valops.c:3564
#define TYPE_FN_FIELDLIST_NAME(thistype, n)
Definition: gdbtypes.h:1415
const char * type_name_no_tag(const struct type *type)
Definition: gdbtypes.c:1466
#define TYPE_LENGTH(thistype)
Definition: gdbtypes.h:1235
#define TYPE_BASECLASS_BITPOS(thistype, index)
Definition: gdbtypes.h:1333
struct objfile * objfile
Definition: minsyms.h:39
#define HOST_CHAR_BIT
Definition: host-defs.h:40
CORE_ADDR address
Definition: value.c:208
struct value * value_literal_complex(struct value *arg1, struct value *arg2, struct type *type)
Definition: valops.c:3838
struct value * readjust_indirect_value_type(struct value *value, struct type *enc_type, const struct type *original_type, const struct value *original_value)
Definition: value.c:3739
#define TYPE_FN_FIELDLIST_LENGTH(thistype, n)
Definition: gdbtypes.h:1416
int compare_ranks(struct rank a, struct rank b)
Definition: gdbtypes.c:3284
struct value * value_cstring(const char *ptr, ssize_t len, struct type *char_type)
Definition: valops.c:1652
struct gdbarch * get_value_arch(const struct value *value)
Definition: value.c:343
void write_memory_with_notification(CORE_ADDR memaddr, const bfd_byte *myaddr, ssize_t len)
Definition: corefile.c:407
struct xmethod_worker * clone_xmethod_worker(struct xmethod_worker *worker)
Definition: extension.c:885
#define QUIT
Definition: defs.h:179
void write_memory(CORE_ADDR memaddr, const bfd_byte *myaddr, ssize_t len)
Definition: corefile.c:394
#define TYPE_FIELD_LOC_KIND(thistype, n)
Definition: gdbtypes.h:1373
#define TYPE_DECLARED_CLASS(t)
Definition: gdbtypes.h:299
CORE_ADDR value_address(const struct value *value)
Definition: value.c:1529
Definition: defs.h:381
static int find_oload_champ_namespace_loop(struct value **, int, const char *, const char *, int, struct symbol ***, struct badness_vector **, int *, const int no_adl)
Definition: valops.c:2860
int get_array_bounds(struct type *type, LONGEST *low_bound, LONGEST *high_bound)
Definition: gdbtypes.c:1056
#define TYPE_CONST(t)
Definition: gdbtypes.h:310
int get_discrete_bounds(struct type *type, LONGEST *lowp, LONGEST *highp)
Definition: gdbtypes.c:977
static void do_search_struct_field(const char *name, struct value *arg1, LONGEST offset, struct type *type, int looking_for_baseclass, struct value **result_ptr, LONGEST *last_boffset, struct type *outermost_type)
Definition: valops.c:1807
#define TYPE_SELF_TYPE(thistype)
Definition: gdbtypes.h:1299
void error(const char *fmt,...)
Definition: errors.c:38
struct type * lookup_pointer_type(struct type *type)
Definition: gdbtypes.c:381
struct gdbarch * get_frame_arch(struct frame_info *this_frame)
Definition: frame.c:2691
#define TYPE_FN_FIELDLIST1(thistype, n)
Definition: gdbtypes.h:1414
void throw_error(enum errors error, const char *fmt,...)
long long LONGEST
Definition: common-types.h:52
struct target_ops * beneath
Definition: target.h:414
bool is_floating_value(struct value *val)
Definition: value.c:2942
void do_cleanups(struct cleanup *old_chain)
Definition: cleanups.c:174
void set_value_component_location(struct value *component, const struct value *whole)
Definition: value.c:1849
struct type * lookup_function_type(struct type *type)
Definition: gdbtypes.c:519
#define TYPE_SAFE_NAME(type)
Definition: gdbtypes.h:1483
void modify_field(struct type *type, gdb_byte *addr, LONGEST fieldval, LONGEST bitpos, LONGEST bitsize)
Definition: value.c:3403
struct type * value_rtti_indirect_type(struct value *v, int *full, LONGEST *top, int *using_enc)
Definition: valops.c:3595
static void value_find_oload_method_list(struct value **argp, const char *method, LONGEST offset, struct fn_field **fn_list, int *num_fns, VEC(xmethod_worker_ptr) **xm_worker_vec, struct type **basetype, LONGEST *boffset)
Definition: valops.c:2382
const struct lval_funcs * value_computed_funcs(const struct value *v)
Definition: value.c:1501