xref: /netbsd-src/external/gpl3/gdb.old/dist/gdb/ada-varobj.c (revision ccd9df534e375a4366c5b55f23782053c7a98d82)
1 /* varobj support for Ada.
2 
3    Copyright (C) 2012-2020 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 "ada-lang.h"
22 #include "varobj.h"
23 #include "language.h"
24 #include "valprint.h"
25 
26 /* Implementation principle used in this unit:
27 
28    For our purposes, the meat of the varobj object is made of two
29    elements: The varobj's (struct) value, and the varobj's (struct)
30    type.  In most situations, the varobj has a non-NULL value, and
31    the type becomes redundant, as it can be directly derived from
32    the value.  In the initial implementation of this unit, most
33    routines would only take a value, and return a value.
34 
35    But there are many situations where it is possible for a varobj
36    to have a NULL value.  For instance, if the varobj becomes out of
37    scope.  Or better yet, when the varobj is the child of another
38    NULL pointer varobj.  In that situation, we must rely on the type
39    instead of the value to create the child varobj.
40 
41    That's why most functions below work with a (value, type) pair.
42    The value may or may not be NULL.  But the type is always expected
43    to be set.  When the value is NULL, then we work with the type
44    alone, and keep the value NULL.  But when the value is not NULL,
45    then we work using the value, because it provides more information.
46    But we still always set the type as well, even if that type could
47    easily be derived from the value.  The reason behind this is that
48    it allows the code to use the type without having to worry about
49    it being set or not.  It makes the code clearer.  */
50 
51 static int ada_varobj_get_number_of_children (struct value *parent_value,
52 					      struct type *parent_type);
53 
54 /* A convenience function that decodes the VALUE_PTR/TYPE_PTR couple:
55    If there is a value (*VALUE_PTR not NULL), then perform the decoding
56    using it, and compute the associated type from the resulting value.
57    Otherwise, compute a static approximation of *TYPE_PTR, leaving
58    *VALUE_PTR unchanged.
59 
60    The results are written in place.  */
61 
62 static void
63 ada_varobj_decode_var (struct value **value_ptr, struct type **type_ptr)
64 {
65   if (*value_ptr)
66     *value_ptr = ada_get_decoded_value (*value_ptr);
67 
68   if (*value_ptr != nullptr)
69     *type_ptr = ada_check_typedef (value_type (*value_ptr));
70   else
71     *type_ptr = ada_get_decoded_type (*type_ptr);
72 }
73 
74 /* Return a string containing an image of the given scalar value.
75    VAL is the numeric value, while TYPE is the value's type.
76    This is useful for plain integers, of course, but even more
77    so for enumerated types.  */
78 
79 static std::string
80 ada_varobj_scalar_image (struct type *type, LONGEST val)
81 {
82   string_file buf;
83 
84   ada_print_scalar (type, val, &buf);
85   return std::move (buf.string ());
86 }
87 
88 /* Assuming that the (PARENT_VALUE, PARENT_TYPE) pair designates
89    a struct or union, compute the (CHILD_VALUE, CHILD_TYPE) couple
90    corresponding to the field number FIELDNO.  */
91 
92 static void
93 ada_varobj_struct_elt (struct value *parent_value,
94 		       struct type *parent_type,
95 		       int fieldno,
96 		       struct value **child_value,
97 		       struct type **child_type)
98 {
99   struct value *value = NULL;
100   struct type *type = NULL;
101 
102   if (parent_value)
103     {
104       value = value_field (parent_value, fieldno);
105       type = value_type (value);
106     }
107   else
108     type = parent_type->field (fieldno).type ();
109 
110   if (child_value)
111     *child_value = value;
112   if (child_type)
113     *child_type = type;
114 }
115 
116 /* Assuming that the (PARENT_VALUE, PARENT_TYPE) pair is a pointer or
117    reference, return a (CHILD_VALUE, CHILD_TYPE) couple corresponding
118    to the dereferenced value.  */
119 
120 static void
121 ada_varobj_ind (struct value *parent_value,
122 		struct type *parent_type,
123 		struct value **child_value,
124 		struct type **child_type)
125 {
126   struct value *value = NULL;
127   struct type *type = NULL;
128 
129   if (ada_is_array_descriptor_type (parent_type))
130     {
131       /* This can only happen when PARENT_VALUE is NULL.  Otherwise,
132 	 ada_get_decoded_value would have transformed our parent_type
133 	 into a simple array pointer type.  */
134       gdb_assert (parent_value == NULL);
135       gdb_assert (parent_type->code () == TYPE_CODE_TYPEDEF);
136 
137       /* Decode parent_type by the equivalent pointer to (decoded)
138 	 array.  */
139       while (parent_type->code () == TYPE_CODE_TYPEDEF)
140 	parent_type = TYPE_TARGET_TYPE (parent_type);
141       parent_type = ada_coerce_to_simple_array_type (parent_type);
142       parent_type = lookup_pointer_type (parent_type);
143     }
144 
145   /* If parent_value is a null pointer, then only perform static
146      dereferencing.  We cannot dereference null pointers.  */
147   if (parent_value && value_as_address (parent_value) == 0)
148     parent_value = NULL;
149 
150   if (parent_value)
151     {
152       value = ada_value_ind (parent_value);
153       type = value_type (value);
154     }
155   else
156     type = TYPE_TARGET_TYPE (parent_type);
157 
158   if (child_value)
159     *child_value = value;
160   if (child_type)
161     *child_type = type;
162 }
163 
164 /* Assuming that the (PARENT_VALUE, PARENT_TYPE) pair is a simple
165    array (TYPE_CODE_ARRAY), return the (CHILD_VALUE, CHILD_TYPE)
166    pair corresponding to the element at ELT_INDEX.  */
167 
168 static void
169 ada_varobj_simple_array_elt (struct value *parent_value,
170 			     struct type *parent_type,
171 			     int elt_index,
172 			     struct value **child_value,
173 			     struct type **child_type)
174 {
175   struct value *value = NULL;
176   struct type *type = NULL;
177 
178   if (parent_value)
179     {
180       struct value *index_value =
181 	value_from_longest (parent_type->index_type (), elt_index);
182 
183       value = ada_value_subscript (parent_value, 1, &index_value);
184       type = value_type (value);
185     }
186   else
187     type = TYPE_TARGET_TYPE (parent_type);
188 
189   if (child_value)
190     *child_value = value;
191   if (child_type)
192     *child_type = type;
193 }
194 
195 /* Given the decoded value and decoded type of a variable object,
196    adjust the value and type to those necessary for getting children
197    of the variable object.
198 
199    The replacement is performed in place.  */
200 
201 static void
202 ada_varobj_adjust_for_child_access (struct value **value,
203 				    struct type **type)
204 {
205    /* Pointers to struct/union types are special: Instead of having
206       one child (the struct), their children are the components of
207       the struct/union type.  We handle this situation by dereferencing
208       the (value, type) couple.  */
209   if ((*type)->code () == TYPE_CODE_PTR
210       && (TYPE_TARGET_TYPE (*type)->code () == TYPE_CODE_STRUCT
211           || TYPE_TARGET_TYPE (*type)->code () == TYPE_CODE_UNION)
212       && *value != nullptr
213       && value_as_address (*value) != 0
214       && !ada_is_array_descriptor_type (TYPE_TARGET_TYPE (*type))
215       && !ada_is_constrained_packed_array_type (TYPE_TARGET_TYPE (*type)))
216     ada_varobj_ind (*value, *type, value, type);
217 
218   /* If this is a tagged type, we need to transform it a bit in order
219      to be able to fetch its full view.  As always with tagged types,
220      we can only do that if we have a value.  */
221   if (*value != NULL && ada_is_tagged_type (*type, 1))
222     {
223       *value = ada_tag_value_at_base_address (*value);
224       *type = value_type (*value);
225     }
226 }
227 
228 /* Assuming that the (PARENT_VALUE, PARENT_TYPE) pair is an array
229    (any type of array, "simple" or not), return the number of children
230    that this array contains.  */
231 
232 static int
233 ada_varobj_get_array_number_of_children (struct value *parent_value,
234 					 struct type *parent_type)
235 {
236   LONGEST lo, hi;
237 
238   if (parent_value == NULL
239       && is_dynamic_type (parent_type->index_type ()))
240     {
241       /* This happens when listing the children of an object
242 	 which does not exist in memory (Eg: when requesting
243 	 the children of a null pointer, which is allowed by
244 	 varobj).  The array index type being dynamic, we cannot
245 	 determine how many elements this array has.  Just assume
246 	 it has none.  */
247       return 0;
248     }
249 
250   if (!get_array_bounds (parent_type, &lo, &hi))
251     {
252       /* Could not get the array bounds.  Pretend this is an empty array.  */
253       warning (_("unable to get bounds of array, assuming null array"));
254       return 0;
255     }
256 
257   /* Ada allows the upper bound to be less than the lower bound,
258      in order to specify empty arrays...  */
259   if (hi < lo)
260     return 0;
261 
262   return hi - lo + 1;
263 }
264 
265 /* Assuming that the (PARENT_VALUE, PARENT_TYPE) pair is a struct or
266    union, return the number of children this struct contains.  */
267 
268 static int
269 ada_varobj_get_struct_number_of_children (struct value *parent_value,
270 					  struct type *parent_type)
271 {
272   int n_children = 0;
273   int i;
274 
275   gdb_assert (parent_type->code () == TYPE_CODE_STRUCT
276 	      || parent_type->code () == TYPE_CODE_UNION);
277 
278   for (i = 0; i < parent_type->num_fields (); i++)
279     {
280       if (ada_is_ignored_field (parent_type, i))
281 	continue;
282 
283       if (ada_is_wrapper_field (parent_type, i))
284 	{
285 	  struct value *elt_value;
286 	  struct type *elt_type;
287 
288 	  ada_varobj_struct_elt (parent_value, parent_type, i,
289 				 &elt_value, &elt_type);
290 	  if (ada_is_tagged_type (elt_type, 0))
291 	    {
292 	      /* We must not use ada_varobj_get_number_of_children
293 		 to determine is element's number of children, because
294 		 this function first calls ada_varobj_decode_var,
295 		 which "fixes" the element.  For tagged types, this
296 		 includes reading the object's tag to determine its
297 		 real type, which happens to be the parent_type, and
298 		 leads to an infinite loop (because the element gets
299 		 fixed back into the parent).  */
300 	      n_children += ada_varobj_get_struct_number_of_children
301 		(elt_value, elt_type);
302 	    }
303 	  else
304 	    n_children += ada_varobj_get_number_of_children (elt_value, elt_type);
305 	}
306       else if (ada_is_variant_part (parent_type, i))
307 	{
308 	  /* In normal situations, the variant part of the record should
309 	     have been "fixed". Or, in other words, it should have been
310 	     replaced by the branch of the variant part that is relevant
311 	     for our value.  But there are still situations where this
312 	     can happen, however (Eg. when our parent is a NULL pointer).
313 	     We do not support showing this part of the record for now,
314 	     so just pretend this field does not exist.  */
315 	}
316       else
317 	n_children++;
318     }
319 
320   return n_children;
321 }
322 
323 /* Assuming that the (PARENT_VALUE, PARENT_TYPE) pair designates
324    a pointer, return the number of children this pointer has.  */
325 
326 static int
327 ada_varobj_get_ptr_number_of_children (struct value *parent_value,
328 				       struct type *parent_type)
329 {
330   struct type *child_type = TYPE_TARGET_TYPE (parent_type);
331 
332   /* Pointer to functions and to void do not have a child, since
333      you cannot print what they point to.  */
334   if (child_type->code () == TYPE_CODE_FUNC
335       || child_type->code () == TYPE_CODE_VOID)
336     return 0;
337 
338   /* Only show children for non-null pointers.  */
339   if (parent_value == nullptr || value_as_address (parent_value) == 0)
340     return 0;
341 
342   /* All other types have 1 child.  */
343   return 1;
344 }
345 
346 /* Return the number of children for the (PARENT_VALUE, PARENT_TYPE)
347    pair.  */
348 
349 static int
350 ada_varobj_get_number_of_children (struct value *parent_value,
351 				   struct type *parent_type)
352 {
353   ada_varobj_decode_var (&parent_value, &parent_type);
354   ada_varobj_adjust_for_child_access (&parent_value, &parent_type);
355 
356   /* A typedef to an array descriptor in fact represents a pointer
357      to an unconstrained array.  These types always have one child
358      (the unconstrained array).  */
359   if (ada_is_access_to_unconstrained_array (parent_type))
360     return 1;
361 
362   if (parent_type->code () == TYPE_CODE_ARRAY)
363     return ada_varobj_get_array_number_of_children (parent_value,
364 						    parent_type);
365 
366   if (parent_type->code () == TYPE_CODE_STRUCT
367       || parent_type->code () == TYPE_CODE_UNION)
368     return ada_varobj_get_struct_number_of_children (parent_value,
369 						     parent_type);
370 
371   if (parent_type->code () == TYPE_CODE_PTR)
372     return ada_varobj_get_ptr_number_of_children (parent_value,
373 						  parent_type);
374 
375   /* All other types have no child.  */
376   return 0;
377 }
378 
379 /* Describe the child of the (PARENT_VALUE, PARENT_TYPE) pair
380    whose index is CHILD_INDEX:
381 
382      - If CHILD_NAME is not NULL, then a copy of the child's name
383        is saved in *CHILD_NAME.  This copy must be deallocated
384        with xfree after use.
385 
386      - If CHILD_VALUE is not NULL, then save the child's value
387        in *CHILD_VALUE. Same thing for the child's type with
388        CHILD_TYPE if not NULL.
389 
390      - If CHILD_PATH_EXPR is not NULL, then compute the child's
391        path expression.  The resulting string must be deallocated
392        after use with xfree.
393 
394        Computing the child's path expression requires the PARENT_PATH_EXPR
395        to be non-NULL.  Otherwise, PARENT_PATH_EXPR may be null if
396        CHILD_PATH_EXPR is NULL.
397 
398   PARENT_NAME is the name of the parent, and should never be NULL.  */
399 
400 static void ada_varobj_describe_child (struct value *parent_value,
401 				       struct type *parent_type,
402 				       const char *parent_name,
403 				       const char *parent_path_expr,
404 				       int child_index,
405 				       std::string *child_name,
406 				       struct value **child_value,
407 				       struct type **child_type,
408 				       std::string *child_path_expr);
409 
410 /* Same as ada_varobj_describe_child, but limited to struct/union
411    objects.  */
412 
413 static void
414 ada_varobj_describe_struct_child (struct value *parent_value,
415 				  struct type *parent_type,
416 				  const char *parent_name,
417 				  const char *parent_path_expr,
418 				  int child_index,
419 				  std::string *child_name,
420 				  struct value **child_value,
421 				  struct type **child_type,
422 				  std::string *child_path_expr)
423 {
424   int fieldno;
425   int childno = 0;
426 
427   gdb_assert (parent_type->code () == TYPE_CODE_STRUCT
428 	      || parent_type->code () == TYPE_CODE_UNION);
429 
430   for (fieldno = 0; fieldno < parent_type->num_fields (); fieldno++)
431     {
432       if (ada_is_ignored_field (parent_type, fieldno))
433 	continue;
434 
435       if (ada_is_wrapper_field (parent_type, fieldno))
436 	{
437 	  struct value *elt_value;
438 	  struct type *elt_type;
439 	  int elt_n_children;
440 
441 	  ada_varobj_struct_elt (parent_value, parent_type, fieldno,
442 				 &elt_value, &elt_type);
443 	  if (ada_is_tagged_type (elt_type, 0))
444 	    {
445 	      /* Same as in ada_varobj_get_struct_number_of_children:
446 		 For tagged types, we must be careful to not call
447 		 ada_varobj_get_number_of_children, to prevent our
448 		 element from being fixed back into the parent.  */
449 	      elt_n_children = ada_varobj_get_struct_number_of_children
450 		(elt_value, elt_type);
451 	    }
452 	  else
453 	    elt_n_children =
454 	      ada_varobj_get_number_of_children (elt_value, elt_type);
455 
456 	  /* Is the child we're looking for one of the children
457 	     of this wrapper field?  */
458 	  if (child_index - childno < elt_n_children)
459 	    {
460 	      if (ada_is_tagged_type (elt_type, 0))
461 		{
462 		  /* Same as in ada_varobj_get_struct_number_of_children:
463 		     For tagged types, we must be careful to not call
464 		     ada_varobj_describe_child, to prevent our element
465 		     from being fixed back into the parent.  */
466 		  ada_varobj_describe_struct_child
467 		    (elt_value, elt_type, parent_name, parent_path_expr,
468 		     child_index - childno, child_name, child_value,
469 		     child_type, child_path_expr);
470 		}
471 	      else
472 		ada_varobj_describe_child (elt_value, elt_type,
473 					   parent_name, parent_path_expr,
474 					   child_index - childno,
475 					   child_name, child_value,
476 					   child_type, child_path_expr);
477 	      return;
478 	    }
479 
480 	  /* The child we're looking for is beyond this wrapper
481 	     field, so skip all its children.  */
482 	  childno += elt_n_children;
483 	  continue;
484 	}
485       else if (ada_is_variant_part (parent_type, fieldno))
486 	{
487 	  /* In normal situations, the variant part of the record should
488 	     have been "fixed". Or, in other words, it should have been
489 	     replaced by the branch of the variant part that is relevant
490 	     for our value.  But there are still situations where this
491 	     can happen, however (Eg. when our parent is a NULL pointer).
492 	     We do not support showing this part of the record for now,
493 	     so just pretend this field does not exist.  */
494 	  continue;
495 	}
496 
497       if (childno == child_index)
498 	{
499 	  if (child_name)
500 	    {
501 	      /* The name of the child is none other than the field's
502 		 name, except that we need to strip suffixes from it.
503 		 For instance, fields with alignment constraints will
504 		 have an __XVA suffix added to them.  */
505 	      const char *field_name = TYPE_FIELD_NAME (parent_type, fieldno);
506 	      int child_name_len = ada_name_prefix_len (field_name);
507 
508 	      *child_name = string_printf ("%.*s", child_name_len, field_name);
509 	    }
510 
511 	  if (child_value && parent_value)
512 	    ada_varobj_struct_elt (parent_value, parent_type, fieldno,
513 				   child_value, NULL);
514 
515 	  if (child_type)
516 	    ada_varobj_struct_elt (parent_value, parent_type, fieldno,
517 				   NULL, child_type);
518 
519 	  if (child_path_expr)
520 	    {
521 	      /* The name of the child is none other than the field's
522 		 name, except that we need to strip suffixes from it.
523 		 For instance, fields with alignment constraints will
524 		 have an __XVA suffix added to them.  */
525 	      const char *field_name = TYPE_FIELD_NAME (parent_type, fieldno);
526 	      int child_name_len = ada_name_prefix_len (field_name);
527 
528 	      *child_path_expr =
529 		string_printf ("(%s).%.*s", parent_path_expr,
530 			       child_name_len, field_name);
531 	    }
532 
533 	  return;
534 	}
535 
536       childno++;
537     }
538 
539   /* Something went wrong.  Either we miscounted the number of
540      children, or CHILD_INDEX was too high.  But we should never
541      reach here.  We don't have enough information to recover
542      nicely, so just raise an assertion failure.  */
543   gdb_assert_not_reached ("unexpected code path");
544 }
545 
546 /* Same as ada_varobj_describe_child, but limited to pointer objects.
547 
548    Note that CHILD_INDEX is unused in this situation, but still provided
549    for consistency of interface with other routines describing an object's
550    child.  */
551 
552 static void
553 ada_varobj_describe_ptr_child (struct value *parent_value,
554 			       struct type *parent_type,
555 			       const char *parent_name,
556 			       const char *parent_path_expr,
557 			       int child_index,
558 			       std::string *child_name,
559 			       struct value **child_value,
560 			       struct type **child_type,
561 			       std::string *child_path_expr)
562 {
563   if (child_name)
564     *child_name = string_printf ("%s.all", parent_name);
565 
566   if (child_value && parent_value)
567     ada_varobj_ind (parent_value, parent_type, child_value, NULL);
568 
569   if (child_type)
570     ada_varobj_ind (parent_value, parent_type, NULL, child_type);
571 
572   if (child_path_expr)
573     *child_path_expr = string_printf ("(%s).all", parent_path_expr);
574 }
575 
576 /* Same as ada_varobj_describe_child, limited to simple array objects
577    (TYPE_CODE_ARRAY only).
578 
579    Assumes that the (PARENT_VALUE, PARENT_TYPE) pair is properly decoded.
580    This is done by ada_varobj_describe_child before calling us.  */
581 
582 static void
583 ada_varobj_describe_simple_array_child (struct value *parent_value,
584 					struct type *parent_type,
585 					const char *parent_name,
586 					const char *parent_path_expr,
587 					int child_index,
588 					std::string *child_name,
589 					struct value **child_value,
590 					struct type **child_type,
591 					std::string *child_path_expr)
592 {
593   struct type *index_type;
594   int real_index;
595 
596   gdb_assert (parent_type->code () == TYPE_CODE_ARRAY);
597 
598   index_type = parent_type->index_type ();
599   real_index = child_index + ada_discrete_type_low_bound (index_type);
600 
601   if (child_name)
602     *child_name = ada_varobj_scalar_image (index_type, real_index);
603 
604   if (child_value && parent_value)
605     ada_varobj_simple_array_elt (parent_value, parent_type, real_index,
606 				 child_value, NULL);
607 
608   if (child_type)
609     ada_varobj_simple_array_elt (parent_value, parent_type, real_index,
610 				 NULL, child_type);
611 
612   if (child_path_expr)
613     {
614       std::string index_img = ada_varobj_scalar_image (index_type, real_index);
615 
616       /* Enumeration litterals by themselves are potentially ambiguous.
617 	 For instance, consider the following package spec:
618 
619 	    package Pck is
620 	       type Color is (Red, Green, Blue, White);
621 	       type Blood_Cells is (White, Red);
622 	    end Pck;
623 
624 	 In this case, the litteral "red" for instance, or even
625 	 the fully-qualified litteral "pck.red" cannot be resolved
626 	 by itself.  Type qualification is needed to determine which
627 	 enumeration litterals should be used.
628 
629 	 The following variable will be used to contain the name
630 	 of the array index type when such type qualification is
631 	 needed.  */
632       const char *index_type_name = NULL;
633       std::string decoded;
634 
635       /* If the index type is a range type, find the base type.  */
636       while (index_type->code () == TYPE_CODE_RANGE)
637 	index_type = TYPE_TARGET_TYPE (index_type);
638 
639       if (index_type->code () == TYPE_CODE_ENUM
640 	  || index_type->code () == TYPE_CODE_BOOL)
641 	{
642 	  index_type_name = ada_type_name (index_type);
643 	  if (index_type_name)
644 	    {
645 	      decoded = ada_decode (index_type_name);
646 	      index_type_name = decoded.c_str ();
647 	    }
648 	}
649 
650       if (index_type_name != NULL)
651 	*child_path_expr =
652 	  string_printf ("(%s)(%.*s'(%s))", parent_path_expr,
653 			 ada_name_prefix_len (index_type_name),
654 			 index_type_name, index_img.c_str ());
655       else
656 	*child_path_expr =
657 	  string_printf ("(%s)(%s)", parent_path_expr, index_img.c_str ());
658     }
659 }
660 
661 /* See description at declaration above.  */
662 
663 static void
664 ada_varobj_describe_child (struct value *parent_value,
665 			   struct type *parent_type,
666 			   const char *parent_name,
667 			   const char *parent_path_expr,
668 			   int child_index,
669 			   std::string *child_name,
670 			   struct value **child_value,
671 			   struct type **child_type,
672 			   std::string *child_path_expr)
673 {
674   /* We cannot compute the child's path expression without
675      the parent's path expression.  This is a pre-condition
676      for calling this function.  */
677   if (child_path_expr)
678     gdb_assert (parent_path_expr != NULL);
679 
680   ada_varobj_decode_var (&parent_value, &parent_type);
681   ada_varobj_adjust_for_child_access (&parent_value, &parent_type);
682 
683   if (child_name)
684     *child_name = std::string ();
685   if (child_value)
686     *child_value = NULL;
687   if (child_type)
688     *child_type = NULL;
689   if (child_path_expr)
690     *child_path_expr = std::string ();
691 
692   if (ada_is_access_to_unconstrained_array (parent_type))
693     {
694       ada_varobj_describe_ptr_child (parent_value, parent_type,
695 				     parent_name, parent_path_expr,
696 				     child_index, child_name,
697 				     child_value, child_type,
698 				     child_path_expr);
699       return;
700     }
701 
702   if (parent_type->code () == TYPE_CODE_ARRAY)
703     {
704       ada_varobj_describe_simple_array_child
705 	(parent_value, parent_type, parent_name, parent_path_expr,
706 	 child_index, child_name, child_value, child_type,
707 	 child_path_expr);
708       return;
709     }
710 
711   if (parent_type->code () == TYPE_CODE_STRUCT
712       || parent_type->code () == TYPE_CODE_UNION)
713     {
714       ada_varobj_describe_struct_child (parent_value, parent_type,
715 					parent_name, parent_path_expr,
716 					child_index, child_name,
717 					child_value, child_type,
718 					child_path_expr);
719       return;
720     }
721 
722   if (parent_type->code () == TYPE_CODE_PTR)
723     {
724       ada_varobj_describe_ptr_child (parent_value, parent_type,
725 				     parent_name, parent_path_expr,
726 				     child_index, child_name,
727 				     child_value, child_type,
728 				     child_path_expr);
729       return;
730     }
731 
732   /* It should never happen.  But rather than crash, report dummy names
733      and return a NULL child_value.  */
734   if (child_name)
735     *child_name = "???";
736 }
737 
738 /* Return the name of the child number CHILD_INDEX of the (PARENT_VALUE,
739    PARENT_TYPE) pair.  PARENT_NAME is the name of the PARENT.  */
740 
741 static std::string
742 ada_varobj_get_name_of_child (struct value *parent_value,
743 			      struct type *parent_type,
744 			      const char *parent_name, int child_index)
745 {
746   std::string child_name;
747 
748   ada_varobj_describe_child (parent_value, parent_type, parent_name,
749 			     NULL, child_index, &child_name, NULL,
750 			     NULL, NULL);
751   return child_name;
752 }
753 
754 /* Return the path expression of the child number CHILD_INDEX of
755    the (PARENT_VALUE, PARENT_TYPE) pair.  PARENT_NAME is the name
756    of the parent, and PARENT_PATH_EXPR is the parent's path expression.
757    Both must be non-NULL.  */
758 
759 static std::string
760 ada_varobj_get_path_expr_of_child (struct value *parent_value,
761 				   struct type *parent_type,
762 				   const char *parent_name,
763 				   const char *parent_path_expr,
764 				   int child_index)
765 {
766   std::string child_path_expr;
767 
768   ada_varobj_describe_child (parent_value, parent_type, parent_name,
769 			     parent_path_expr, child_index, NULL,
770 			     NULL, NULL, &child_path_expr);
771 
772   return child_path_expr;
773 }
774 
775 /* Return the value of child number CHILD_INDEX of the (PARENT_VALUE,
776    PARENT_TYPE) pair.  PARENT_NAME is the name of the parent.  */
777 
778 static struct value *
779 ada_varobj_get_value_of_child (struct value *parent_value,
780 			       struct type *parent_type,
781 			       const char *parent_name, int child_index)
782 {
783   struct value *child_value;
784 
785   ada_varobj_describe_child (parent_value, parent_type, parent_name,
786 			     NULL, child_index, NULL, &child_value,
787 			     NULL, NULL);
788 
789   return child_value;
790 }
791 
792 /* Return the type of child number CHILD_INDEX of the (PARENT_VALUE,
793    PARENT_TYPE) pair.  */
794 
795 static struct type *
796 ada_varobj_get_type_of_child (struct value *parent_value,
797 			      struct type *parent_type,
798 			      int child_index)
799 {
800   struct type *child_type;
801 
802   ada_varobj_describe_child (parent_value, parent_type, NULL, NULL,
803 			     child_index, NULL, NULL, &child_type, NULL);
804 
805   return child_type;
806 }
807 
808 /* Return a string that contains the image of the given VALUE, using
809    the print options OPTS as the options for formatting the result.
810 
811    The resulting string must be deallocated after use with xfree.  */
812 
813 static std::string
814 ada_varobj_get_value_image (struct value *value,
815 			    struct value_print_options *opts)
816 {
817   string_file buffer;
818 
819   common_val_print (value, &buffer, 0, opts, current_language);
820   return std::move (buffer.string ());
821 }
822 
823 /* Assuming that the (VALUE, TYPE) pair designates an array varobj,
824    return a string that is suitable for use in the "value" field of
825    the varobj output.  Most of the time, this is the number of elements
826    in the array inside square brackets, but there are situations where
827    it's useful to add more info.
828 
829    OPTS are the print options used when formatting the result.
830 
831    The result should be deallocated after use using xfree.  */
832 
833 static std::string
834 ada_varobj_get_value_of_array_variable (struct value *value,
835 					struct type *type,
836 					struct value_print_options *opts)
837 {
838   const int numchild = ada_varobj_get_array_number_of_children (value, type);
839 
840   /* If we have a string, provide its contents in the "value" field.
841      Otherwise, the only other way to inspect the contents of the string
842      is by looking at the value of each element, as in any other array,
843      which is not very convenient...  */
844   if (value
845       && ada_is_string_type (type)
846       && (opts->format == 0 || opts->format == 's'))
847     {
848       std::string str = ada_varobj_get_value_image (value, opts);
849       return string_printf ("[%d] %s", numchild, str.c_str ());
850     }
851   else
852     return string_printf ("[%d]", numchild);
853 }
854 
855 /* Return a string representation of the (VALUE, TYPE) pair, using
856    the given print options OPTS as our formatting options.  */
857 
858 static std::string
859 ada_varobj_get_value_of_variable (struct value *value,
860 				  struct type *type,
861 				  struct value_print_options *opts)
862 {
863   ada_varobj_decode_var (&value, &type);
864 
865   switch (type->code ())
866     {
867     case TYPE_CODE_STRUCT:
868     case TYPE_CODE_UNION:
869       return "{...}";
870     case TYPE_CODE_ARRAY:
871       return ada_varobj_get_value_of_array_variable (value, type, opts);
872     default:
873       if (!value)
874 	return "";
875       else
876 	return ada_varobj_get_value_image (value, opts);
877     }
878 }
879 
880 /* Ada specific callbacks for VAROBJs.  */
881 
882 static int
883 ada_number_of_children (const struct varobj *var)
884 {
885   return ada_varobj_get_number_of_children (var->value.get (), var->type);
886 }
887 
888 static std::string
889 ada_name_of_variable (const struct varobj *parent)
890 {
891   return c_varobj_ops.name_of_variable (parent);
892 }
893 
894 static std::string
895 ada_name_of_child (const struct varobj *parent, int index)
896 {
897   return ada_varobj_get_name_of_child (parent->value.get (), parent->type,
898 				       parent->name.c_str (), index);
899 }
900 
901 static std::string
902 ada_path_expr_of_child (const struct varobj *child)
903 {
904   const struct varobj *parent = child->parent;
905   const char *parent_path_expr = varobj_get_path_expr (parent);
906 
907   return ada_varobj_get_path_expr_of_child (parent->value.get (),
908 					    parent->type,
909 					    parent->name.c_str (),
910 					    parent_path_expr,
911 					    child->index);
912 }
913 
914 static struct value *
915 ada_value_of_child (const struct varobj *parent, int index)
916 {
917   return ada_varobj_get_value_of_child (parent->value.get (), parent->type,
918 					parent->name.c_str (), index);
919 }
920 
921 static struct type *
922 ada_type_of_child (const struct varobj *parent, int index)
923 {
924   return ada_varobj_get_type_of_child (parent->value.get (), parent->type,
925 				       index);
926 }
927 
928 static std::string
929 ada_value_of_variable (const struct varobj *var,
930 		       enum varobj_display_formats format)
931 {
932   struct value_print_options opts;
933 
934   varobj_formatted_print_options (&opts, format);
935 
936   return ada_varobj_get_value_of_variable (var->value.get (), var->type,
937 					   &opts);
938 }
939 
940 /* Implement the "value_is_changeable_p" routine for Ada.  */
941 
942 static bool
943 ada_value_is_changeable_p (const struct varobj *var)
944 {
945   struct type *type = (var->value != nullptr
946 		       ? value_type (var->value.get ()) : var->type);
947 
948   if (type->code () == TYPE_CODE_REF)
949     type = TYPE_TARGET_TYPE (type);
950 
951   if (ada_is_access_to_unconstrained_array (type))
952     {
953       /* This is in reality a pointer to an unconstrained array.
954 	 its value is changeable.  */
955       return true;
956     }
957 
958   if (ada_is_string_type (type))
959     {
960       /* We display the contents of the string in the array's
961 	 "value" field.  The contents can change, so consider
962 	 that the array is changeable.  */
963       return true;
964     }
965 
966   return varobj_default_value_is_changeable_p (var);
967 }
968 
969 /* Implement the "value_has_mutated" routine for Ada.  */
970 
971 static bool
972 ada_value_has_mutated (const struct varobj *var, struct value *new_val,
973 		       struct type *new_type)
974 {
975   int from = -1;
976   int to = -1;
977 
978   /* If the number of fields have changed, then for sure the type
979      has mutated.  */
980   if (ada_varobj_get_number_of_children (new_val, new_type)
981       != var->num_children)
982     return true;
983 
984   /* If the number of fields have remained the same, then we need
985      to check the name of each field.  If they remain the same,
986      then chances are the type hasn't mutated.  This is technically
987      an incomplete test, as the child's type might have changed
988      despite the fact that the name remains the same.  But we'll
989      handle this situation by saying that the child has mutated,
990      not this value.
991 
992      If only part (or none!) of the children have been fetched,
993      then only check the ones we fetched.  It does not matter
994      to the frontend whether a child that it has not fetched yet
995      has mutated or not. So just assume it hasn't.  */
996 
997   varobj_restrict_range (var->children, &from, &to);
998   for (int i = from; i < to; i++)
999     if (ada_varobj_get_name_of_child (new_val, new_type,
1000 				      var->name.c_str (), i)
1001 	!= var->children[i]->name)
1002       return true;
1003 
1004   return false;
1005 }
1006 
1007 /* varobj operations for ada.  */
1008 
1009 const struct lang_varobj_ops ada_varobj_ops =
1010 {
1011   ada_number_of_children,
1012   ada_name_of_variable,
1013   ada_name_of_child,
1014   ada_path_expr_of_child,
1015   ada_value_of_child,
1016   ada_type_of_child,
1017   ada_value_of_variable,
1018   ada_value_is_changeable_p,
1019   ada_value_has_mutated,
1020   varobj_default_is_path_expr_parent
1021 };
1022